Cómo hacer tu propio robot de trading

El autor:La bondad, Creado: 2019-03-16 10:29:22, Actualizado: 2019-03-16 10:29:54

Prólogo

Ciertamente no soy un gran programador, pero escribir este proyecto me enseñó mucho (y me mantuvo ocupado). La mayor parte de mi código se hizo en FMZ.COM, y si fuera a refactorizar el código de Python usaría un modelo más orientado a objetos. Sin embargo, me sorprendió gratamente con los resultados que obtuve y el bot ha obtenido casi un 100% de ganancias de éter hasta ahora.

¿Qué hace? Es un bot de arbitraje. Eso significa que gana dinero negociando la diferencia entre los precios en dos (o más) intercambios. A partir de ahora es unidireccional y solo opera entre Etherdelta y Bittrex: comparten aproximadamente veinte pares de et / token. Aquí hay un diagrama para ilustrar cómo funciona:How to make your own trading botLas palabras seguidas de paréntesis son transacciones de ethereum que invocan una llamada de función de contrato inteligente.

El Código

Podría haber utilizado el editor de Python de la plataforma fmz.com para crear las transacciones y llamadas de funciones y habría sido bastante sencillo. Necesitaba algo más confiable; una transacción fallida significa perder dinero. Cada una de mis solicitudes GET necesitaba una respuesta, incluso si el paquete TCP se perdía o el servidor web en el otro extremo estaba temporalmente caído. Por lo tanto, decidí implementar mi propio envoltorio API de Python eterscan y usé pythereum para crear las transacciones y eterscan para publicarlas. También escribí mi propio requests.get decorator que es un bucle de tiempo que solo sale una vez que la respuesta es satisfactoria.

Aquí está el código que usé para codificar las respuestas de la API de etherdelta json como hexadecimal, RLP codificado, transacciones de ethereum (no para los débiles de corazón):How to make your own trading bot

Los valores hexadecimales en bruto en el cierre en la parte inferior son las firmas de la función que corresponden a cada función. Una firma de la función se deriva del keccak de la función y sus argumentos. Debe adjuntarse al parámetro de datos de una transacción seguido de los datos que componen los argumentos. En total, mi código tiene alrededor de 400 líneas de largo y está contenido en 5 archivos diferentes.

El resultado

Hice un par de gráficos de los datos que registré usando pymatplotlib.How to make your own trading bot How to make your own trading bot How to make your own trading bot

Conclusión

En general, todo el proyecto me tomó alrededor de dos semanas durante mi tiempo libre en la escuela y fue una explosión en todas partes. He tomado un descanso de la codificación vigorosamente y actualmente estoy en el proceso de planificación de arbitraje bot v2.

¡A la luna!


Más contenido