A_SendOrderEx函数平仓问题
平多和平空,空单能够平仓,多单能报单但不能成交。一模一样的指令。是啥原因造成的。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");
委托列表往右边拉,看看谁撤的,撤单原因是什么
回复:撤单我做了个延时大概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函数执行以后只是生成一个委托单,不是保证能成交,这个函数没有问题,该做的都做了