老师您们好。昨天发了一个贴,我是想在下午14:55至14点59之间对未成交的报单进行撤单,但是用A_GetOpenOrderCount取不到未成交订单列表数。我用双均线策略测试了一下,是绑定了模拟帐户在实时环境下测试的,PRINT出来的A_OpenOrderContractCount是0,不知道什么?想再请教一下,谢谢。
以下是代码及控制台截图(因为是上午测试我时间改成了0.1110至0.1130之间):
Params
Numeric FastLength(5);// 短期指数平均线参数
Numeric SlowLength(20);// 长期指数平均线参数
Numeric pctime1(0.1110);
Numeric pctime2(0.1130);
Vars
Series<Numeric> AvgValue1;
Series<Numeric> AvgValue2;
bool pc_jing;
Events
OnReady()
{
SetBackBarMaxCount(1+Max(FastLength,SlowLength));
}
OnBar(ArrayRef<Integer> indexs)
{
if(time>pctime1 and time<pctime2)
{
PlotBool("pc_jing",pc_jing);
Integer j=0;
Integer h=0;
Print("A_OpenOrderContractCount:" + Text(A_GetOpenOrderCount));
Commentary("A_OpenOrderContractNo:" + Text(A_GetOpenOrderCount));
For j = 0 To A_GetOpenOrderCount - 1
{
Print("A_OpenOrderContractCount:" + Text(A_GetOpenOrderCount));
Commentary("A_OpenOrderContractNo:" + Text(A_GetOpenOrderCount));
Integer value = A_OpenOrderContractNo(j);
Print("A_OpenOrderContractNo:" + Text(value));
Commentary("A_OpenOrderContractNo:" + Text(value));
if(A_OrderStatus(value)==Enum_Declared)
{
A_DeleteOrderEx(value);
}
}
}
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
{
Buy(0,Open-20*MinMove * PriceScale);
}
If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
{
SellShort(0,Open-20*MinMove * PriceScale);
}
}
就是有一个问题 你有挂单吗
有的,在策略运行开始至指定查询未成交单并撤单的时间之间,我帐户透视里有确认有未成交挂单的
上午的测试我用的是10秒BAR,但是TIME是以下的写法,只写到分钟没有写到秒级别,这有影响吗?
Numeric pctime1(0.1110);
Numeric pctime2(0.1130);
我把你的代码略做了一点修改,做测试是能获取到的。
但需要提醒您的是,即时您能查询到订单的状态,也能撤单,这样图表信号和A函数处理交织在一起的写法,也不是很推荐。
原来是因为我加载的合约是主连后复权所以取不到,加载具体合约就能获取到了。所以,如果加载的是主连后复权,怎么样才能获取到未成交订单数量和未成交订单号呢?
A_GetUnFillOrderIDs(RelativeSymbol,
或者
MainSymbol
图表和A混是一个问题
撤单重报部分也有问题,上个帖子说了