Propiedades de la Estrategia

Cada estrategia de Pine tiene una serie de propiedades que determinan su comportamiento: 

  1. Capital Inicial
  2. Moneda Base
  3. Tamaño de la Orden
  4. Piramidación
  5. Comisión
  6. Verificar el Precio de las Órdenes Limitadas
  7. Deslizamiento
  8. Margen
  9. Recálculo 

Están disponibles en la configuración de la estrategia, en la pestaña Propiedades:

Cada uno de los parámetros especificados en las propiedades de la estrategia pueden modificarse editando los argumentos de la llamada a la función strategy() en el correspondiente script de Pine:

strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick)

Veamos cada parámetro de entrada en el menú Propiedades y su correspondiente parámetro en el lenguaje de Pine:

1 - Capital Inicial (parámetro: initial_capital) representa la cantidad de fondos iniciales disponibles para que la estrategia opere, en la moneda definida en Moneda Base. Por defecto, este valor es igual a 100.000. Es posible que tenga que aumentar este valor para que se produzcan operaciones con determinados símbolos.

2 - Moneda Base (parámetro: currency) especifica la moneda utilizada para los cálculos. Los resultados aparecen en la pestaña Probador de Estrategias (ganancias, pérdidas, reducción, etc.) se expresan en esta moneda. Las opciones disponibles son:

Por defecto, USD, EUR, AUD, GBP, NZD, CAD, CHF, HKD, JPY, NOK, SEK, SGD, TRY, ZAR. Si se selecciona la opción por Defecto, la estrategia utilizará la divisa por defecto para este símbolo y no habrá conversión de divisas.

3 - Tamaño de la Orden (parámetros: default_qty_value, default_qty_type). Esto requiere un valor y un modo de cálculo. Tenga en cuenta que los valores calculados pueden estar sujetos a restricciones debido a las cantidades mínimas negociables para el símbolo:

  • Contratos (argumento: strategy.fixed) - la estrategia entrará con el número especificado de contratos/acciones/lotes.
  • Cantidad en Moneda (argumento: strategy.cash) - la estrategia entrará con la cantidad especificada en moneda base.
  • Porcentaje de Capital (argumento: strategy.percent_of_equity) - el tamaño de las posiciones se calculará como un porcentaje del capital disponible cuando se abra la operación.

4 - Piramidación (parámetro: pyramiding) especifica el número máximo de entradas sucesivas permitidas en la misma dirección. Cuando la piramidación está desactivada, la estrategia sólo puede abrir una posición larga o corta, incluso si se cumplen las condiciones de entrada. La piramidación sólo afecta a las entradas realizadas mediante la función strategy.entry(). No tiene efecto en las órdenes creadas mediante strategy.order().

5 - Comisión (parámetros: tipo_comisión, valor_comisión). Es la cantidad que se paga comisiones por cada operación. Se debe proporcionar un valor y un modo de cálculo. Tenga en cuenta que la comisión se aplica tanto a las entradas como a las salidas, y que cuando se utiliza un porcentaje, la comisión calculada variará con el valor de la transacción:

  • Porcentaje del Valor Transaccionado (argumento: strategy.commission.percent) - impone una comisión a cada orden igual al porcentaje especificado.
  • Moneda por Contrato (argumento: strategy.commission.cash_per_contract) - impone una comisión a cada contrato.
  • Moneda por Orden (argumento: strategy.commission.cash_per_order) - impone una comisión a cada orden.

6 - Verificar el Precio de las Ordenes Limitadas (parámetro: backtest_fill_limits_assumption) hace que las condiciones para entrar en una posición utilizando órdenes de límite sean más estrictas. Por defecto, este valor es 0, es decir, las órdenes limitadas se ejecutan en los datos históricos en cuanto se alcanza el precio indicado en la orden. Si el parámetro es distinto de cero, las órdenes limitadas pueden entrar en una posición dentro de la barra sólo si el precio de mercado ha superado el nivel de la orden limitada en el número de ticks especificado.

