Construir Un Cryptocurrency Trading Bot con R
** tenga en cuenta que la API utilizada en este tutorial ya no está en servicio. Este artículo debe leerse con fines ilustrativos teniendo esto en cuenta.
La mente del trader es el eslabón débil en cualquier estrategia o plan de trading. La ejecución efectiva del comercio necesita insumos humanos que se ejecutan en la dirección opuesta a nuestros instintos. Deberíamos comprar cuando nuestro cerebro de reptil quiera vender. Deberíamos vender cuando nuestras tripas quieran que compremos más.
Es aún más difícil comerciar criptomonedas con una constitución crítica. Los mercados jóvenes y emergentes están inundados de» grupos de bombas » que fomentan el intenso FOMO (miedo a perderse) que elevan los precios por las nubes antes de devolverlos a la tierra. Muchos inversores novatos también operan en estos mercados, inversores que posiblemente nunca ingresaron a una operación en la Bolsa de Nueva York. En cada operación, hay un fabricante y un tomador, y los inversores astutos de criptomonedas encuentran fácil aprovechar a los novatos que inundan el espacio.
con el fin De separar mis emociones, crypto comercio y a tomar ventaja de los mercados abiertos 24/7, me decidí a construir un simple trading robot que siga una estrategia simple y ejecutar operaciones como he dormido.
Muchos «traders bot», como se les llama, usan el lenguaje de programación Python para ejecutar estas operaciones. Si fueras a Google, «crypto trading bot», encontrarías enlaces a código Python en varios repositorios de Github.
Soy un científico de datos, y R es mi herramienta principal. Busqué un tutorial decente sobre el uso del lenguaje R para construir un bot comercial, pero no encontré nada. Estaba decidido a construir mi propio paquete para interactuar con la API GDAX cuando encontré el paquete rgdax, que es un envoltorio R para la API GDAX. La siguiente es una guía para armar un bot comercial que puede usar para construir sus propias estrategias.
En pocas palabras, negociaremos el par Ethereum — USD en el intercambio GDAX a través de su API a través del envoltorio rgdax. Me gusta operar con este par porque Ethereum (ETH) generalmente está en una postura alcista, lo que permite que esta estrategia brille.
Nota: esta es una estrategia súper simplista que solo ganará unos pocos dólares en un mercado alcista. Para todos los propósitos, use esto como base para construir su propia estrategia.
Compraremos cuando una combinación de indicadores de Índice de Fuerza Relativa (RSI) apunten a un mercado temporalmente sobrevendido, con la suposición de que los alcistas volverán a subir los precios y podremos obtener ganancias.
Una vez que compramos, el bot ingresará tres órdenes de venta límite: una con un beneficio del 1%, otra con un beneficio del 4% y la última con un beneficio del 7%. Esto nos permite liberar fondos rápidamente para ingresar a otra operación con las dos primeras órdenes, y el 7% de la orden refuerza nuestra rentabilidad general.
- Software
- Parte 1: Llamar a las Bibliotecas y Funciones de construcción
- Parte 2: Tienda de Variables
- Parte 3: el Comercio de Bucle se Ejecuta
- Parte 4: Uso del Programador de tareas de Windows para automatizar el Script
- Programación de secuencia de comandos con Rstudio addin
- Modificar la tarea programada con el Programador de Tareas
- Mantenga un ojo en su tarea con el archivo de registro
- Hágalo suyo
Software
Usaremos Rstudio y el programador de tareas de Windows para ejecutar nuestro código R de forma regular (cada 10 minutos). Necesitará una cuenta GDAX para enviar pedidos y una cuenta de Gmail para recibir notificaciones comerciales.
Parte 1: Llamar a las Bibliotecas y Funciones de construcción
vamos a empezar por llamar a varias bibliotecas:
El paquete rgdax proporciona la interfaz a la api GDAX, mailR se utiliza para enviarnos actualizaciones por correo electrónico con una cuenta de Gmail, stringi nos ayuda a analizar números de JSON y TTR nos permite realizar cálculos técnicos de indicadores.
Función: curr_bal_usd & curr_bal_eth
Utilizará su clave de api, secreto y frase de contraseña que se generan desde GDAX en la sección API. Estas funciones de consulta de su GDAX cuenta para el más reciente balance que vamos a utilizar en varias ocasiones en nuestro trading:
Función: RSI
vamos a utilizar el RSI o el Índice de Fuerza Relativa como nuestros principales indicadores de esta estrategia. Curr_rsi14_api extrae el valor del RSI de 14 períodos más reciente, utilizando velas de 15 minutos. RSI14_api_less_one y así sucesivamente tire del RSI para los períodos anteriores:
Function: bid & ask
Next, we will need the current bid and ask prices for our strategy:
Function: usd_hold, eth_hold y cancel_orders
Para que podamos realizar pedidos con límite de forma iterativa, necesitamos poder obtener el estado actual de nuestros pedidos ya realizados y poder cancelar pedidos que se han movido demasiado hacia abajo en el libro de pedidos para ser llenados. Vamos a utilizar el «tiene» la función de la rgdax paquete para hacer esto para el primero, y «cancel_order» para el último:
la Función de: buy_exe
Esta es la función big-daddy que ejecuta nuestras órdenes de límite. Hay varios pasos a través de los cuales funciona esta función.
1. La función Order_size calcula cuánto eth podemos comprar, porque queremos comprar tanto como sea posible cada vez, menos 0.005 eth para tener en cuenta los errores de redondeo
2. Nuestra función WHILE coloca órdenes de límite mientras todavía tenemos cero ETH.
3. Se agrega una orden al precio bid (), el sistema duerme 17 segundos para permitir que se complete la orden y luego comprueba si se completó la orden. Si no lo fue, el proceso se repite.
Parte 2: Tienda de Variables
a continuación, necesitamos almacenar algunos de nuestros indicador RSI variables como objetos para el comercio de bucle se ejecuta más rápido y para no exceder el límite de velocidad de la API:
Parte 3: el Comercio de Bucle se Ejecuta
hasta ahora, sólo hemos estado preparando nuestras funciones y variables con el fin de ejecutar el bucle de comercio. El siguiente es un recorrido verbal por el bucle de negociación real:
Si el saldo actual de nuestra cuenta en USD es superior a 2 20, iniciaremos el bucle. A continuación, si el RSI actual es mayor o igual a 30 Y el RSI en el período anterior era menor o igual a 30 Y el RSI en los períodos anteriores de 3 era menor que 30 al menos una vez, compramos tanto ETH como podamos con el saldo actual de USD.
A continuación, guardamos este precio de compra en un archivo CSV.
Luego, nos enviamos un correo electrónico para alertarnos de la acción de compra.
El bucle luego imprime «comprar» para que podamos rastrear eso en nuestro archivo de registro.
El sistema duerme durante 3 segundos.
Ahora, entramos en 3 niveles límite de órdenes de venta para tomar ganancias.
Nuestra primera orden de venta con límite obtiene ganancias con un 1% de ganancia, la siguiente obtiene ganancias con un 4% de ganancia y la última obtiene ganancias con un 7% de ganancia:
Eso es todo, esa es toda la secuencia de comandos.
Parte 4: Uso del Programador de tareas de Windows para automatizar el Script
El propósito de este bot es eliminar el error humano de la operación y permitirnos ingresar operaciones sin tener que estar presentes en una pantalla. Usaremos el Programador de tareas de Windows para lograr esto.
Programación de secuencia de comandos con Rstudio addin
el Uso de la mano Rstudio agregar a programar fácilmente la secuencia de comandos:
Modificar la tarea programada con el Programador de Tareas
Navegue a la tarea creada por el Rstudio añadir y ajustar el gatillo para disparar en el intervalo que desee. En mi caso elijo cada 10 minutos indefinidamente.
Mantenga un ojo en su tarea con el archivo de registro
Cada vez que se ejecuta la secuencia de comandos se hará una entrada en un archivo de registro de texto, que le permite solucionar problemas de errores en la secuencia de comandos:
Usted puede ver cómo el «INICIO de la ENTRADA del REGISTRO» y el «FIN de la ENTRADA de REGISTRO» función de impresión es muy útil para separar nuestras entradas.
Hágalo suyo
Puede modificar este script para que sea tan simple o complejo como desee. Estoy trabajando en mejorar este script con la adición de redes neuronales del módulo Keras de Tensorflow para Rstudio. Estas redes neuronales agregan un elemento exponencialmente más complejo al script, pero son increíblemente poderosas para encontrar patrones ocultos en los datos.
Además, el paquete TTR nos proporciona una gran cantidad de funciones financieras e indicadores técnicos que se pueden utilizar para mejorar su modelo.
Con todo esto dicho, no juegues con más dinero que puedas permitirte perder. Los mercados no son un juego y puedes y perderás tu camisa.