以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  有关品种的小节结束时间  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=173671)

--  作者:滚雪球
--  发布时间:2019/12/23 12:49:24
--  有关品种的小节结束时间
现在需要计算日盘和夜盘离收盘的时间,对于有夜盘的品种是1,4小节收盘,对于没有夜盘的品种应该是第3小节收盘对吧?
如何判断一个品种是否有夜盘?
这是我写的求离收盘的秒数公式,没有夜盘的品种和中金所的品种要怎么处理?
 
CloseSecond:TIMETOT0(CLOSETIME(I)) - TIMETOT0(time),NODRAW;

 

 

 


--  作者:FireScript
--  发布时间:2019/12/23 13:28:11
--  

你是要取距离每个收盘节点的剩余秒数吗?所以要区分是否有夜盘?
IsNight:OPENTIME(1)>40000;//判断是否有夜盘 ,有夜盘返回0,没有夜盘返回1


--  作者:wenarm
--  发布时间:2019/12/23 13:41:48
--  

你这种逻辑有漏洞,法定假日结束后,都没有夜盘。

 

没有夜盘的品种和中金所,你具体要怎么求?

 

 

 


--  作者:滚雪球
--  发布时间:2019/12/23 13:43:11
--  

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到底怎么搞的,好像显示不出来啊


--  作者:滚雪球
--  发布时间:2019/12/23 13:45:01
--  
我要实现日内收盘前自动平仓,所有品种,而无需逐个指定收盘时间
--  作者:wenarm
--  发布时间:2019/12/23 13:59:58
--  

 

 

 

 

 

[此贴子已经被作者于2019/12/23 14:00:16编辑过]

--  作者:滚雪球
--  发布时间:2019/12/23 14:42:20
--  

ISNIGHT:=OPENTIME(1)>40000;//判断是否有夜盘 ,有夜盘返回0,没有夜盘返回1
ISZJ:=?????;

I=IF(ISNIGHT,3,I);

I=IF(ISZJ,2,I);
CloseSecond:TIMETOT0(CLOSETIME(I)) - TIMETOT0(time),NODRAW;

 

想了一个办法这样写就可以了,现在的问题是如何判断这是不是中金所的合约?


--  作者:FireScript
--  发布时间:2019/12/23 14:48:55
--  
 利用MARKETLABEL 判断

MARKETLABEL=‘ZJ’

--  作者:滚雪球
--  发布时间:2019/12/23 15:03:23
--  

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似乎总是不对,哪里写错了?


--  作者:wenarm
--  发布时间:2019/12/23 15:04:33
--  

if TIMEZONECONVER(090000)<time then
day_CloseSecond:TIMETOT0(CLOSETIME(0)) - TIMETOT0(time),NODRAW;
else
night_CloseSecond:TIMETOT0(CLOSETIME(1)) - TIMETOT0(time),NODRAW;

 

如果你要区分计算夜盘、白盘的k线时间与夜盘结束和白盘结束的差值。应该按照上面的逻辑处理。

注:这种逻辑可以同时解决掉节假日没有夜盘的情况。