我看到“已达到订单限制(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)
Java或者,您可以通过检查订单条件中的时间范围来限制策略下单的日期。以下示例脚本通过检查当前K线的time是否在两个timestamps之间来确定下单的时间范围。
//@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)
Java