DeviaVir/zenbot

„Um dem Pfad zu folgen, schau zum Meister, folge dem Meister, gehe mit dem Meister, sieh durch den Meister, werde der Meister.“- Zen-Sprichwort

Neu! Chatte mit anderen Zenbot-Benutzern

Zenbot hat wieder einen Zwietracht-Chat! Sie können über diesen Einladungslink einsteigen.

Beschreibung

Zenbot ist ein Befehlszeilenhandelsbot für Kryptowährungen, der Node verwendet.js und MongoDB. Es verfügt über:

  • Vollautomatischer, auf technischer Analyse basierender Handelsansatz
  • Volle Unterstützung für GDAX und Poloniex, die Arbeit an weiterer Börsenunterstützung ist im Gange.
  • Plugin-Architektur zur Implementierung von Börsenunterstützung oder zum Schreiben neuer Strategien
  • Simulator für Backtesting-Strategien gegen historische Daten
  • „Paper“ -Handelsmodus, arbeitet mit einem simulierten Kontostand, während Sie den Live-Markt beobachten
  • Konfigurierbare Verkaufsstopps, Kaufstopps und (nachlaufende) Gewinnstopps
  • Flexible Stichprobenperiode und Handelsfrequenz – Durchschnitt 1-2 Trades / Tag mit 1h-Periode, 10/ Tag mit 15m-Periode

Haftungsausschluss

  • Zenbot ist KEINE sichere Gewinnmaschine. Verwenden Sie es AUF EIGENE GEFAHR.
  • Kryptowährung ist immer noch ein Experiment, und deshalb auch Zenbot. Das heißt, beide können jederzeit fehlschlagen.Der Betrieb eines Bots und der Handel im Allgemeinen erfordern ein sorgfältiges Studium der damit verbundenen Risiken und Parameter.Führen Sie daher einige Simulationen durch und finden Sie die optimalen Parameter für Ihre gewählte Börse / Ihr ausgewähltes Paar, bevor Sie „All-In“ gehen.

Schnellstart

1. Voraussetzungen: Linux oder OSX oder Docker, Node.js und MongoDB.

Führen Sie Ihre Konsole aus,

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

Oder ohne git

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

Erstellen Sie Ihre Konfigurationsdatei, indem Sie conf-sample.js nach conf.js kopieren:

cp conf-sample.js conf.js
  • Anzeigen und bearbeiten conf.js.
  • Es ist möglich, Zenbot im „Papierhandel“ -Modus zu verwenden, ohne Änderungen vorzunehmen.
  • Sie müssen jedoch Ihre Exchange-API-Schlüssel hinzufügen, um echten Handel zu ermöglichen.
  • API-Schlüssel benötigen KEINE Ein- /Auszahlungsberechtigungen.

Wenn Sie Docker verwenden, überspringen Sie den Abschnitt „Docker“ unten.

Abhängigkeiten installieren:

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

Docker

Um Zenbot unter Docker auszuführen, installieren Sie Docker, Docker Compose, Docker Machine (falls erforderlich) Sie können den Anweisungen unter folgen https://docs.docker.com/compose/install/

Nach der Installation (Schritt 2 oben),

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

Vocab: selectors

Ein „selector“ ist eine kurze Kennung, die Zenbot mitteilt, auf welche Börse und welches Währungspaar reagiert werden soll. Verwenden Sie das Formular {exchange_slug}.{asset}-{currency}. Eine vollständige Liste der Selektoren, die Ihre Zenbot-Installation unterstützt, finden Sie unter:

3. (optional) Führen Sie Simulationen für den ausgewählten Selektor aus

Verwenden Sie zum Verfüllen von Daten (vorausgesetzt, der ausgewählte Austausch unterstützt dies):

zenbot backfill <selector> --days <days>

Nachdem Sie das Verfüllen durchgeführt haben, können Sie eine Simulation ausführen:

zenbot sim <selector> 

Für eine Liste von Optionen für die sim befehl verwenden:

zenbot sim --help

Für zusätzliche Optionen im Zusammenhang mit der Strategie verwenden Sie:

zenbot list-strategies
  • Standardmäßig beginnt die SIM mit 1000 Währungseinheiten. Überschreiben Sie mit --currency_capital und --asset_capital.
  • Öffnen Sie sim_result.html in Ihrem Browser, um ein Candlestick-Diagramm mit Trades anzuzeigen.

Screenshot und Beispielergebnis

