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).FMZ.COMNo obstante, me sorprendió gratamente con los resultados que obtuve y el bot ha hecho casi 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:imgLas 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 usadofmz.comPara crear las transacciones y llamadas de funciones, necesitaba algo más fiable; 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 del otro extremo estaba caído temporalmente. Por lo tanto, decidí implementar mi propio envoltorio de API de python eterscan y usé pythereum para crear las transacciones y eterscan para publicarlas. También escribí mis propias solicitudes. 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):img

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.img img img

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.