Llevo más de diez años como desarrollador y desde junio estoy construyendo con IA un programa de trading automático de criptomonedas. ¿Fue fácil? A medias. La parte de comprar y vender sale en minutos. Mantenerla funcionando las 24 horas con dinero real resultó ser otro trabajo completamente distinto. En cuatro meses escribí y reescribí unas 100.000 líneas de Python, y sigo en el ciclo de construir, corregir y probar. Esto es lo que pasó de verdad, con números.
Operar son 15 líneas
Si le dices a una IA "compra si baja un 5% y vende si sube un 10%", te devuelve algo como el código de abajo. Se conecta al exchange, mira el precio de Bitcoin cada minuto y lanza una orden cuando se cumple la condición. Quince líneas.

Este lo escribí yo para ilustrar la idea y nunca lo ejecuté. Aun así, hoy cualquiera puede conseguir un código así sin saber programar. Al empezar pensé que bastaría con añadir una estrategia encima y que estaría casi terminado.
El programa real tiene miles de líneas
Si cuento las líneas de mi programa actual, la diferencia salta a la vista.
| Parte | Líneas |
|---|---|
| Comprar y vender (el ejemplo de arriba) | 15 |
| Funcionamiento 24/7 (órdenes, cuentas, posiciones, motor, servidor) | 8.308 |
| Estrategias (con 395 archivos de experimentos) | 43.896 |

Las 8.308 líneas del medio no tienen nada que ver con la estrategia. Son las que mantienen vivo el programa: envían órdenes, sincronizan las posiciones abiertas con el exchange, revisan los saldos de las cuentas y retoman las operaciones abiertas después de un reinicio. Ahora mismo hay 30 configuraciones de estrategia en real repartidas en 12 cuentas, así que solo saber qué cuenta tiene qué moneda ya es bastante trabajo.
Las 43.896 líneas de estrategias están algo infladas. Guardo todos los archivos de experimentos, también los que probé y descarté. Mejor leerlo como "esta es la cantidad de estrategias que construí y probé" que como "el código de estrategias ocupa 44.000 líneas".
Seis cosas que pasaron de verdad
Cuando hay dinero real de por medio, un error pequeño se convierte enseguida en una pérdida o en una parada. Esto es lo que me encontré con el programa en marcha.

El 15 de septiembre tenía el servidor de trading real abierto dentro de una ventana de vista previa. Al cerrarse esa ventana, el servidor se apagó con ella. Durante 45 minutos no se hizo ninguna operación. Desde entonces el servidor real corre como un proceso aparte que no depende de ninguna ventana.
El 21 de septiembre el problema vino tras un reinicio. Al reiniciar, el programa recupera de la base de datos las operaciones abiertas. Una estrategia usaba un valor calculado que nunca se guardaba allí. Con ese valor vacío, la estrategia fallaba cada vez que se ejecutaba, y estuvo parada de 11:00 a 15:15, más de cuatro horas. Ahora, si encuentra el valor vacío, lo vuelve a calcular.
En mi primera versión el problema fue la cantidad de la orden. Cada moneda tiene un paso de cantidad fijo, así que redondeaba para ajustarme a él. Una orden de 5 dólares quedó redondeada por debajo del importe mínimo del exchange y fue rechazada. Lo resolví redondeando siempre hacia arriba.
Con el apalancamiento pasó algo parecido. El apalancamiento máximo cambia de una moneda a otra, y cuando mandaba una orden por encima del límite, Bybit la rechazaba con el error 110013. Ahora, si llega ese error, el programa baja el apalancamiento y lo intenta una vez más.
El 5 de octubre encontré un problema en los datos. La lista de monedas que bajaba de Bybit tenía futuros de acciones mezclados. Habían entrado en mis estadísticas cosas que no eran criptomonedas, así que tuve que recalcular las estadísticas y las simulaciones.
El 9 de octubre el programa lanzó una orden de entrada en corto en STG, una moneda a punto de ser deslistada. Bybit la rechazó porque durante el deslistado no se pueden abrir posiciones nuevas (error 30228).
Las desconexiones también hay que tenerlas siempre previstas. Cuando el programa no consigue los precios, se salta ese tramo de 15 minutos y lo vuelve a intentar en el siguiente.
Unas 100.000 líneas escritas y reescritas en cuatro meses
Corregir las cosas una a una hace que el código no pare de cambiar. Si sumo las líneas de Python añadidas y borradas cada día desde junio hasta principios de octubre, salen unas 100.000 (103.310).

La línea gris es mi primer programa: 42.200 líneas escritas y modificadas entre junio y agosto. El 11 de septiembre empecé a rehacerlo desde cero. Esa es la línea amarilla, que llegó a 61.100 líneas en poco más de un mes. En ese tiempo ejecuté 505 simulaciones de estrategias.
¿Se puede hacer sin ser desarrollador?
Creo que sí. La IA de hoy mira un mensaje de error, encuentra la causa y propone cómo arreglarlo. Si le dedicas tiempo y vas resolviendo los problemas uno a uno, es un proyecto realista aunque no tengas formación en programación.
Eso sí, no esperes que la IA te entregue un sistema terminado con un par de clics. Casi todos los problemas de arriba aparecieron solo cuando el programa ya movía dinero real. Si decides intentarlo, empieza sabiendo que vas a hacer clic, corregir y volver a ejecutar muchas más veces de las que imaginas.
Nada de lo que publicamos es asesoramiento financiero. Las criptomonedas son volátiles y los resultados pasados no garantizan rendimientos futuros.