自己编写了一个买卖期权的应用,在回测时是没有问题的,但在实盘(模拟盘)时出现各种奇怪的错误,一直查不出原因。怀疑是if的判断条件有问题,用fileappend记录time和currenttime后,发现两者差异巨大,但又找不到问题在哪,跪求各位老师指导
首先在oninit()函数在订阅指数和期权合约(自编函数)。
SubscribeBar("000300.SSE","1d",s_time,e_time);//订阅沪深300指数(000300.SSE)日K线行情
SubscribeBar("000300.SSE","5m",s_time,e_time);//订阅沪深300指数分钟K线行情
Option_Code_list = GetOptionList("000300.SSE",point,CurrentDate());
StringSplit(Option_Code_list, "|" ,Option_code_array);
t = GetArraySize(Option_code_array);
While(i < t)//循环订阅行情
{
If(Left(Option_code_array[i],2) == "IO")
{
SubscribeBar(Option_code_array[i], "5m" ,s_time, e_time);
}
i = i + 1;
}
然后在onBar()中进行判断,主要代码如下:
最后看一下fileappend中的异常数据,不知道为什么会产生这种异常数据
这些代码在回测是没有问题的,图表能出正常的信号,不会出现异常信号,但实盘时在非交易时间开平仓,还交易多个期权合约(按时设计,只交易一虚一档合约),请各位老师指导。
我先讲下time和currenttime的区别
time表示K线时间,在任何时候代码呗执行,取出的都是当前BAR所在的时间
currenttime则是电脑时间,就是你windows右下角看到的时间,什么时候取就是多少
你这个输出的问题在哪里?
你输出的time是K线时间
curt则是发生记录的时间
谢谢王老师,您刚才说的time和currenttime的不同之处我知道,但在实盘中时,这两者会差异如此之大吗?如截图中所示,time在0.10-0.11之前飘忽不定,而currenttime显示的时间却只有9:03(已设置同步时针)
其实我想解决的bug是不能正确发单,但在debug的过程中发现程序在非交易时间不停地触发成交条件,所以怀疑是time的问题,但又不知道该如何解决