DeviaVir / zenbot

” för att följa vägen, titta på mästaren, följ mästaren, gå med mästaren, se igenom mästaren, bli mästaren.”- Zen ordspråk

nytt! Chatta med andra Zenbot-användare

Zenbot har en Discord-chatt igen! Du kan komma in via denna inbjudningslänk.

beskrivning

Zenbot är en kommandorad cryptocurrency trading bot med Node.js och MongoDB. Den har:

  • helautomatiserad teknisk analysbaserad handelsmetod
  • Fullt stöd för GDAX och Poloniex, arbetet med ytterligare utbytesstöd pågår.
  • Plugin arkitektur för att genomföra utbytesstöd, eller skriva nya strategier
  • Simulator för Backtesting strategier mot historiska data
  • ”papper” handelsläge, fungerar på en simulerad balans medan du tittar på live – marknaden
  • konfigurerbara säljstopp, köpstopp och (efterföljande) vinststopp
  • Flexibel samplingsperiod och handelsfrekvens-medelvärden 1-2-handel/dag med 1H-period, 10/dag med 15m-period

varning

  • zenbot är inte en säker vinstmaskin. Använd det på egen RISK.
  • Crypto-currency är fortfarande ett experiment, och därför är det Zenbot. Menande, båda kan misslyckas när som helst.
  • att köra en bot och handel i allmänhet kräver noggrann studie av riskerna och parametrarna.
  • ofta kommer standardhandelsparametrarna att underprestera jämfört med en buy-hold-strategi, så kör några simuleringar och hitta de optimala parametrarna för ditt valda utbyte/par innan du går ”all-in”.

Snabbstart

1. Krav: Linux eller OSX eller Docker, nod.js och MongoDB.

kör i din konsol,

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

eller, utan git,

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

Skapa din konfigurationsfil genom att kopiera conf-sample.js till conf.js:

cp conf-sample.js conf.js
  • visa och redigera conf.js.
  • Det är möjligt att använda zenbot i ”paper trading” – läge utan att göra några ändringar.
  • Du måste lägga till dina exchange API-nycklar för att möjliggöra verklig handel.
  • API-nycklar behöver inte insättnings – / uttagsbehörigheter.

om du använder Docker, Hoppa till avsnittet ”Docker” nedan.

installera beroenden:

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

Docker

för att köra Zenbot under Docker, installera Docker, Docker Compose, Docker Machine (om det behövs) kan du följa instruktionerna på https://docs.docker.com/compose/install/

Efter installationen (steg 2 ovan),

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

Vocab: väljare

en ”väljare” är en kort identifierare som talar om zenbot som utbyte och valutapar att agera på. Använd formuläret {exchange_slug}.{asset}-{currency}. En komplett lista över väljare dina Zenbot installera stöd kan hittas med:

3. (valfritt) kör simuleringar för din valda väljare

för att fylla i data (förutsatt att ditt valda utbyte stöder det), använd:

zenbot backfill <selector> --days <days>

När du har fyllt i igen kan du köra en simulering:

zenbot sim <selector> 

För en lista med alternativ för sim kommando, använd:

zenbot sim --help

För ytterligare alternativ relaterade till strategin, använd:

zenbot list-strategies
  • som standard börjar SIM-kortet med 1000 valutaenheter. Åsidosätt med --currency_capital och --asset_capital.
  • öppnasim_result.html I din webbläsare för att se en ljusstake-graf med handel.

skärmdump och exempelresultat

Zenbot matar ut en HTML-graf för varje simuleringsresultat. I skärmdumpen nedan representerar de rosa pilarna botens köp (uppåtpil) och försäljning (nedåtpil) när den itererade historiska data för GDAX-börsens 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)

Zenbot började med $1,000 USD och slutade med $2,954.50 efter 90 dagar, vilket gör 195% ROI! Trots ett köp / håll strategi återvänder en respektabel 83.44%, Zenbot har stor potential för att slå köp / innehavare.

4. Kör zenbot