Zenbot gibt ein HTML-Diagramm jedes Simulationsergebnisses aus. In der Abbildung unten stellen die rosa Pfeile den Bot dar, der kauft (Pfeil nach oben) und verkauft (Pfeil nach unten), während er die historischen Daten des BTC / USD-Produkts von GDAX Exchange durchläuft.

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 begann mit 1.000 USD und endete nach 90 Tagen mit 2.954,50 USD, was einen ROI von 195% bedeutete! Trotz einer Buy / Hold-Strategie, die respektable 83 zurückgibt.44% hat Zenbot ein erhebliches Potenzial, Buy / Holders zu schlagen.

4. Run zenbot

Der folgende Befehl startet den Bot, und wenn Sie c.default_selector in conf.js nicht berührt haben, wird das Standard-BTC / USD-Paar auf GDAX gehandelt.

zenbot trade 

Verwenden Sie das --paper Flag, um nur simulierte Trades auszuführen, während Sie den Markt beobachten.

So führen Sie einen anderen Selektor aus (Beispiel: ETH-BTC auf Poloniex):

./zenbot trade poloniex.eth-btc

Verwenden Sie für eine vollständige Liste der Optionen für den Befehl trade:

und auch:

Lesen der Konsolenausgabe

Von links nach rechts:

  • Zeitstempel in Ortszeit (grau, blau bei Anzeige von „Live“ -Statistiken)
  • Vermögenspreis in Währung (gelb)
  • Prozentuale Preisänderung seit letzter Periode (rot/grün)
  • Volumen im Vermögen seit letzter Periode (grau)
  • RSI-ANSI-Diagramm (rot/grün)
  • trend_ema_rate (rot/grün, (siehe unten)
  • Aktuelles Signal oder Aktion, einschließlich buysellbuyingsellingboughtsold und last_trade_worth (Prozent änderung der Trendrichtung seit dem letzten Kauf/ Verkauf)
  • Kontostand (Vermögenswert)
  • Kontostand (Währung)
  • Gewinn oder Verlust in Prozent (kann mit --reset_profitzurückgesetzt werden)
  • Gewinn oder Verlust vs. Buy/Hold-Strategie

Über die Standardstrategie

  • Die Standardstrategie heißt trend_ema und befindet sich unter ./extensions/trend_ema.
  • Verwendet standardmäßig einen Zeitraum von 1 Stunde, aber Sie können dies überschreiben, indem Sie z. B. --period=15m zu den Befehlen sim oder trade hinzufügen.
  • Berechnet den 34-Perioden-EMA des aktuellen Preises und berechnet die prozentuale Änderung gegenüber dem EMA der letzten Periode, um den trend_ema_rate
  • zu erhaltenBetrachtet trend_ema_rate >= 0 einen Aufwärtstrend und trend_ema_rate < 0 einen Abwärtstrend
  • Filtert niedrige Werte whipsaws) von neutral_rate, das bei Einstellung auf auto die Standardabweichung des trend_ema_rate als variablen Rauschfilter verwendet.
  • Kauft zu Beginn des Aufwärtstrends, verkauft zu Beginn des Abwärtstrends
  • Wenn oversold_rsi gesetzt ist, versucht zu kaufen, wenn der RSI unter diesen Wert fällt, und beginnt sich dann zu erholen (ein Gegenstück zu --profit_stop_enable_pct, das verkauft, wenn ein Prozent des Gewinns erreicht ist, und dann sinkt)
  • Der Bot wird immer versuchen, den Handel gebühren, indem Sie Nur Post-Orders verwenden und somit ein Market „Maker“ anstelle eines „Taker“ sind. Einige Börsen bieten jedoch keine Maker-Rabatte an.

Tipps zur Optimierung der Option

  • Die Handelsfrequenz wird mit einer Kombination aus --period und --trend_ema angepasst. Wenn Sie beispielsweise häufiger handeln möchten, versuchen Sie --period=15m oder --trend_ema=25 oder beides. Wenn Sie zu viele Ping-Pong-Trades oder Verluste aus Gebühren erhalten, versuchen Sie, period oder trend_ema zu erhöhen.
  • Manchmal ist es verlockend, dem Bot zu sagen, dass er sehr oft handelt. Versuchen Sie, diesem Drang zu widerstehen, und setzen Sie auf Qualität statt Quantität, da jeder Trade mit einem angemessenen Slippage- und Whipsaw-Risiko einhergeht.
  • In einem Bullenmarkt können --sell_rate=-0.01 und --max_sell_duration=8 dem Preis eine Chance geben, sich vor dem Verkauf zu erholen. Wenn es zu einem plötzlichen Preisverfall kommt, wird davon ausgegangen, dass er sich erholt und der Verkauf verzögert. Kompensieren Sie das Risiko mit --sell_stop_pct=5.
  • --oversold_rsi=25In einem Bullenmarkt mit regelmäßigen Kurstauchgängen und Erholungen wird --oversold_rsi=25 versuchen zu kaufen, wenn der Preis sinkt.
  • In einem Markt mit vorhersehbaren Kursanstiegen und Korrekturen wird --profit_stop_enable_pct=10 versuchen zu verkaufen, wenn der letzte Kauf 10% Gewinn erzielt und dann auf 9% fällt.
  • ab v4.0.2 ist --neutral_rate=auto standardmäßig aktiviert, was sich in Simulationen als wirksam erwiesen hat, um schwache (Whipsaw-) Signale zu verhindern. Manchmal funktioniert --neutral_rate=0 jedoch besser für niedrige Volatilität, wie BTC-USD bei 1h.

