Vedo l'errore 'Il limite dell'ordine (9000) è stato raggiunto'

Questo errore significa che la strategia ha piazzato più ordini o chiuso più operazioni rispetto al numero massimo consentito. Queste limitazioni variano a seconda del piano e consentono ai nostri server di lavorare in modo più efficiente.


Per evitare questo errore, è possibile utilizzare il parametro trim_orders nella funzione strategy(). Se questo parametro è impostato su true, ogni nuovo ordine viene visualizzato nell'elenco dei trade e l'ordine più vecchio che supera il limite dell'ordine viene rimosso.

Ecco un esempio:

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

In alternativa, è possibile limitare le date in cui una strategia inserisce gli ordini controllando un intervallo di tempo nella condizione dell'ordine. Il seguente esempio di script stabilisce un intervallo di tempo per l'immissione di ordini controllando se l'ora della barra corrente è compresa tra due timestamp.

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