我看到“已達到訂單限制 (9000)”錯誤

此錯誤代表該策略下的訂單或平倉的交易數量超過了允許的最大數量。這些限制因方案而異,使我們的伺服器能夠更有效地工作。

為了避免此錯誤,您可以在strategy()函數中使用trim_orders參數。將此參數設為 true 時,每個新訂單都會出現在交易清單中,高於訂單限制的最舊訂單將被刪除。

 

這裡有一個範例:

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

或者,您可以透過檢查訂單條件中的時間週期來限制策略下訂單的日期。以下範例腳本透過檢查目前K線的時間是否在兩個時間戳記之間來建立下單的時間週期。

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