策略运行起来,下单函数报单价始终跟代码预期不一致
具体表现为:委托价格远高于收盘价,甚至高于最高价
麻烦老师看看是哪里的问题:
代码如下:
oninit函数中:
Bool ret = data[7].SetOrderPriceOffset(0);//委托价格偏移为0
OnBar函数下单部分:
if(buy_batch1 && Data[7].MarketPosition == 0)
{
Data[7].buy(1, Data[7].Close - 8, Enum_Signal_UnCorrectPrice);
Data[7].buy(1, Data[7].Close - 11, Enum_Signal_UnCorrectPrice);
}
策略设置如下图所示:


期间尝试去掉
Bool ret = data[7].SetOrderPriceOffset(0);//委托价格偏移为0
手工设置取消勾选委托价格偏移,委托价格还是会偏移很多。
谢谢老师
更加有效的办法,把你的测试代码和环境,完整地告诉我们,代码你可以去掉核心逻辑,或者用一个示例的逻辑来代替,只要别人也能复现问题,自然就有人能帮你找到问题。
好的,我看看怎么弄,发不了附件,各种调用函数加起来上快千行代码了。
看看委托成交列表里的,委托价和理论价都是什么,和哪个价格比较相似。
成交列表里:委托价和理论价是一致的,K线上的buy提示价格才是正确的。委托价和理论价不正确。


对了,oninit里面的行情有订阅函数,不知道会不会有影响:
UnsubscribeBar(7);
layers_C_M1[7] = SubscribeBarCounts(trade_contract, "1m", 5000);
// 委托价格偏移为0
Bool ret = data[7].SetOrderPriceOffset(0);
Data[0].Show();
Data[1].Hide();
Data[2].Hide();
Data[3].Hide();
Data[4].Hide();
Data[5].Hide();
Data[6].Hide();
Data[7].Show();
=================================================
昨天在不使用Bool ret = data[7].SetOrderPriceOffset(0);的情况下,将偏移设置为0,委托加偏移仍然很大。
