Je vois l'erreur "La limite de l'ordre (9000) a été atteinte"
Cette erreur signifie que la stratégie a placé plus d'ordres ou clôturé plus de transactions que le nombre maximum autorisé. Ces limites varient selon le plan et permettent à nos serveurs de travailler plus efficacement.
Pour éviter cette erreur, vous pouvez utiliser le paramètre trim_orders dans la fonction strategy(). Lorsque ce paramètre est défini sur «true», chaque nouvel ordre apparaît dans la liste des transactions et l'ordre le plus ancien dépassant la limite d'ordre est supprimé.
Voici un exemple:
//@version=5strategy("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)
JavaAlternativement, vous pouvez limiter les dates auxquelles une stratégie passe des ordres en vérifiant la présence d'une plage horaire dans la condition de l'ordre. L'exemple de script suivant établit une plage horaire pour le placement des ordres en vérifiant si l'heure de la barre actuelle est comprise entre deux horodatages.
//@version=5strategy("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)
Java