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");

                     

用A_SendOrderEx函数发送平仓订单后,如何获得订单状态
A_SendOrderEx 的问题
A_SendOrderEx函数下单返回False
A_SendOrderEx平单问题
A_SendOrderEx函数与Buy、Sell、BuyToCover、SellShort等函数有什么区别?
a_sendorderex函数的返回参数orderids疑问
A_SendOrderEx
如何用A函数完美解决加仓策略的平仓问题
A_SendOrderEx
输出A_SendOrderEx 订单 编号 是0 是什么问题

现价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函数执行以后只是生成一个委托单,不是保证能成交,这个函数没有问题,该做的都做了