Saya lihat ralat 'Had pesanan (9000) dicapai'

Ralat ini bermaksud strategi meletakkan lebih banyak pesanan atau menutup lebih banyak pesanan daripada had maksimun. Batasan ini adalah berlainan untuk pelan-pelan dan membolehkan pelayan-pelayan kami bekerja dengan lebih efisen. 


Untuk mengelakkan ralat ini dari terjadi, anda boleh menggunakan parameter trim_orders dalam fungsi strategy(). Dengan parameter ditetapkan kepada true, setiap pesanan baharu akan muncul dalam Senarai Dagangan dan pesanan paling awal di atas had pesanan akan dibuang.

Di sini satu contoh:

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

Cara lain, anda boleh menghadkan tarikh-tarikh di mana satu strategi meletakkan pesanan dengan memeriksa julat masa dalam keadaan pesanan (order condition). Contoh skrip berikut menunjukkan julat masa untuk meletakkan pesanan dengan memeriksa sama ada time untuk bar semasa adalah antara dua 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)