Veo el error 'Se alcanzó el límite de Orden (9000)'
Este error significa que la estrategia colocó más órdenes, o cerró más operaciones, que el número máximo permitido. Estas limitaciones varían según el plan y permiten a nuestros servidores trabajar de forma más eficiente.
Para evitar este error, puede utilizar el parámetro trim_orders en la función strategy(). Con este parámetro establecido en true, cada nueva orden aparece en la Lista de operaciones, y se elimina la orden más antigua por encima del límite de la orden.
Aquí hay un ejemplo:
//@version=5
strategy("My strategy", overlay = true, margin_long = 100, margin_short = 100, trim_orders = true)
if bar_index % 2 == 0
strategy.entry("My Long Entry Id", strategy.long)
if bar_index % 2 != 0
strategy.entry("My Short Entry Id", strategy.short)
Alternativamente, puede limitar las fechas en las que una estrategia coloca órdenes comprobando un rango de tiempo en la condición de la orden. El siguiente script de ejemplo establece un intervalo de tiempo para colocar órdenes comprobando si el tiempo de la barra actual se encuentra entre dos marcas de tiempo.
//@version=5
strategy("My strategy", overlay = true, margin_long = 100, margin_short = 100)
enableFilter = input(true, "Enable Backtesting Range Filtering")
fromDate = input.time(timestamp("20 Jul 2023 00:00 +0300"), "Start Date")
toDate = input.time(timestamp("20 Jul 2099 00:00 +0300"), "End Date")
tradeDateIsAllowed = not enableFilter or (time >= fromDate and time <= toDate)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if longCondition and tradeDateIsAllowed
strategy.entry("Long", strategy.long)
if shortCondition and tradeDateIsAllowed
strategy.entry("Short", strategy.short)