Agregué con éxito la estrategia en mi gráfico, pero no ejecuta ninguna orden.

Si las pestañas «Lista de operaciones» y «Visión general» del Probador de estrategias muestran «Sin datos» después de haber añadido una estrategia al gráfico, es probable que no simule ninguna orden, lo que provoca que no haya datos para rellenar las pestañas. Si su script no está generando órdenes, puede deberse a alguna de las siguientes razones:

El script no está clasificado como estrategia o no utiliza comandos que creen órdenes

El Backtesting con el Probador de estrategias solo funciona con estrategias Pine Script®, que utilizan la función strategy() para su declaración. Los scripts declarados con indicator() o library() no pueden interactuar con el módulo Probador de estrategias.

Los scripts declarados como estrategias deben utilizar comandos de colocación de órdenes `strategy.*` (por ejemplo, strategy.order() o strategy.entry()) para simular órdenes y mostrar datos en el Probador de estrategias, independientemente de cualquier otra señal de compra/venta que el autor de un script pueda haber incluido en el código.

La estrategia no tiene suficiente capital para abrir una posición

Para que una estrategia entre en una posición, debe tener suficiente dinero para comprar el número especificado de contratos/lotes/acciones/unidades. No entrará en una operación si no tiene suficiente capital para cubrir el coste. Por ejemplo, si el capital inicial de una estrategia es de 1000 USD y el tamaño de la orden es de un contrato, no podrá entrar en la posición a menos que el precio del activo caiga por debajo de 1000 USD, ya que no puede permitirse la operación completa. Las estrategias siempre intentarán comprar el número especificado de contratos/acciones/lotes/unidades y nada menos.

Nota importante sobre el backtesting de futuros: 

Los símbolos de futuros suelen tener lo que se conoce como Unidad de contrato (representada como el Valor del punto en TradingView y accesible en Pine a través de la variable syminfo.pointvalue). Al igual que otros símbolos, el precio bruto en el gráfico representa el precio de una unidad de la materia prima negociada. Sin embargo, los contratos de futuros tienen una cantidad fija que cada uno representa, por lo que no suele ser posible la compra de una sola unidad. Para calcular el capital necesario para un contrato, multiplique el precio del gráfico por el Valor en puntos.

Para demostrar los efectos del Valor en puntos sobre las estrategias que operan con símbolos de futuros, veamos el símbolo CME_MINI:ES1!, que representa el contrato de futuros ES con la mejor liquidez y tiene un Valor en puntos de 50:

En el ejemplo siguiente, la estrategia que hemos añadido al gráfico entró en una posición exactamente a 4000 USD y salió a 4500 USD. La cantidad real de dinero invertida en el contrato al precio de entrada fue de 4000 USD multiplicada por el valor en puntos de 50, es decir, 200 000 USD. Cuando la estrategia cerró su posición al precio de salida, la cantidad recibida fue de 4500 USD * 50 = 225 000 USD, resultando en un beneficio de 25 000 USD, que podemos confirmar viendo la columna «Beneficio» de la pestaña «Lista de operaciones» en el Probador de estrategias:

Si la estrategia tuviera un valor de Capital inicial inferior a 200 000 USD en este caso, no habría podido colocar la orden ya que no podría permitirse el precio de entrada, que era 50 veces el precio mostrado en el gráfico. Para simular la posición, debemos aumentar el Capital inicial o bajar los valores de Margen largo/corto para que la estrategia pueda permitírselo.

La estrategia devuelve un error de ejecución

Si una estrategia encuentra un problema durante sus cálculos, generará un error de ejecución y mostrará un signo de exclamación rojo en la esquina superior izquierda del panel gráfico que contiene la estrategia. Los errores de ejecución impiden que el script continúe con los cálculos, por lo que no puede simular órdenes. Los diferentes errores de ejecución en Pine tienen varias causas y posibles soluciones. Pulsando sobre el signo de exclamación se mostrará el mensaje de error del script.

No se cumplieron las condiciones necesarias para colocar las órdenes de la estrategia

 

Una posible causa de que una estrategia no muestre ningún dato es que ninguna condición activó una orden en todo el rango de prueba. En este caso, no habría entradas en el gráfico porque no habría órdenes que ejecutar. Los usuarios pueden arreglar esto cambiando las condiciones en el código fuente de una estrategia. A menudo puede ser útil inspeccionar visualmente la historia de las condiciones de orden de una estrategia trazándolas en el gráfico.

El siguiente script utiliza la función plotshape() de Pine para trazar cruces azules y rojas sobre las barras cuando se producen las condiciones de compra y venta, permitiéndonos inspeccionar su historia en el gráfico:

//@version=6
strategy('My Strategy', overlay = true)

longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))

if longCondition
    strategy.entry('Long', strategy.long)

plotshape(longCondition, color=color.new(color.blue, 0))

shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))

if shortCondition
    strategy.entry('Short', strategy.short)

plotshape(shortCondition, color=color.new(color.red, 0))

Para más información sobre este tema, consulte la página sobre depuración de nuestro Manual del usuario.

Las Propiedades de la estrategia son incorrectas

Cada estrategia tiene varios parámetros que rigen sus reglas de apertura de órdenes. Los autores pueden establecer estos parámetros desde el código fuente de una estrategia, y los usuarios pueden anularlos con las entradas de la pestaña «Propiedades» de la configuración de la estrategia.

NOTA: Hay varios lugares en el código fuente de una estrategia donde los usuarios pueden establecer el número de contratos/acciones/lotes/unidades para sus órdenes:

  • Los parámetros de la función strategy() permiten a los usuarios establecer la cantidad y el tipo de operación por defecto, lo que establece los valores por defecto en la pestaña «Propiedades». Los usuarios pueden anular estos valores ajustando las entradas «Tamaño de la orden».
  • Los comandos de colocación de órdenes que producen órdenes de entrada, como strategy.entry(), pueden establecer la cantidad de operación orden por orden. En este caso, los cambios en la entrada de la pestaña «Propiedades» no afectarán al tamaño de la orden de la estrategia. 

Los usuarios deben asegurarse de especificar correctamente los tamaños de las órdenes de sus estrategias. Para añadir a la sección «La estrategia no tiene suficiente capital para abrir una posición» anterior, debe tener en cuenta que:

  • Si el «Tipo de orden» de una estrategia se establece en «Contratos» (equivalente a strategy.fixed como `default_qty_type` en el código fuente), el tamaño de la orden debe ser superior a 1 para la mayoría de los símbolos. Algunas criptomonedas facilitan tamaños fraccionarios. Por ejemplo, un tamaño de orden de 0,1 es válido para BTCUSD pero no para AAPL o EURUSD.
  • The order size must be positive; negative numbers will cause runtime errors, and a value of 0 will have no effect.
  • El tamaño total de la posición (número de contratos) no puede superar 1e12. Las estrategias no simularán nuevas órdenes si el tamaño de la posición supera este número.