Eu vejo o erro 'Limite do pedido (9000) foi atingido'

Esse erro significa que a estratégia colocou mais ordens ou fechou mais operações do que o número máximo permitido. Essas limitações variam conforme o plano e permitem que nossos servidores trabalhem com mais eficiência.

Para evitar esse erro, você pode usar o parâmetro trim_orders na função strategy(). Com esse parâmetro definido como true, cada nova ordem aparece na Lista de Trades e a ordem mais antiga acima da ordem limite é removida.

Aqui está um exemplo:

//@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)

Como alternativa, você pode limitar as datas em que uma estratégia coloca ordens verificando se há um intervalo de tempo na condição da ordem. O script de exemplo a seguir estabelece um intervalo de tempo para a colocação de ordens, verificando se a hora da barra atual está entre dois timestamps.

//@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)