在 TBQuant3平台中编写代码;
OnPosition(PositionRef pos)
{
Print("仓位更新了!----------");
};
OnOrder(OrderRef ord)
{
Print("委托了!----------");
};
OnFill(FillRef ordFill)
{
Print("成交了!---------");
};
使用模拟交易账户运行策略,自动委托订单也成交了,然后再k线控制台能看到 Print("仓位更新了!----------")输出语句,但 Print("委托了!----------")和Print("成交了!---------")不能输出,请问为什么,跪求指教。
OnReady()
{
//设置交易订阅范围
Bool ret = A_SetSubscribeTradeRange(Enum_Trade_Sub_All);
Print("A_SetSubscribeTradeRange:" + IIFString(ret, "True", "False"));
}
加上这一部分,应该就可以了。要订阅所有的交易单。
OnFill,OnOrder 说明你没有触发
至于为什么
提供的信息不足以分析
在 OnBarClose(ArrayRef<Integer> indexs)
{
Print("第"+Text(tradeIndex)+"次底分型成立了>>>>>>>>>>>>>>>>>>>>>>>>>>>>>。");
Bool isOpenPosition = Buy(computeShouldBuyAmount(tradeIndex), Q_UpperLimit()); //以高价委托买入使用收盘价Close + 100 * MinPoint(跳))或者(当前策略应用商品的当日涨停板价Q_UpperLimit())
if(isOpenPosition)
{
Print("kkkkkkkkkkkkkkk本次开仓委托成功:" + IIFString(isOpenPosition,"True","False")+";委托仓位:" + Text(computeShouldBuyAmount(tradeIndex))+";涨停价委托:" + Text(Q_UpperLimit())+"。");
}
}
在 OnPosition(PositionRef pos)
{
Print("仓位更新了!----------");
Array<Integer> orderIds;//当前商品合约报单数组
Bool isOrder = A_GetOrderIDs(Symbol, orderIds, "", 0);
If(isOrder){
Print("获取当前商品合约报单数组成功:" +IIFString(isOrder, "True", "False") + "," +"报单数组为:" + TextArray(orderIds)+"。");
Integer arraySize = GetArraySize(orderIds);//报单数组长度
Print("实际报单价为:" + Text(A_OrderPrice(arraySize-1, 0))+"。");
Fill fillValue; //获取指定报单的成交信息
Bool isFill = A_GetFill(orderIds[arraySize-1], 0, fillValue);//指定帐户下当前商品的最后一个当日委托单成交信息
If(isFill){
Print("获取指定报单的成交信息成功:" +IIFString(isFill, "True", "False") +";买卖方向为:" + Text(fillValue.side)+";成交价为:" + Text(fillValue.fillPrice)+";成交仓位:" + Text(fillValue.fillVolume)+"。");
}
} 以上输出语句都能正常输出,在模拟交易账户上查看委托记录,成交记录都能正常,但是OnFill,OnOrder 没有触发。跪求指教