DeviaVir/zenbot

« Pour suivre le chemin, regardez vers le maître, suivez le maître, marchez avec le maître, voyez à travers le maître, devenez le maître. »- Proverbe zen

Nouveau! Chattez avec d’autres utilisateurs de Zenbot

Zenbot a de nouveau un chat Discord! Vous pouvez entrer via ce lien d’invitation.

Description

Zenbot est un bot de trading de crypto-monnaie en ligne de commande utilisant Node.js et MongoDB. Il dispose de:

  • Approche de trading entièrement automatisée basée sur l’analyse technique
  • Prise en charge complète de GDAX et Poloniex, les travaux sur le support des changes sont en cours.
  • Architecture de plugin pour implémenter le support d’échange, ou écrire de nouvelles stratégies
  • Simulateur pour les stratégies de Backtesting par rapport aux données historiques
  • Le mode de trading « papier » fonctionne sur un équilibre simulé tout en regardant le marché en direct
  • Arrêts de vente configurables, arrêts d’achat et arrêts de profit (trailing)
  • Période d’échantillonnage flexible et fréquence des transactions – moyennes 1-2 transactions / jour avec une période de 1h, 10 / jour avec une période de 15m

Avertissement

  • Zenbot n’est PAS une machine à profit infaillible. Utilisez-LE À VOS RISQUES ET PÉRILS.
  • La crypto-monnaie est toujours une expérience, et donc Zenbot aussi. Ce qui signifie que les deux peuvent échouer à tout moment.
  • L’exécution d’un bot et le trading en général nécessitent une étude minutieuse des risques et des paramètres impliqués.
  • Souvent, les paramètres de trading par défaut seront sous-performants par rapport à une stratégie buy-hold, alors exécutez des simulations et trouvez les paramètres optimaux pour votre échange / paire choisi avant de passer au « all-in ».

Démarrage rapide

1. Exigences: Linux ou OSX ou Docker, Nœud.js et MongoDB.

Exécutez dans votre console,

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

Ou, sans git,

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

Créez votre fichier de configuration en copiant conf-sample.js vers conf.js:

cp conf-sample.js conf.js
  • Afficher et modifier conf.js.
  • Il est possible d’utiliser zenbot en mode « trading papier » sans apporter de modifications.
  • Vous devez cependant ajouter vos clés d’API Exchange pour activer le trading réel.
  • Les clés API n’ont PAS besoin d’autorisations de dépôt/retrait.

Si vous utilisez Docker, passez à la section « Docker » ci-dessous.

Dépendances d’installation:

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

Docker

Pour exécuter Zenbot sous Docker, installer Docker, Docker Compose, Docker Machine (si nécessaire), Vous pouvez suivre les instructions sur https://docs.docker.com/compose/install/

Après l’installation (étape 2 ci-dessus),

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

Vocabulaire: sélecteurs

Un « sélecteur » est un identifiant court qui indique à Zenbot sur quelle paire de devises et de devises agir. Utilisez le formulaire {exchange_slug}.{asset}-{currency}. Une liste complète des sélecteurs pris en charge par votre installation Zenbot se trouve avec :

3. (facultatif) Exécutez des simulations pour le sélecteur choisi

Pour remblayer les données (à condition que l’échange choisi le prenne en charge), utilisez :

zenbot backfill <selector> --days <days>

Une fois que vous avez remblayé, vous pouvez exécuter une simulation :

zenbot sim <selector> 

Pour une liste d’options pour le sim commande, utilisez:

zenbot sim --help

Pour les options supplémentaires liées à la stratégie, utilisez:

zenbot list-strategies
  • Par défaut, la carte sim commencera avec 1000 unités de devise. Remplacez avec --currency_capital et --asset_capital.
  • Ouvrez sim_result.html dans votre navigateur pour voir un graphique en chandelier avec des trades.

Capture d’écran et exemple de résultat

