非模组合约成交后系统查到的持仓仍为0 [文华财经]
- 咨询内容:
我做下面的例子来模拟此问题
1.创建一个模型名称叫“测试”,内容如下:
BK(1);
2.创建一个模组名称也叫“测试”,内容如下:
VOID MAIN()
{
VAR Code;//交易编码
VAR bid1;//买价1
VAR SKN;//目标开仓数
VAR SKID;//卖开返回标识
VAR SKStatus;//开仓状态
VAR SKTime;//提交时间
VAR DelStatus;
Code="ws0000";//任意合约
bid1=Offers(Code,"bid1");
SKN=1;
SKID=ReadGlobalStr("SKID");
SKTime=ReadGlobal("SKTime");
SKStatus=ReadGlobal("SKStatus");
IF(SKStatus==0&&T_SellPosition(Code)==0)//无持仓
{
SKStatus=1;
SKID=T_Deal(Code,1,0,SKN,bid1);//发出SKN手的卖开委托
WriteGlobalStr("SKID",SKID);
WriteGlobal("SKStatus",SKStatus);
WriteGlobal("SKTime",CurrentTime());
MessageOut(TimeToStr(CurrentTime())+","+Code+","+"SKID="+SKID+",申报数量="+SKN+",申报价格="+bid1+",卖开委托已提交!");
}
ELSE IF(SKStatus==1&&T_OrderMatchVol(SKID)==SKN)//已成交
{
// SKStatus=0;
// WriteGlobal("SKStatus",SKStatus);
MessageOut(TimeToStr(CurrentTime())+","+Code+","+"SKID="+SKID+","+"卖开已成交!");
MessageOut(TimeToStr(CurrentTime())+","+Code+",当前持仓:"+T_SellPosition(Code)+"手");
}
ELSE IF(T_OrderMatchVol(SKID)==0&&(CurrentTime()-SKTime>10))//卖开委托10秒未成交
{
DelStatus=T_DeleteOrder(SKID);//撤单
IF(DelStatus==0)
{
SKID=T_Deal(Code,1,0,SKN,bid1);//发出SKN手的卖开委托
WriteGlobalStr("SKID",SKID);
WriteGlobal("SKStatus",SKStatus);
WriteGlobal("SKTime",CurrentTime());
MessageOut(TimeToStr(CurrentTime())+","+Code+","+"SKID="+SKID+",申报数量="+SKN+",申报价格="+bid1+",卖开委托已撤单并重新提交!");
}
}
}3.创建一个群组,合约随便,只要不是第2步中的【Code="ws0000";//任意合约】就行,加载此群组
下图中可看出,合约"ws0000"已经成交1手,可T_SellPosition(Code)返回值为0,请测试确认此问题,多谢!
- 文华技术人员:
此主题相关图片如下:测试.jpg
- 文华客服:
您截图的版本号是多少?是0823模拟版本吗?
- 网友回复:
就是我当前有的版本。
如果是在交易时间,将上述的Code="ws0000";随便改成"rb1305"、"zn1305"之类,试试就能发现问题了。
- 网友回复: 这个问题我们需要核实一下,有结果会及时在此跟帖的
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 262069696 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容