整个代码策略语法检测通过,但是只要加载后启动交易就报委托 和非交易时段委托失败,所以就增加了交易时段的判断和忽略历史自动交易标志防止策略加载时因扫描到 A_SendOrder 而报错。 但是一加载还是一样报错, 按理说这么设置就不应该在非交易时段触发委托才对。 是我的想法不对吗? 请问 A函数模式下应该怎么处理加载策略时样本历史数据中的信号?
Events
OnInit()
{
// 初始化
Cost0=0; Qty0=0; SlotStatus0=0; PendingFillQty0=0; PendingFillAmount0=0; PendingOrderId0=0; PendingFlag0=0;
FallFlag = 0;
LastAuthBar = -1;
LastOpenBar = -1;
// 获取当前系统时间
TimeStamp nowTime = CurrentTime(1);
Bool isNowTrading = False;
// 时间段:9:00-11:30, 13:30-15:00,21:00-23:00
If ((nowTime >= 0.090000 And nowTime <= 0.113000) Or (nowTime >= 0.133000 And nowTime <= 0.150000))
isNowTrading = True
If (nowTime >= 0.210000 And nowTime <= 0.230000) isNowTrading = True;
AllowTrading = isNowTrading;
// 添加忽略自动交易标志,防止策略加载时因扫描到 A_SendOrder 而报错
AddTradeFlag(Enum_Trade_Ignore_Buy);
AddTradeFlag(Enum_Trade_Ignore_Sell);
AddTradeFlag(Enum_Trade_Ignore_SellShort);
minMove = Data0.MinMove;
priceScale = Data0.PriceScale;
tickSize = minMove * priceScale;
LogTimeStr = DateTimeToString(Data0.Time);
If (Not AllowTrading)
}
OnReady()
{
// 清除忽略标志,恢复自动交易能力
ClearTradeFlag(Enum_Trade_Ignore_Buy);
ClearTradeFlag(Enum_Trade_Ignore_Sell);
ClearTradeFlag(Enum_Trade_Ignore_SellShort);
}