Zenbot génère un graphique HTML de chaque résultat de simulation. Dans la capture d’écran ci-dessous, les flèches roses représentent le bot achetant (flèche vers le haut) et vendant (flèche vers le bas) au fur et à mesure qu’il itérait les données historiques du produit BTC / USD de GDAX exchange.

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 a commencé avec11,000 USD et s’est terminé avec22,954.50 après 90 jours, faisant un retour sur investissement de 195%! En dépit d’une stratégie buy / hold renvoyant un respectable 83.44%, Zenbot a un potentiel considérable pour battre les acheteurs / détenteurs.

4. Exécutez zenbot

La commande suivante lancera le bot, et si vous n’avez pas touché c.default_selector dans conf.js, échangera la paire BTC/USD par défaut sur GDAX.

zenbot trade 

Utilisez l’indicateur --paper pour effectuer uniquement des transactions simulées tout en surveillant le marché.

Voici comment exécuter un sélecteur différent (exemple : ETH-BTC sur Poloniex) :

./zenbot trade poloniex.eth-btc

Pour une liste complète des options de la commande trade, utilisez:

et aussi:

Lecture de la sortie de la console

De gauche à droite:

  • Horodatage en heure locale (gris, bleu lors de l’affichage des statistiques « en direct »)
  • Prix de l’actif en devise (jaune)
  • Variation en pourcentage du prix depuis la dernière période (rouge / vert)
  • Volume de l’actif depuis la dernière période (gris)
  • Graphique RSI ANSI (rouge / vert)
  • trend_ema_rate (rouge / vert, expliqué ci-dessous)
  • Signal ou action de courant, y compris buysellbuyingsellingboughtsold et last_trade_worth(pourcentage Solde du compte (actif)
  • Solde du compte (devise)
  • Pourcentage de profit ou de perte (peut être réinitialisé avec --reset_profit)
  • Gain ou perte par rapport à la stratégie d’achat/de détention

À propos de la stratégie par défaut

  • La stratégie par défaut est appelée trend_ema et réside à ./extensions/trend_ema.
  • Utilise par défaut une période de 1h, mais vous pouvez le remplacer en ajoutant par exemple --period=15m aux commandes sim ou trade.
  • Calcule l’EMA sur 34 périodes du prix actuel et calcule le pourcentage de variation par rapport à l’EMA de la dernière période pour obtenir le trend_ema_rate
  • Considère trend_ema_rate >= 0 une tendance à la hausse et trend_ema_rate < 0une tendance à la baisse
  • Filtre les valeurs basses (whipsaws) par neutral_rate, qui, lorsqu’il est réglé sur auto, utilise l’écart-type du trend_ema_rate comme filtre de bruit variable.
  • Achète au début de la tendance à la hausse, vend au début de la tendance à la baisse
  • Si oversold_rsi est défini, essaie d’acheter lorsque le RSI plonge en dessous de cette valeur, puis commence à se rétablir (une contrepartie à --profit_stop_enable_pct, qui vend lorsqu’un pourcentage du bénéfice est atteint, puis plonge)
  • Le bot va essayez toujours d’éviter les frais de transaction, en utilisant des ordres post-uniquement et en étant ainsi un « fabricant » de marché au lieu d’un « preneur ». Certains échanges n’offriront cependant pas de rabais aux fabricants.

Conseils de réglage des options

  • La fréquence des échanges est ajustée avec une combinaison de --period et --trend_ema. Par exemple, si vous souhaitez des transactions plus fréquentes, essayez --period=15m ou --trend_ema=25 ou les deux. Si vous obtenez trop de transactions de ping-pong ou de pertes dues aux frais, essayez d’augmenter period ou trend_ema.
  • Parfois, il est tentant de dire au bot trade très souvent. Essayez de résister à cette envie, et optez pour la qualité plutôt que la quantité, car chaque transaction comporte une quantité décente de dérapage et de risque de coup de fouet.
  • Dans un marché haussier, --sell_rate=-0.01 et --max_sell_duration=8 peuvent donner au prix une chance de se rétablir avant de vendre. S’il y a une chute soudaine du prix, il est supposé qu’il se rétablira et que la vente sera retardée. Compensez le risque en utilisant --sell_stop_pct=5.
  • Dans un marché haussier avec des plongées et des récupérations de prix régulières, --oversold_rsi=25 essaiera d’acheter lorsque le prix plongera.
  • Sur un marché avec des hausses de prix et des corrections prévisibles, --profit_stop_enable_pct=10 essaiera de vendre lorsque le dernier achat atteindra 10% de profit, puis tombera à 9%.
  • à partir de la version 4.0.2, --neutral_rate=auto est activé par défaut, ce qui s’est avéré efficace dans les simulations pour prévenir les signaux faibles (whipsaw). Cependant, parfois --neutral_rate=0 fonctionne mieux pour une faible volatilité, telle que BTC-USD à 1h.

Outils de trading manuels

Le moteur d’exécution des ordres de Zenbot peut également être utilisé pour les transactions manuelles. Les avantages comprennent:

  • Évite les frais d’ordre au marché en utilisant un ordre à cours limité à court terme
  • Peut déterminer automatiquement la taille de l’ordre à partir du solde du compte
  • Ajuste l’ordre toutes les 30 secondes (si nécessaire) pour assurer une exécution rapide
  • Si un ordre est partiellement exécuté, tente de ré-ordonner avec la taille restante

La commande à acheter est:

zenbot buy <selector> 

Par exemple, pour utiliser votre solde en USD en GDAX pour acheter des Bitcoins :

zenbot buy gdax.BTC-USD

Ou pour vendre 10% de votre BTC,

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

Journal de mise à jour

  • v4.0.3 (Le plus récent)
    • correction de l’erreur d’hôte docker mongo
    • lien pour le nouveau chat Discord!
    • correction du crash du polo lors de l’ordre de commande résultat étrange
    • correction du déclencheur oversold_rsi lors d’un préroll
    • correction du polo « pas assez… » erreurs
    • couleurs de fantaisie pour le rapport de prix
    • affichage de l’id du produit dans le rapport
    • correction des lots de remblayage poloniex trop gros, délais d’attente mongo
    • correction du crash de cursorTo() sur certaines installations de nœuds
    • memDump pour les échecs de commande de débogage
    • correction de l’espacement des colonnes sur le rapport d’avancement
  • v4.0.2
    • révision mineure de trend_ema strat – ajout du filtrage whipsaw via std. déviation (--neutral_rate=auto)
    • trim preroll du graphique de résultat sim
  • v4.0.1
    • Ajouté.dockerignore (merci @sulphur)
    • correction du plantage sur le délai d’attente de mongo pendant le remblayage
    • correction des lacunes dans le remblayage poloniex
    • jours de remblayage par défaut 90 – >14

TODO

  • examen des relations publiques pour Bitfinex
  • plus de support d’échange
  • interface utilisateur Web avec graphiques et journaux
  • « reaper » pour réduire automatiquement la collection de transactions à une certaine durée de journée
  • « mode lite » pour trader, une option à exécuter sans MongoDB

Faire un don

P.S., certains ont demandé comment faire un don au développement Zenbot. J’accepte les dons à mon adresse Bitcoin Ici:

BTC de carlos8f

187rmNSkSvehgcKpBunre6a5wA5hQQop6W

Merci!

Licence : MIT

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

L’autorisation est accordée gratuitement à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), de traiter le Logiciel sans restriction, y compris, sans s’y limiter, les droits d’utilisation, de copie, de modification, de fusion, de publication, de distribution, de sous-licence et/ ou de vente du Logiciel, et de permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve de les conditions suivantes:

L’avis de copyright ci-dessus et cet avis d’autorisation doivent être inclus dans toutes les copies ou parties substantielles du Logiciel.

LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADÉQUATION À UN USAGE PARTICULIER ET DE NON-CONTREFAÇON. EN AUCUN CAS, LES AUTEURS OU LES DÉTENTEURS DE DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L’UTILISATION OU D’AUTRES TRANSACTIONS DANS LE LOGICIEL. LOGICIEL.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.