在该指令Sell(0, Value(fRollover[0][1]), Enum_Signal_UnCorrectPrice);
Buy(Lots, Value(fRollover[0][2]), Enum_Signal_UnCorrectPrice);
教材说:”1)对于交易信号产生的这根bar,Value(fRollover[0][1])和Value(fRollover[0][2])可能超出BAR的价格范围,所以需要增加Enum_Signal_UnCorrectPrice提醒系统处理这样意外。
2)因为采用了Enum_Signal_UnCorrectPrice,所以图表上的信号并不会产生真实的委托下单。所以使用这个代码处理需要配合监控器的同步功能一并使用。“
问题: 我的理解是:在实盘或者模拟下,当没超出BAR的价格范围,sell和buy指令会运行,并产生真实委托下单;而当超出BAR的价格范围,不会产生真实委托下单,而Enum_Signal_UnCorrectPrice会触发监控器的不同步,需要监控器手动处理。 请问理解对吗?
谢谢,解释非常到位
是的,可以这么理解,正常来说,图上出现信号,监控器查询到该合约产生图表信号x手,然后系统监测到图表上信号x手,报送相应委托单,成交以后,监控器查询到该合约有x手账户持仓,和图表信号匹配,亮绿灯。
uncorrectprice情况,图上出现信号,监控器查询到该合约产生图表信号x手,然后系统监测到图表上信号x手,并没有报送委托单,监控器查询到该合约没有持仓,和图表信号不匹配,亮红灯。之后,如果手动同步,或者自动同步,委托单成交以后,持仓查询正确,亮绿灯