DeviaVir / senbot

“for at følge stien, se til mesteren, følg mesteren, gå med mesteren, se gennem mesteren, blive mesteren.”- Et ordsprog

nyt! Chat med andre Sobot brugere

Sobot har en Discord chat igen! Du kan komme ind via dette invitationslink.

beskrivelse

Senbot er en kommandolinje cryptocurrency trading bot ved hjælp af Node.JS og MongoDB. Den indeholder:

  • fuldautomatisk teknisk-analysebaseret handelsmetode
  • Fuld understøttelse af GD og Poloniek, arbejdet med yderligere udvekslingsstøtte er i gang.
  • Plugin – arkitektur til implementering af udvekslingssupport eller skrivning af nye strategier
  • Simulator til Backtesting-strategier mod Historiske data
  • “Paper” – handelstilstand fungerer på en simuleret balance, mens du ser live-markedet
  • konfigurerbare salgsstop, køb stop og (efterfølgende) resultatstop
  • fleksibel prøveudtagningsperiode og handelsfrekvens-gennemsnit 1-2 handler/dag med 1 time periode, 10/dag med 15 m periode

ansvarsfraskrivelse

  • senbot er ikke en sikker brand profit maskine. Brug det på egen risiko.
  • Crypto-valuta er stadig et eksperiment, og derfor er det også Senbot. Betydning, begge kan mislykkes når som helst.
  • at køre en bot og handel generelt kræver omhyggelig undersøgelse af de involverede risici og parametre.
  • ofte vil standardhandelsparametrene underprestere vs. en buy-hold-strategi, så kør nogle simuleringer og find de optimale parametre for din valgte udveksling/par, før du går “all-in”.

Hurtig start

1. Krav: links eller Osker eller Docker, Node.JS og MongoDB.

Kør i din konsol,

git clone https://github.com/carlos8f/zenbot.git

eller uden git

wget https://github.com/carlos8f/zenbot/archive/master.tar.gztar -xf zenbot-master.tar.gzmv zenbot-master zenbot

Opret din konfigurationsfil ved at kopiereconf-sample.js tilconf.js:

cp conf-sample.js conf.js
  • vis og redigerconf.js.
  • det er muligt at bruge senbot i “paper trading” – tilstand uden at foretage ændringer.
  • du skal dog tilføje dine udvekslings API-nøgler for at aktivere reel handel.
  • API nøgler behøver ikke depositum / tilbagekalde tilladelser.

Hvis du bruger Docker, skal du springe til afsnittet “Docker” nedenfor.

Installer afhængigheder:

cd zenbotnpm install# optional, installs the `zenbot.sh` binary in /usr/local/bin:npm link

Docker

for at køre Docker under Docker, installer Docker, Docker Compose, Docker Machine (om nødvendigt) kan du følge instruktionerne påhttps://docs.docker.com/compose/install/

efter installation (trin 2 ovenfor),

