En el artículo de esta semana vamos a implementar una estrategia en TradingView con la ayuda de ChatGPT.
De esta manera, complementamos el artículo anterior donde creábamos algunos indicadores en TradingView gracias también a ChatGPT.
En esta ocasión vamos a explorar otra de las posibilidades que nos ofrece la inteligencia artificial, se trata ni más ni menos que de la creación de estrategias con lenguaje Pinescript.
Estrategias que posteriormente podremos backtestear de forma automática en TradingView.
¡Vamos a ello!
Índice de contenidos
Estrategia simple con un estocástico
La estrategia que vamos a implementar la plantea un suscriptor del canal de YouTube de Trading para principiantes, que nos dejó el siguiente comentario:
La propuesta es la siguiente: Construir un indicador en TradingView con un oscilador estocástico y la desviación estándar, con señales de entrada y salida.
Como se trata de una propuesta algo genérica, sin indicaciones exactas de entrada/salida, hagámosla más sencilla. Crearemos una estrategia usando únicamente el indicador estocástico. Abriremos operación cuando el estocástico esté en sobreventa y saldremos cuando esté en sobrecompra. Así de simple.
Por si no lo sabías, el estocástico es usado en diversas estrategias de trading para obtener señales de entrada y de salida, pero… ¿Son señales fiables? ¡Veámoslo!
▶️ El indicador estocástico
Ya que estamos pidiendo ayuda a ChatGPT, pidámosle también que nos explique el estocástico con palabras sencillas:
El indicador estocástico es un indicador técnico que se utiliza en el análisis bursátil para medir el impulso del precio de un activo financiero. Este indicador compara el precio actual de un activo con su rango de precios históricos para determinar si el precio está sobrecomprado o sobrevendido. Si el precio está sobrecomprado, se espera que el precio baje, y si el precio está sobrevendido, se espera que el precio suba. El indicador estocástico se utiliza para identificar oportunidades de compra o venta en el mercado.
Bueno, más o menos se entiende, ¿no?
Para tu interés, te copio aquí la formula:
K= (Cierre actual-Mínimo más bajo)/(Máximo más alto-Mínimo más bajo) x 100
Donde K es el valor del estocástico, e indica (en porcentaje) dónde se encuentra el cierre actual respecto al rango de precio máximo y mínimo en X periodos anteriores.
La D es simplemente una media móvil aplicada a K para suavizar su valor.
▶️ Afinando la estrategia
Afinemos un poco más la estrategia. Queremos comprar cuando el precio esté en sobreventa y dé signos de que «empieza a darse la vuelta». Por el otro lado, cerraremos la posición cuando esté en sobrecompra y también «dé signos de querer darse la vuelta».
¿Cómo conseguimos esto? Cuando esté en zona de sobreventa y se produzca un cruce entre la K y la D, interpretaremos que se está dando la vuelta (reversión), y cuando salga de sobrecompra y se vuelvan a cruzar, interpretaremos que ha llegado a su pico máximo y cerraremos la posición.
Es decir, abriremos posición cuando:
- La K cruce de abajo a arriba la D y estemos por debajo del límite inferior 20.
Cerraremos posición cuando:
- La K cruce de arriba a abajo la D y estemos por encima del límite superior 80.
Siempre entramos y salimos al cierre del mercado (velas diarias).
En el gráfico de abajo muestro un ejemplo de operación ganadora siguiendo este sistema:
▶️ Creando la estrategia con ChatGPT
Ahora sí, pidámosle a ChatGPT que nos construya la estrategia:
Escribe como un experto en Pinescript versión 5. Desarrolla una estrategia usando el indicador estocástico. Cuando esté en sobreventa y la K cruce de abajo a arriba la D, compra. Cuando esté en sobrecompra y la K cruce de arriba a abajo la D, cierra la posición. Partimos de un capital inicial de 50000 dólares y entramos con un 20% en cada operación.
Este es el código resultante:
//@version=5
strategy(«Estrategia Estocástico»)// Parámetros
capital_inicial = 50000
porcentaje_operacion = 0.2
largo_plazo = input(14, minval=1)
corto_plazo = input(3, minval=1)
sobreventa = input(20, minval=1)
sobrecompra = input(80, minval=1)// Indicador Estocástico
K = sma(stoch(close, high, low, largo_plazo), corto_plazo)
D = sma(K, corto_plazo)// Señales de entrada y salida
comprar = crossover(K, D) and K <= sobreventa
vender = crossunder(K, D) and K >= sobrecompra// Tamaño de la posición
capital_por_operacion = capital_inicial * porcentaje_operacion
tamaño_posicion = floor(capital_por_operacion / close)// Entrada y salida de operaciones
if comprar
strategy.entry(«Compra», strategy.long, tamaño_posicion)
if vender
strategy.close(«Compra»)
▶️ Corrigiendo el código generado
Observamos que sigue cometiendo algunos fallos al igual que hace unas semanas. Tendremos que corregirlos a mano.
Por ejemplo, no ha añadido el capital inicial de 50.000 dólares. Esto se especifica en la función «strategy» mediante el siguiente parámetro: initial_capital=50000.
Tampoco ha añadido el prefijo «ta» delante de las funciones «sma», «stoch», «crossunder» y «crossover». Este prefijo, en la versión 5 de Pinescript, debe estar delante de todas las funciones de indicadores técnicos.
Además, ha calculado manualmente la posición. Esto no hace falta, ya que debe estar indicado en la función «strategy». Debería ser default_qty_type=strategy.percent_of_equity, default_qty_value=2. Queremos entrar al mercado con el 20% de nuestra cuenta.
Luego ha hecho una cosa muy rara. Ha encapsulado la función «stoch» dentro de una «sma». Es decir, está calculando una media móvil para el valor del estocástico (K). Esto no hace falta. La media móvil ya se calcula en D.
Aquí tenemos el código final corregido:
//@version=5
strategy(«Estrategia Estocástico», initial_capital = 50000, default_qty_type=strategy.percent_of_equity, default_qty_value=20, currency = currency.USD)// Parámetros
largo_plazo = input(14)
corto_plazo = input(3)
sobreventa = input(20)
sobrecompra = input(80)// Indicador Estocástico
K = ta.stoch(close, high, low, largo_plazo)
D = ta.sma(K, corto_plazo)// Señales de entrada y salida
comprar = ta.crossover(K, D) and K <= sobreventa
vender = ta.crossunder(K, D) and K >= sobrecompra// Entrada y salida de operaciones
if comprar
strategy.entry(«Compra», strategy.long)
if vender
strategy.close(«Compra»)
Ahora debemos copiarlo en la pestaña «Pine Editor», guardarlo y añadirlo al gráfico. Inmediatamente después veremos todas las operaciones, entradas y salidas, reflejadas en nuestro gráfico.
Backtesting de la estrategia en TradingView
TradingView nos permite realizar tests automáticos en su plataforma proporcionándonos todo tipo de información sobre los resultados.
Para ello, como hemos dicho en la sección anterior, debemos añadir nuestra estrategia al gráfico y dirigirnos a la pestaña «Simulador de estrategias«.
El objetivo de este artículo no es profundizar en esta potente funcionalidad de TradingView (lo haremos más adelante), pero veamos algunos datos que nos ofrece.
En la imagen de abajo vemos los resultados que arroja el simulador con nuestra estrategia del estocástico en el valor «Scorpio Tankers».
Tras un total de 34 operaciones realizadas, el beneficio neto ha sido del -0,08%, con un winrate del 61,76% (esto indica que la pérdida media es bastante superior a la ganancia media), el profit factor de 0,998 y el drawdown máximo de un 18,57%.
Obviamente, no es posible evaluar una estrategia con tan solo 34 operaciones en un solo activo, necesitamos un volumen de operaciones mucho mayor en una muestra representativa del universo de activos al que estamos atacando.
Apliquemos la estrategia a uno de los valores favoritos entre los traders, Tesla:
Tras 37 operaciones en el gráfico diario, obtenemos un 57,82% de rentabilidad, con un winrate cercano al 70% y un profit factor superior de 2,697. Ganamos mucho más de lo que perdemos, pero no le sacamos provecho a las tendencias. Lo comentaremos en las conclusiones.
Conclusiones
Debemos extraer 3 conclusiones de este artículo:
ChatGPT continua creando código Pinescript versión 5 con errores. Se requiere una corrección manual a posterior. Aun así, es muy útil para partir de una base de código ya construida.
TradingView ofrece al trader una potente herramienta de backtesting de estrategias automáticas, gracias a su versatilidad y base de datos de cotizaciones históricas.
La estrategia basada en el cruce del estocástico «sufre» la naturaleza del propio estocástico: Un valor sobrevendido puede seguir bajando, y un valor sobrecomprado puede seguir subiendo si existe el suficiente «momentum».
Fíjate en la siguiente operación realizada en el gráfico de Tesla con la estrategia que hemos creado. Vende demasiado pronto. Tras la venta, el precio sigue subiendo y subiendo, hasta que la tendencia pierde su fuerza. Un punto de mejora sería, por tanto, permanecer dentro de la tendencia, con algún sistema de seguimiento de tendencia.
Otro punto de mejora obvio es la protección con stop loss. Si nos topamos con una empresa en caída libre, estamos perdidos.
A partir de aquí, si quieres copiar el código y seguir mejorando la estrategia, ¡adelante! Sería genial que compartas tus avances en los comentarios para que todos podamos ver la evolución.
Y hasta aquí el artículo de esta semana, espero que te haya sido muy útil y nos leemos en el próximo.
Hasta entonces, ¡que tengas un feliz trading!
Me gusto y me ha servido, le he agregado una EMA de 200 periodos y tomo en cuenta short y long tomando como referencia la EMA por si el precio está por arriba de la EMA, solo long’s y viceversa, muchas gracias, aun falta mejorar y quisiera saber como declarar las alertas para usarlas después en Binance. o conectarlo directamente.
Gracias.
¡Hola Carlos!
Me alegra que te haya servido el artículo 🙂 Tomo nota de tu propuesta.
Un saludo.
¡Hola a todos!
Estoy explorando una idea similar y me gustaría enfocarme en lograr una rentabilidad alta. Hasta ahora, he probado diferentes estrategias, pero me interesa conocer cómo les ha ido a ustedes con sus propias estrategias. Entiendo que no existe una garantía del 100%, pero sé que podemos alcanzar niveles altos de acierto. Estoy ansioso por escuchar sus experiencias y agradezco enormemente que compartan toda esta información.
¡Gracias!
¡¡Qué interesante!! La verdad es que ChatGPT abre muchísimas nuevas oportunidades que aplicar al trading. Gracias por compartir.
El hecho de que ChatGPT pueda analizar datos y tendencias del mercado para generar ideas de estrategias es realmente impresionante. La capacidad de procesar grandes volúmenes de información y generar análisis en lenguaje natural puede ser una ventaja significativa para los traders en la toma de decisiones informadas.