7 - Deslizamiento (parámetro: slippage) especifica el valor en ticks que se añade al precio de ejecución de las órdenes de mercado o stop. Se puede utilizar para tener en cuenta el spread.

8 - Margen para posiciones largas/cortas (parámetros: margin_long, margin_short) especifica el margen para cada operación, es decir, el porcentaje de la posición que el trader debe financiar. Por ejemplo, si el margen para posiciones largas se establece en 25 %, el trader tiene que tener fondos suficientes para cubrir el 25 % de la operación abierta y pueden gastar potencialmente hasta el 400 % de su capital en cada operación. Si una operación se ha abierto y empieza a perder dinero hasta el punto en que los fondos del trader no son suficientes para cubrir su parte de la operación, se produce un Margin Call y se liquida forzosamente una parte de la posición original. Puede obtener más información sobre esta función y cómo se calcula en este artículo del Centro de ayuda.

9 - Las opciones de Recálculo especifican la frecuencia con la que se debe recalcular la estrategia. Por defecto, la estrategia se recalcula al cierre de cada barra, pero utilizando las opciones de abajo, también se puede recalcular:

  • Después de que se Complete la Orden (parámetro: calc_on_order_fills) - permite que la estrategia realice un cálculo adicional de la orden dentro de la barra inmediatamente después de que se complete una orden. Ese cálculo adicional ocurre tanto en las barras históricas como en las de tiempo real.
  • En Cada Tick (parámetro: calc_on_every_tick). Por defecto, las estrategias sólo calculan al cierre de las barras en tiempo real. Este parámetro permite que la estrategia calcule en cada actualización de las barras en tiempo real, como lo haría un estudio. Tenga en cuenta que los datos de los ticks se pierden cuando se actualiza el gráfico, por lo que las estrategias que utilicen esta opción volverán a pintarse. Este parámetro no afecta al comportamiento de las estrategias en barras históricas. También tenga en cuenta que las estrategias que utilicen esta opción no mostrarán resultados realistas en las barras históricas, ya que no contienen datos de ticks.

10 - Cumplimentar órdenes:

  • Usar la lupa de barras (parámetro: use_bar_magnifier): ordena al Emulador de brokers que utilice precios más precisos y de menor intervalo de tiempo durante el backtesting del historial para conseguir resultados más realistas. Lea más sobre esta función en el Centro de ayuda.
  • Al cierre de la barra (parámetro: process_orders_on_close). Si es verdadero, la estrategia genera un intento adicional de ejecutar órdenes después de que se cierre una barra y se completen los cálculos de la estrategia. Si las órdenes son de mercado, el emulador de brokers las ejecuta antes de la apertura de la siguiente barra. Si las órdenes dependen del precio, solo se ejecutarán si se cumplen las condiciones de precio. Esta opción es útil si desea ejecutar las órdenes en el mismo momento en que se crean: por defecto, las órdenes se crean en el cierre de la barra actual y se ejecutan en la apertura de la siguiente; con esta opción activada, se ejecutarán en el mismo cierre en que se crea la orden. Tenga en cuenta que entrar en la posición en el mismo tick en el que se crea la orden puede ser engañoso porque eso no sería posible de lograr en el trading real.
  • El uso de OHLC estándar (parámetro: fill_orders_on_standard_ohlc) fuerza a las estrategias que se ejecutan en gráficos Heikin Ashi a completar las órdenes usando los precios OHLC reales, para obtener resultados más realistas. Por defecto, los scripts de estrategias cumplimentan las órdenes utilizando los precios del gráfico, independientemente del tipo de gráfico. Para los gráficos Heikin Ashi, esta configuración evita el uso de precios sintéticos que pueden no alinearse con la realidad. Por ejemplo, esta estrategia que hemos aplicado al gráfico diario NASDAQ:AAPL Heikin Ashi ejecutó una orden el 25-09-2023 a un precio sintético de 175,61 USD. Sin embargo, después de activar la opción "Usando el OHLC estándar", la misma orden se ejecutó al precio estándar del gráfico de 174,20 USD.