Construye tu primera estrategia Pine: walkthrough de cruce MA

Publica tu primer strategy() con Golden/Death Cross vía Strategy Builder — luego Editor y Strategy Tester.

📖 6 min read

📝 1,051 words

🏷️ Pine Script and TradingView

Compartir este artículo:

La estrategia más pequeña que no te miente

Una regla del formulario corresponde a las líneas concretas que produce en el archivo generado.regla del formularioRSI(14) cruza 30líneas generadas
Una regla y las líneas que le pertenecen. El generador se basa en reglas: el mismo formulario produce siempre las mismas líneas.

Casi todos los tutoriales de primera estrategia empiezan con strategy("Mi estrategia") porque es corto. Esa versión informa de beneficios en un mercado que no cobra por operar, y la costumbre cuesta desaprenderla. Cuatro argumentos extra lo arreglan.

pine
//@version=6
strategy("Primera estrategia", overlay = true,
    initial_capital = 10000.0,
    commission_type = strategy.commission.percent,
    commission_value = 0.1,
    slippage = 3,
    default_qty_type = strategy.fixed,
    default_qty_value = 1)

fastLen = input.int(20, "Periodo MA rápida", minval = 1)
slowLen = input.int(50, "Periodo MA lenta", minval = 1)

fast = ta.sma(close, fastLen)
slow = ta.sma(close, slowLen)

if ta.crossover(fast, slow)
    strategy.entry("Long", strategy.long)

if ta.crossunder(fast, slow)
    strategy.close("Long")

plot(fast, "Rápida", color = color.blue)
plot(slow, "Lenta", color = color.orange)

Esa es una estrategia completa y honesta. Todo lo que sigue explica por qué cada línea es como es.

Por qué las llamadas al indicador están fuera del if

fast y slow se calculan en el nivel superior, no dentro de las condiciones. No es cuestión de estilo. En v6 los operadores and y or evalúan de forma perezosa [2], así que una llamada ta.* colocada tras una condición falsa se omite en esa barra — y un indicador que no se ejecutó en cada barra deja de tener un historial continuo.

Sacarlas arriba es la solución, y es el defecto más común en Pine generado por IA y copiado. El detalle está en los cambios de v6 que no dan error.

Por qué los periodos son input.int y no variables

ta.sma() quiere su periodo como simple int, y cualquier cosa calculada a partir del precio sería series, que está más arriba en la jerarquía de cualificadores y por tanto se rechaza [3]. input.int() produce un input int, que es más débil y se acepta. Este es el error que confunde a todo el mundo una vez — por qué Pine es difícil explica qué necesita realmente el motor.

minval = 1 tampoco es decorativo: un periodo de cero o negativo no tiene sentido, y restringirlo en la declaración sale más barato que gestionarlo en la lógica.

Por qué strategy.fixed y no porcentaje de capital

strategy.fixed opera un tamaño constante, así que la curva de capital no compone [1]. strategy.percent_of_equity compone, lo que hace que una ventaja mediocre parezca espectacular en un backtest largo.

Para una primera estrategia estás preguntando «¿funciona esta idea?», no «¿en qué se habría convertido esto?». El tamaño fijo responde a la primera y es la prueba más difícil de superar.

Por qué strategy.close() en lugar de un precio de salida

La salida aquí es la señal contraria, no un stop ni un objetivo. Eso mantiene la primera versión en una sola decisión — cuándo estar dentro — en lugar de tres. Los stops y objetivos traen consigo la regla del emulador sobre qué nivel tocó primero una barra, y conviene entenderla antes de depender de ella: gestión de riesgo.


Seis decisiones que acabas de tomar sin saberlo

Una primera estrategia que funciona responde a unas seis preguntas que nunca te hicieron. Todas son valores por defecto, todas cambian tus resultados, y ninguna es visible en el código que escribiste.

PreguntaQué se decidió por tiDónde
¿Cuántas posiciones pueden estar abiertas a la vez?unapyramiding vale 1 por defecto [1]la declaración
¿Se aplica margen? desde v6 — margin_long y margin_short valen 100 [2]la declaración
¿Cuándo se ejecuta realmente la orden?en la apertura de la barra siguiente, no al cierre de la barra de señalel emulador
¿Cuánto historial se prueba?todo el que permita tu plan de cuenta [4]tu suscripción
¿Para qué temporalidad es esta estrategia?la del gráfico al que la adjuntasteel gráfico
¿Para qué instrumento está calibrado el slippage?el que probaste — un tick mide distinto en otro sitionada lo registra

Los dos que llevan dinero

pyramiding vale 1 por defecto [1]. Así que cuando tu condición de entrada se cumple otra vez con una posición abierta, no pasa nada. Normalmente es lo que quieres, y es también la respuesta a «¿por qué no apareció mi segunda entrada?»: la condición estaba bien; la declaración la rechazó en silencio.

Ahora se aplica margen. Desde v6, margin_long y margin_short valen 100 por defecto, y una estrategia que necesita más dinero del disponible no abre la entrada [2]. Una estrategia portada desde v5 tomará por tanto menos operaciones: sin error, solo una lista más corta. El valor por defecto de v6 es el más honesto de los dos, y merece conservarse.

El que no es un valor por defecto en absoluto

Nada en Pine registra para qué instrumento o temporalidad se construyó una estrategia. Lo decide el gráfico, y el gráfico lo puede cambiar cualquiera después.

Por eso slippage = 3 es una afirmación sobre un instrumento y no un ajuste: el slippage se cuenta en ticks, y un tick no mide lo mismo en dos símbolos. Mueve el script a otro mercado y ese número significa otra cosa en silencio — la razón más común de que una estrategia sólida deje de funcionar, y la menos discutida: por qué fallan los scripts copiados.

Escribe el instrumento y la temporalidad previstos en un comentario al principio. Cuesta una línea y es el único sitio donde esa información puede vivir.

Qué cambiar primero, una vez que funciona

En este orden, porque cada uno puede volver irrelevante al siguiente:

  1. Los costes, si no lo has hecho ya — todo lo demás se mide a través de ellos
  2. El rango de fechas, a uno que no hayas elegido porque se veía bien
  3. Un segundo instrumento, que prueba si construiste una estrategia o ajustaste un mercado
  4. Los parámetros, al final — y si pruebas varios, cuántos probaste forma parte de tu resultado: por qué importa

Casi todo el mundo hace esto en el orden exactamente inverso, y por eso casi todas las primeras estrategias se ven excelentes y no sobreviven al contacto con un segundo símbolo.



Tactix AI — Studio vs Guide

Tactix AI es la marca del asistente de AlfaTactix (abrir Tactix AI).

  • Tactix Studio convierte una descripción de estrategia en una frase en un borrador de Timeframe, Señales, Filtros y Riesgo en el Strategy Builder visual. Revisas y editas cada campo antes de que Code Generator escriba MQL5 o Pine Script.
  • Tactix Guide explica el paso en el que estás — qué rellenar, qué significa un control o cómo formular una regla — sin volcar código sin probar.

Es automatización form-first: el LLM no sustituye a Code Generator, y conservas límites de plan y validación en tiempo real.

Preguntas frecuentes

Cruce MA en BuilderEditorTester. Playbook MA.

No hace falta. Sin código.

H1 EURUSD. Riesgo.

UNSUPPORTED.