cd zenbotdocker-compose builddocker-compose up (-d if you don't want to see the log)

vocab: selectors

en “Selector” er en kort identifikator, der fortæller Senbot, hvilken udveksling og valutapar at handle på. Brug formularen {exchange_slug}.{asset}-{currency}. Du kan finde en komplet liste over selektorer med:

3. (valgfrit) Kør simuleringer for din valgte vælger

for at udfylde data (forudsat at din valgte udveksling understøtter det) skal du bruge:

zenbot backfill <selector> --days <days>

Når du har udfyldt, kan du køre en simulering:

zenbot sim <selector> 

for en liste over muligheder for sim kommando, brug:

zenbot sim --help

for yderligere muligheder relateret til strategien, brug:

zenbot list-strategies
  • som standard starter SIM ‘ en med 1000 enheder af valuta. Tilsidesæt med --currency_capital og --asset_capital.
  • Åbn sim_result.html i din bro.ser for at se en lysestage graf med handler.

skærmbillede og eksempelresultat

Senbot udsender en HTML-graf for hvert simuleringsresultat. I skærmbilledet nedenfor repræsenterer de lyserøde pile botkøb (pil op) og salg (pil ned), da det gentog de Historiske data for BTC/USD-produkt.

end balance 2954.50 (195.45%)buy hold 1834.44 (83.44%)vs. buy hold 61.06%110 trades over 91 days (avg 1.21 trades/day)

Senbot startede med $1.000 USD og sluttede med $2.954, 50 efter 90 dage, hvilket gør 195% ROI! På trods af en buy/hold strategi returnere en respektabel 83.44%, har Senbot et betydeligt potentiale for at slå køb/indehavere.

4. Følgende kommando starter bot, og hvis du ikke har rørt c.default_selector i conf.js, vil du handle standard BTC/USD-paret på GDAKS.

zenbot trade 

brug--paper flag for kun at udføre simulerede handler, mens du ser markedet.

Sådan kører du en anden vælger (eksempel: ETH-BTC på Poloniek):

./zenbot trade poloniex.eth-btc

for en komplet liste over muligheder for trade :

og også:

læsning af konsoludgangen

fra venstre mod højre:

  • tidsstempel i lokal tid (grå, blå, når der vises “live” statistik)
  • aktivpris i valuta (gul)
  • procent ændring af pris siden sidste periode (rød/grøn)
  • volumen i aktiv siden sidste periode (grå)
  • RSI ANSI graf (rød/grøn)
  • trend_ema_rate (rød)/grøn, forklaret nedenfor)
  • aktuelt signal eller handling, inklusive buysellbuyingsellingboughtsold og last_trade_worth (procent ændring i trendretningen siden sidste køb/salg)
  • kontosaldo (aktiv)
  • kontosaldo (valuta)
  • Resultatprocent (kan nulstilles med --reset_profit)
  • gevinst eller tab vs. køb/hold-strategi

om standardstrategien

  • standardstrategien kaldes
  • trend_emaog bor på ./extensions/trend_ema.

  • standard til at bruge en 1h periode, men du kan tilsidesætte dette ved at tilføje f.eks. --period=15m til sim eller trade kommandoer.
  • beregner 34-perioden EMA for den aktuelle pris og beregner procentændringen fra den sidste periodes EMA for at fåtrend_ema_rate
  • overvejertrend_ema_rate >= 0 en opadgående tendens ogtrend_ema_rate < 0 en nedadgående tendens
  • filtrerer lave værdier (piskesave) ud afneutral_rate, som når den er indstillet tilauto, bruger standardafvigelsen fortrend_ema_rate som et variabelt støjfilter.
  • køber i begyndelsen af opadgående tendens, sælger i begyndelsen af nedadgående tendens
  • hvis oversold_rsi er indstillet, forsøger at købe, når RSI dips under denne værdi, og derefter begynder at komme sig (en modstykke til --profit_stop_enable_pct, som sælger, når en procent af overskuddet er nået, og derefter dips)
  • boten vil altid prøv at undgå handelsgebyrer ved at bruge post-only ordrer og dermed være et marked “maker” i stedet for en “taker”. Nogle udvekslinger vil dog ikke tilbyde maker rabatter.

mulighed finjusteringstips

  • handelsfrekvens justeres med en kombination af--period og--trend_ema. Vil have hyppigere handel, skal du prøve --period=15meller --trend_ema=25 eller begge dele. Hvis du får for mange ping-pong-handler eller tab fra gebyrer, kan du prøve at øge period eller trend_ema.
  • nogle gange er det fristende at fortælle bot handel meget ofte. Prøv at modstå denne trang, og gå efter kvalitet frem for kvantitet, da hver handel kommer med en anstændig mængde glidning og piskesavrisiko.
  • på et tyremarked --sell_rate=-0.01 og --max_sell_duration=8 kan give prisen en chance for at komme sig, før den sælges. Hvis der er et pludseligt dyk i pris, antages det, at det vil komme sig og sælge er forsinket. Kompensere for risikoen ved at bruge --sell_stop_pct=5.
  • på et tyremarked med regelmæssige prisdyk og inddrivelser vil --oversold_rsi=25 forsøge at købe, når prisen dykker.
  • på et marked med forudsigelige prisstigninger og korrektioner vil --profit_stop_enable_pct=10 forsøge at sælge, når det sidste køb rammer 10% fortjeneste og derefter falder til 9%.
  • fra v4.0.2,--neutral_rate=auto er som standard aktiveret, hvilket i simuleringer viste sig at være effektivt til at forhindre svage (piskesav) signaler. Men nogle gange --neutral_rate=0 fungerer bedre for lav volatilitet, såsom BTC-USD ved 1h.