följande kommando startar botten, och om du inte har rört c.default_selector I conf.js, kommer att handla standard BTC/USD-paret på GDAX.

zenbot trade 

använd flaggan--paper för att endast utföra simulerade affärer medan du tittar på marknaden.

Så här kör du en annan väljare (exempel: ETH-BTC på Poloniex):

./zenbot trade poloniex.eth-btc

för en fullständig lista med alternativ för kommandottrade, använd:

och även:

läser konsolutgången

från vänster till höger:

  • tidsstämpel i lokal tid (grå, blå när du visar ”live” statistik)
  • tillgångspris i valuta (gul)
  • procent förändring av pris sedan förra perioden (röd/grön)
  • volym i tillgången sedan förra perioden (grå)
  • RSI ANSI graph (röd/grön)
  • trend_ema_rate (röd/grön grön, förklaras nedan)
  • aktuell signal eller åtgärd, inklusive buysellbuyingsellingboughtsold och last_trade_worth (procent förändring i trendriktningen sedan förra köp/sälj)
  • kontosaldo (tillgång)
  • kontosaldo (valuta)
  • vinst eller förlust procent (kan återställas med --reset_profit)
  • vinst eller förlust vs köp/håll strategi

om standardstrategin

  • standardstrategin kallas trend_ema och finns på ./extensions/trend_ema.
  • använder som standard en 1H-period, men du kan åsidosätta detta genom att lägga till t.ex. --period=15m till sim eller trade kommandon.
  • beräknar 34-periodens EMA för det aktuella priset och beräknar procentförändringen från den senaste periodens EMA för att fåtrend_ema_rate
  • ansertrend_ema_rate >= 0 en uppåtgående trend ochtrend_ema_rate < 0 en nedåtgående trend
  • filtrerar bort låga värden (whipsaws) medneutral_rate, som när den är inställd påauto, använder standardavvikelsen förtrend_ema_rate som ett variabelt brusfilter.
  • köper i början av uppåtgående trend, säljer i början av nedåtgående trend
  • Om oversold_rsi är inställd, försöker köpa när RSI sjunker under det värdet och börjar sedan återhämta sig (en motsvarighet till --profit_stop_enable_pct, som säljer när en procent av vinsten uppnås och sedan sjunker)
  • boten kommer alltid att försök att undvika handelsavgifter, genom att använda post-only order och därmed vara en marknad ”maker” i stället för en ”taker”. Vissa utbyten kommer dock inte att erbjuda tillverkarrabatter.

alternativ tweaking tips

  • handel frekvens justeras med en kombination av--periodoch--trend_ema. Om du till exempel vill ha mer frekvent handel, försök --period=15m eller --trend_ema=25 eller båda. Om du får för många ping-pong-affärer eller förluster från avgifter, försök öka period eller trend_ema.
  • ibland är det frestande att berätta för bothandeln mycket ofta. Försök att motstå denna uppmaning och gå för kvalitet över kvantitet, eftersom varje handel kommer med en anständig mängd glidning och whipsaw risk.
  • på en tjurmarknad kan --sell_rate=-0.01 och --max_sell_duration=8 ge priset en chans att återhämta sig innan du säljer. Om det plötsligt dyker i pris antas det att det kommer att återhämta sig och försäljningen är försenad. Kompensera för risken genom att använda --sell_stop_pct=5.
  • på en tjurmarknad med vanliga prisdyk och återhämtningar kommer --oversold_rsi=25 att försöka köpa när priset dyker.
  • på en marknad med förutsägbara prisökningar och korrigeringar kommer --profit_stop_enable_pct=10 att försöka sälja när det sista köpet träffar 10% vinst och sedan sjunker till 9%.
  • från och med v4.0. 2 är --neutral_rate=auto på som standard, vilket visade sig i simuleringar vara effektivt för att förhindra svaga (whipsaw) signaler. Ibland fungerar dock --neutral_rate=0 bättre för låg volatilitet, till exempel BTC-USD vid 1h.

