Saya melihat error 'Batas order (9000) telah tercapai'

Error ini berarti bahwa strategi tersebut menempatkan lebih banyak order, atau menutup lebih banyak trade, daripada jumlah maksimum yang diizinkan. Batasan ini bervariasi berdasarkan paket dan memungkinkan server kami bekerja lebih efisien.

Untuk menghindari error ini, anda dapat menggunakan parameter trim_orders dalam fungsi strategy(). Dengan parameter ini ditetapkan ke true, setiap order baru akan muncul dalam Daftar Trade, dan order terlama di atas batas order akan dihapus.

Berikut ini contohnya:

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

Alternatifnya, anda dapat membatasi tanggal saat strategi menempatkan order dengan memeriksa rentang waktu dalam kondisi order. Contoh skrip berikut menetapkan rentang waktu untuk menempatkan order dengan memeriksa apakah waktu bar saat ini berada di 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)