manuelle handelsværktøjer

Senbots ordreudførelsesmotor kan også bruges til manuelle handler. Fordelene inkluderer:

  • undgår gebyrer for markedsordrer ved hjælp af en kortvarig limit-ordre
  • kan automatisk bestemme ordrestørrelse fra kontosaldo
  • justerer ordren hver 30 ‘ erne (hvis nødvendigt) for at sikre hurtig udførelse
  • hvis en ordre delvist er udfyldt, forsøg på at genbestille med resterende størrelse

kommandoen til at købe er:

zenbot buy <selector> 

for eksempel at bruge din resterende USD-saldo i GDAK til at købe Bitcoin:

zenbot buy gdax.BTC-USD

eller at sælge 10% af din BTC,

zenbot sell gdax.BTC-USD --pct=10

opdateringslog

  • v4.0.3 (seneste)
    • rettelse til docker mongo host fejl
    • link til ny Discord chat!
    • ret polo crash på getOrder underligt resultat
    • ret oversold_rsi trigger, mens du er i preroll
    • ret polo “ikke nok…”fejl
    • fancy farver til prisrapport
    • Vis Produkt-id i rapport
    • løs polonieksfyldningsbatcher for store, mongo timeouts
    • ret cursorTo() crash på nogle knudeinstallationer
    • memDump til fejlfinding af ordrefejl
    • ret kolonneafstand på statusrapport
  • v4.0.2
    • mindre eftersyn til trend_ema strat – tilføjet piskesavfiltrering via std. afvigelse (--neutral_rate=auto)
    • trim preroll af sim resultat graf
  • v4.0.1
    • tilføjet .dockerignore (tak @sulphur)
    • ret nedbrud på mongo timeout under backfill
    • ret huller i polonieksfyld
    • standard backfill dage 90 -> 14

TODO

  • gennemgå PR for”Reaper” til automatisk at trimme handler indsamling til en bestemt dag længde
  • “lite mode” for erhvervsdrivende, en mulighed for at køre uden MongoDB

doner

P. S., Nogle har bedt om, hvordan at donere til udvikling. Jeg accepterer donationer på min Bitcoin adresse her:

carlos8f ‘s BTC

187rmNSkSvehgcKpBunre6a5wA5hQQop6W

Tak!

Licens: MIT

  • ophavsret (C) 2017 Carlos Rodrigues
  • ophavsret (C) 2017 Terra Eclipse, Inc. (http://www.terraeclipse.com/)

tilladelse gives hermed gratis til enhver person, der får en kopi af dette program og tilhørende dokumentationsfiler (“programmet”), til at handle i programmet uden begrænsning, herunder uden begrænsning rettighederne til at bruge, kopiere, ændre, flette, offentliggøre, distribuere, underlicensere og/eller sælge kopier af programmet og til at tillade personer, som programmet er leveret til, at gøre det, med forbehold af følgende betingelser:

ovenstående meddelelse om ophavsret og denne meddelelse om tilladelse skal medtages i alle kopier eller væsentlige dele af programmet.

programmet leveres “som det er”, uden garanti af nogen art, udtrykkeligt eller besvaret, herunder men ikke begrænset til garantier for salgbarhed,egnethed til et bestemt formål og ikke-krænkelse. OPHAVSMÆNDENE ELLER INDEHAVERNE AF OPHAVSRETTEN KAN UNDER INGEN OMSTÆNDIGHEDER HOLDES ANSVARLIGE FOR KRAV, SKADER ELLER ANDRE FORPLIGTELSER, HVAD ENTEN DET ER I FORBINDELSE MED EN KONTRAKT, SKADEVOLDENDE HANDLING ELLER PÅ ANDEN MÅDE, DER OPSTÅR SOM FØLGE AF,UD AF ELLER I FORBINDELSE MED PROGRAMMET ELLER BRUGEN ELLER ANDRE FORHOLD I PROGRAMMET.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.