你这种逻辑有漏洞,法定假日结束后,都没有夜盘。
没有夜盘的品种和中金所,你具体要怎么求?
ISNIGHT:=OPENTIME(1)>40000;//判断是否有夜盘 ,有夜盘返回0,没有夜盘返回1
if ISNIGHT=1 and STRCMP(MARKETLABEL,"ZJ")<>0 then begin
CloseSecond:=TIMETOT0(CLOSETIME(3)) - TIMETOT0(time);
end
else if ISNIGHT=1 and STRCMP(MARKETLABEL,"ZJ")=0 then begin
CloseSecond:=TIMETOT0(CLOSETIME(2)) - TIMETOT0(time);
end
else if ISNIGHT=0: then begin
CloseSecond:=TIMETOT0(CLOSETIME(I)) - TIMETOT0(time),NODRAW;
end
这个pel的else if 和 else到底怎么搞的,好像显示不出来啊
ISNIGHT:=OPENTIME(1)>40000;//判断是否有夜盘 ,有夜盘返回0,没有夜盘返回1
ISZJ:=?????;
I=IF(ISNIGHT,3,I);
I=IF(ISZJ,2,I);
CloseSecond:TIMETOT0(CLOSETIME(I)) - TIMETOT0(time),NODRAW;
想了一个办法这样写就可以了,现在的问题是如何判断这是不是中金所的合约?
ISNIGHT:=OPENTIME(1)>40000;//判断是否有夜盘 ,有夜盘返回0,没有夜盘返回1
ISZJ:=strcmp(MARKETLABEL(),'ZJ')=0;
I=IF(ISNIGHT,3,I);
I=IF(ISZJ,2,I);
CloseSecond:TIMETOT0(CLOSETIME(I)) - TIMETOT0(time),NODRAW;
中金的判断也没有问题了,但是这个参数I似乎总是不对,哪里写错了?
if TIMEZONECONVER(090000)<time then
day_CloseSecond:TIMETOT0(CLOSETIME(0)) - TIMETOT0(time),NODRAW;
else
night_CloseSecond:TIMETOT0(CLOSETIME(1)) - TIMETOT0(time),NODRAW;
如果你要区分计算夜盘、白盘的k线时间与夜盘结束和白盘结束的差值。应该按照上面的逻辑处理。
注:这种逻辑可以同时解决掉节假日没有夜盘的情况。