Widzę błąd "Osiągnięto limit zleceń (9000)"
Ten błąd oznacza, że liczba zleceń, które strategia może wykonać na wykresie, osiągnęła maksymalny poziom wynoszący 9000. Ten limit został narzucony, żeby nasze serwery działały efektywniej.
Aby uniknąć tego błędu, możesz użyć parametru trim_orders w funkcji strategy(). Gdy ten parametr jest ustawiony na true, każde nowe zlecenie pojawia się na liście transakcji, a najstarsze zlecenie powyżej limitu zleceń zostaje usunięte.
Oto przykład:
//@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)
Alternatywnie, możesz ograniczyć daty, w których strategia składa zlecenia, sprawdzając przedział czasowy w warunku zlecenia. Poniższy przykładowy skrypt ustala przedział czasowy składania zleceń poprzez sprawdzenie, czy czas aktualnej świecy mieści się między dwoma znacznikami czasu.
//@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)