Comment créer votre propre robot de trading

Auteur:La bonté, Créé: 2019-03-16 10:29:22, Mis à jour: 2019-03-16 10:29:54

Préface

Je ne suis certainement pas un grand programmeur, mais l'écriture de ce projet m'a beaucoup appris (et m'a occupé). La plupart de mon code a été fait sur FMZ.COM, et si je devais refactorer le code python, j'utiliserais un modèle plus orienté objet. Néanmoins, j'ai été agréablement surpris par les résultats obtenus et le bot a réalisé presque 100% de bénéfices ether jusqu'à présent.

À quoi ça sert? Il s'agit d'un bot d'arbitrage. Cela signifie qu'il gagne de l'argent en négociant la différence entre les prix sur deux (ou plus) bourses. À l'heure actuelle, il est unidirectionnel et ne négocie qu'entre Etherdelta et Bittrex: ils partagent environ vingt paires d'eth / jetons. Voici un diagramme pour illustrer son fonctionnement:How to make your own trading botLes mots suivis de parenthèses sont des transactions Ethereum qui invoquent un appel de fonction de contrat intelligent.

Le code

J'aurais pu utiliser l'éditeur python de la plate-forme fmz.com pour créer les transactions et les appels de fonctions et cela aurait été assez simple. J'avais besoin de quelque chose de plus fiable; une transaction ratée signifie perdre de l'argent. Chaque requête GET nécessitait une réponse, même si le paquet TCP était perdu ou si le serveur Web à l'autre extrémité était temporairement en panne. J'ai donc décidé d'implémenter mon propre enveloppe API python et j'ai utilisé pythereum pour créer les transactions et les publier. J'ai également écrit mes propres requêtes.get decorator qui est une boucle while qui ne sort qu'une fois que la réponse est satisfaisante.

Voici le code que j'ai utilisé pour coder les réponses de l'API etherdelta json en hexadecimal, encodé en rlp, les transactions Ethereum (pas pour les faibles de cœur):How to make your own trading bot

Les valeurs hexadécimales brutes dans la fermeture en bas sont les signatures de fonction qui correspondent à chaque fonction. Une signature de fonction est dérivée du keccak de la fonction et de ses arguments. Elle doit être ajoutée au paramètre de données d'une transaction suivie des données qui composent les arguments. Au total, mon code est d'environ 400 lignes et contenu dans 5 fichiers différents.

Le résultat

J'ai fait quelques graphiques à partir des données que j'ai enregistrées en utilisant pymatplotlib.How to make your own trading bot How to make your own trading bot How to make your own trading bot

Conclusion

Dans l'ensemble, l'ensemble du projet m'a pris environ deux semaines pendant mon temps libre à l'école et c'était une explosion tout autour.

À la lune!


En savoir plus