manuella handelsverktyg

Zenbot ’ s order execution engine kan också användas för manuell handel. Fördelarna inkluderar:

  • undviker marknadsorderavgifter genom att använda en kortfristig gränsorder
  • kan automatiskt bestämma orderstorlek från kontosaldo
  • justerar order varje 30-tal (om det behövs) för att säkerställa snabb körning
  • om en order är delvis fylld, försöker ombeställa med återstående storlek

kommandot att köpa är:

zenbot buy <selector> 

till exempel, för att använda ditt återstående USD-saldo i GDAX för att köpa Bitcoin:

zenbot buy gdax.BTC-USD

eller för att sälja 10% av din BTC,

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

uppdateringslogg

  • v4.0.3 (Senast)
    • fix för docker mongo host error
    • länk för ny Discord-chatt!
    • fix polo krasch på getOrder konstigt resultat
    • fix oversold_rsi trigger medan preroll
    • fix polo ” inte tillräckligt…”fel
    • snygga färger för prisrapport
    • visa Produkt-id i rapporten
    • fix poloniex återfyllning partier för stor, Mongo timeouts
    • fix cursorTo() krasch på vissa nod installationer
    • memDump för felsökning orderfel
    • fix kolumnavstånd på lägesrapport
  • v4.0.2
    • mindre översyn till trend_ema strat-lagt whipsaw filtrering via std. avvikelse (--neutral_rate=auto)
    • trim preroll av sim resultat graf
  • v4.0.1
    • tillsatt .dockerignore (tack @sulphur)
    • fix kraschar på mongo timeout under återfyllning
    • fix luckor i poloniex återfyllning
    • standard återfyllning dagar 90 -> 14

TODO

  • granska PR för Bitfinex
  • mer Exchange support
  • webbgränssnitt med grafer och loggar
  • ”Reaper” för att automatiskt trimma handelssamling till en viss dagslängd
  • ”lite mode” för näringsidkare, ett alternativ att köra utan MongoDB

donera

ps, vissa har bett om hur man donerar till zenbot development. Jag accepterar donationer på min Bitcoin adress Här:

carlos8f s BTC

187rmNSkSvehgcKpBunre6a5wA5hQQop6W

Tack!

licens: MIT

  • upphovsrätt (C) 2017 Carlos Rodriguez
  • upphovsrätt (C) 2017 Terra Eclipse, Inc. (http://www.terraeclipse.com/)

tillstånd beviljas härmed kostnadsfritt till varje person som erhåller en kopia av denna programvara och tillhörande dokumentationsfiler (”programvaran”), för att hantera programvaran utan begränsning, inklusive utan begränsning rätten att använda, kopiera, modifiera, slå samman, publicera, distribuera, underlicensiera och/eller sälja kopior av Programvaran, och att tillåta personer till vilka programvaran är tillhandahållen att göra det, på följande villkor:

ovanstående upphovsrättsmeddelande och detta tillståndsmeddelande ska ingå i alla kopior eller väsentliga delar av programvaran.

programvaran tillhandahålls ”i befintligt skick”, utan garanti av något slag, uttryckligt eller underförstått,inklusive men inte begränsat till garantier för säljbarhet, lämplighet för ett visst ändamål och icke-intrång. UNDER INGA OMSTÄNDIGHETER SKA UPPHOVSMÄNNEN ELLER UPPHOVSRÄTTSINNEHAVARNA VARA ANSVARIGA FÖR ANSPRÅK, SKADOR ELLER ANNAN TILLFÖRLITLIGHET, VARE SIG I EN HANDLING AV KONTRAKT, SKADA ELLER PÅ ANNAT SÄTT, SOM HÄRRÖR FRÅN,UR ELLER I SAMBAND MED PROGRAMVARAN ELLER ANVÄNDNINGEN ELLER ANDRA AFFÄRER I PROGRAMVARAN.

Lämna ett svar

Din e-postadress kommer inte publiceras.