在实盘运行中,发现图表价与实际提交委托价相差很大的问题。
图表价格是4158,实际提交委托价位4133
下单部分代码
原代码:
// 开空单的条件
If( Close < ma1Value and rocCalc[1] < 0 And Low <= dnBand[1] And Low < LowestValue[1] And MarketPosition != -1){
buyPrice = Min(Open,dnBand[1]);
Commentary(\"开盘价:\"+text(Open)+\",下轨价:\"+text(dnBand[1])+\",购买价格:\"+text(buyPrice));
SellShort(lots,buyPrice);
}
实际上我也找到部分问题所在
修正后的代码:
// 开空单的条件
If( Close[1] < ma1Value And Low <= dnBand[1] And Low < LowestValue[1] And MarketPosition != -1){
buyPrice = Min(Open,dnBand[1]);
buyPrice = Min(buyPrice,LowestValue[1]); // -------------->把这个打开,图表价格就和实际成交的委托价格相符合
Commentary(\"开盘价:\"+text(Open)+\",下轨价:\"+text(dnBand[1])+\",购买价格:\"+text(buyPrice));
SellShort(lots,buyPrice);
}
我目前发现可能出现的问题
1. Close < ma1Value 价格出现闪烁,但是根据当前画线数据来看,不存在信号闪烁. // 不是本次价格偏差的原因。
2. 判断条件中 Low < LowestValue[1] ,但是实际下单为buyPrice = Min(Open,dnBand[1]);,存在偷价,增加buyPrice = Min(buyPrice,LowestValue[1]); 即可,我发现,如果价上这个代码,实际委托价和图表中的价格就相对一致了。
通过检查发现,出现信号的时候,价格应当是4133,但是我委托价填写的是4158,但是实际报单依然以4133来提交委托的,所以我想问,
所以,假如我做空,现在最低价是4133,出信号的时候 我委托4158空, SellShort(lots,4158) 这个可以吗? 还是说,你们会自动改价格为 SellShort(lots,4133)转换为代码就是:
If(low <4133 And MarketPosition != -1)
{
SellShort(1,4158);
}
我想问,不考虑价格偏移的情况,此时委托价到底是多少,到底是4158还是4133
我理解的SellShort函数,就是以填写的价格提交委托,但是目前看又不是的,咨询客服,客服说,出现信号的时候是4133,所以以4133作为委托价,然后再价格偏移报单。
在实盘运行中,发现图表价与实际提交委托价相差很大的问题。
图表价格是4158,实际提交委托价位4133
下单部分代码
原代码:
// 开空单的条件
If( Close < ma1Value and rocCalc[1] < 0 And Low <= dnBand[1] And Low < LowestValue[1] And MarketPosition != -1){
buyPrice = Min(Open,dnBand[1]);
Commentary(\"开盘价:\"+text(Open)+\",下轨价:\"+text(dnBand[1])+\",购买价格:\"+text(buyPrice));
SellShort(lots,buyPrice);
}
实际上我也找到部分问题所在
修正后的代码:
// 开空单的条件
If( Close[1] < ma1Value And Low <= dnBand[1] And Low < LowestValue[1] And MarketPosition != -1){
buyPrice = Min(Open,dnBand[1]);
buyPrice = Min(buyPrice,LowestValue[1]); // -------------->把这个打开,图表价格就和实际成交的委托价格相符合
Commentary(\"开盘价:\"+text(Open)+\",下轨价:\"+text(dnBand[1])+\",购买价格:\"+text(buyPrice));
SellShort(lots,buyPrice);
}
我目前发现可能出现的问题
1. Close < ma1Value 价格出现闪烁,但是根据当前画线数据来看,不存在信号闪烁. // 不是本次价格偏差的原因。
2. 判断条件中 Low < LowestValue[1] ,但是实际下单为buyPrice = Min(Open,dnBand[1]);,存在偷价,增加buyPrice = Min(buyPrice,LowestValue[1]); 即可,我发现,如果价上这个代码,实际委托价和图表中的价格就相对一致了。
通过检查发现,出现信号的时候,价格应当是4133,但是我委托价填写的是4158,但是实际报单依然以4133来提交委托的,所以我想问,
所以,假如我做空,现在最低价是4133,出信号的时候 我委托4158空, SellShort(lots,4158) 这个可以吗? 还是说,你们会自动改价格为 SellShort(lots,4133)转换为代码就是:
If(low <4133 And MarketPosition != -1)
{
SellShort(1,4158);
}
我想问,不考虑价格偏移的情况,此时委托价到底是多少,到底是4158还是4133
我理解的SellShort函数,就是以填写的价格提交委托,但是目前看又不是的,咨询客服,客服说,出现信号的时候是4133,所以以4133作为委托价,然后再价格偏移报单。
写了很多 但是不知所云
“我理解的SellShort函数,就是以填写的价格提交委托,但是目前看又不是的,咨询客服,客服说,出现信号的时候是4133,所以以4133作为委托价,然后再价格偏移报单。”
默认状态下,图表上信号的价格,由sellshort等函数的第二个参数决定,然后实盘自动交易发单以图表上信号的价格决定。这种情况下,sellshort价格参数 = 图上信号价格 = 委托价格
如果你开启了委托偏移,那么图上信号价格还是等于函数的价格参数,但是委托价格和它们就无关了,委托价格以报单时刻的盘口对手价为基准,比如买入就看卖一,卖出就看买一。
如果你不仅开启了委托偏移,还设置了点数,比如10跳,那么委托价格就等于盘口对手价加对应的跳数,买入就是卖一加十跳,卖出就是买一减10跳。
我大致理解你的意思了.但是不清楚对不对,我用代码说明一下
If(low <4133 And MarketPosition != -1)
{
SellShort(1,4158);
}
同样是上面这个代码.
场景一:【未开启委托偏移】
low = 4122,满足开空条件,则以挂单价 SellShort(1,4158); 提交委托单。且,图表中价格为4158.
场景二:【开启委托偏移,设置偏移价格为10】
low = 4122, 此时,最新价格为4122,由于开启了委托偏移,则在最新价格4122对手价上减去10,比如4112的价格进行开空(而不是在委托价4158上偏移开空)。
我理解的委托偏移,是指在图表的委托价格上再进行偏移,而实际上的委托偏移,是在出信号的那一刻的最新价格的基础上进行委托偏移。我这样的理解没错吧?