平多和平空,空单能够平仓,多单能报单但不能成交。一模一样的指令。是啥原因造成的。
successD = A_SendOrderEx(currentSymbol,Enum_Sell, Enum_Exit, mypos.longCanSellVolume,Close/rollover(), ordersD,"核平多1非主力1" , "核平多非主力1");
successK = A_SendOrderEx(currentSymbol,Enum_Buy, Enum_Exit,mypos.shortCanCoverVolume,Close/rollover(), ordersD, "核平空非主力1" , "核平空非主力1");
 
                      

现价3644,你报3665
能成交?
是否成交跟你说的没关系
买平能成,因为价格到了
卖平没成,因为对手价3644,你的报单3665-3666,价格没到当然成不了
既然用了A函数交易
理应用Q行情函数取最新、或开盘价、或卖盘价其中之一
并做一定跳数偏移
取决于你要快速成交还是采用挂单模式
Close是图表函数。。。
撤单我做了个延时大概40秒左右程序撤单的,否则它自己不能撤单会一直挂着。

委托列表往右边拉,看看谁撤的,撤单原因是什么
撤单我做了个延时大概40秒左右程序撤单的,否则它自己不能撤单会一直挂着。
//获取未完成的报单数组
Bool ret = A_GetUnFillOrderIDs(ordersD, "", 0);
Integer i;
For i = 0 To GetArraySize(ordersD) - 1
{
Print("accountIndex:" + A_AccountID(0) + ",orderId:" + Text(ordersD[i]));
ret = A_DeleteOrderEx(ordersD[i]);//撤指定报单索引的委托单
Print("A_DeleteOrderEx:撤单D" + IIFString(ret, "True", "False"));
}
//Bool ret = A_Sell(currentSymbol,mypos.longCanSellVolume,Close/rollover(), orders, "核平多1非主力", "核平多非主力");
//Bool ret = A_SendOrder(Enum_Sell, Enum_Exit, mypos.longCanSellVolume, Close/rollover(), currentSymbol);
successD = A_SendOrderEx(currentSymbol,Enum_Sell, Enum_Exit, mypos.longCanSellVolume,Close/rollover(), ordersD,"核平多1非主力1" , "核平多非主力1");
我试了3种方式都是多单平不了,空单没问题。很奇怪。
跟价格计算有关吗?
价格我取值用过,Close,Close/rollover(),Q_AskPrice这3种参数都不行。
你自己撤的单?
所以你的问题是,你的买入平仓单发出去,能成交,但是卖出平仓单发出去不能成交,是吗?
如果是这个问题
首先,能不能成交,跟你是买入还是卖出,没有关系,不是说买入成交了,卖出也应该成交,两者毫无关系。
其次,能不能成交,众所周知,只看两点,价格优先,时间优先。你的买入价格够高,卖出价格够低,成交的概率就大。不能成交,那就看你委托价格合适吗?
A_SendOrderEx函数执行以后只是生成一个委托单,不是保证能成交,这个函数没有问题,该做的都做了