Manuelle Handelswerkzeuge

Zenbots Order Execution Engine kann auch für manuelle Trades verwendet werden. Zu den Vorteilen gehören:

  • Vermeidet Gebühren für Marktaufträge durch Verwendung einer kurzfristigen Limit-Order
  • Kann die Ordergröße automatisch aus dem Kontostand ermitteln
  • Passt die Order alle 30 Sekunden an (falls erforderlich), um eine schnelle Ausführung zu gewährleisten
  • Wenn eine Order teilweise ausgeführt wird, wird versucht, die verbleibende Größe erneut zu bestellen

Der Kaufbefehl lautet:

zenbot buy <selector> 

beispiel, um Ihr verbleibendes USD-Guthaben im GDAX zum Kauf von Bitcoin zu verwenden:

zenbot buy gdax.BTC-USD

Oder um 10% Ihrer BTC zu verkaufen,

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

Update Log

  • v4.0.3 (Neueste)
    • fix für Docker Mongo Host error
    • Link für neuen Discord Chat!
    • fix polo Absturz auf getOrder seltsames Ergebnis
    • fix oversold_rsi Trigger während in Preroll
    • fix polo „nicht genug…“ fehler
    • ausgefallene Farben für Preisbericht
    • Produkt-ID im Bericht anzeigen
    • fix poloniex Backfill Chargen zu groß, Mongo Timeouts
    • fix cursorTo() Absturz bei einigen Knoteninstallationen
    • memDump zum Debuggen von Auftragsfehlern
    • fix Spaltenabstand im Fortschrittsbericht
  • v4.0.2
    • kleinere Überarbeitung trend_ema strat – hinzugefügt whipsaw Filterung über std. abweichung (--neutral_rate=auto)
    • trim Preroll des SIM-Ergebnisgraphen
  • v4.0.1
    • Hinzugefügt .dockerignore (danke @sulphur)
    • Absturz beim Mongo-Timeout während der Verfüllung beheben
    • Lücken in der Poloniex-Verfüllung beheben
    • Standard-Verfülltage 90 -> 14

TODO

  • Überprüfen Sie PR für Bitfinex
  • mehr Exchange-Unterstützung
  • Web-Benutzeroberfläche mit Grafiken und Protokollen
  • „Reaper“ zum automatischen Trimmen der Handelssammlung auf eine bestimmte Tageslänge
  • „Lite-Modus“ für Händler, eine Option zum Ausführen ohne MongoDB

Spenden

PS, einige haben gefragt, wie sie für die Zenbot-Entwicklung spenden können. Ich akzeptiere Spenden an meiner Bitcoin-Adresse hier:

carlos8fs BTC

187rmNSkSvehgcKpBunre6a5wA5hQQop6W

Danke!

Lizenz: MIT

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

Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung umzugehen, einschließlich der uneingeschränkten Rechte, Kopien der Software zu verwenden, zu kopieren, zu modifizieren, zusammenzuführen, zu veröffentlichen, zu verteilen, unterzulizenzieren und / oder zu verkaufen, und Personen, denen die Software zur Verfügung gestellt wird, dies unter den folgenden Bedingungen zu gestatten:

Der obige Urheberrechtshinweis und dieser Erlaubnishinweis sind in allen Kopien oder wesentlichen Teilen der Software enthalten.

DIE SOFTWARE WIRD „WIE BESEHEN“ BEREITGESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE, EINSCHLIEßLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL HAFTEN DIE URHEBER ODER URHEBERRECHTSINHABER FÜR ANSPRÜCHE, SCHÄDEN ODER SONSTIGE HAFTUNG, SEI ES AUFGRUND EINES VERTRAGS, EINER UNERLAUBTEN HANDLUNG ODER AUF ANDERE WEISE, DIE SICH AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER VERWENDUNG ODER DEM SONSTIGEN UMGANG MIT DER SOFTWARE ERGEBEN.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.