新浪博客

文华编程技巧:如何取得当前K线图的时间周期?

2016-06-08 17:55阅读:3,462
在进行诊断秒杀程序化过程中,我只想画线在1分钟图上面,所以就有了判定当前K线图时间周期的需求。
文华没有提供直接的变量或函数,那就自己设计一个。
原理非常简单,直接返回当前和上一个周期的时间,然后相减就是对应的时间周期。
DTIME:=MINUTE-REF(MINUTE,1); // 获得相邻两周期的分钟时间并取得差值。
// 注意: 由于MINUTE返回的是0-59之间的一个数字,所以在跨分钟时间段DTIME可能为负数。
// 采用如下逻辑更为严谨一些。
DTIME1:=IFELSE(COUNT(DTIME=1,10)>=5,1,0);
DTIME3:=IFELSE(COUNT(DTIME=3,10)>=5,1,0);
DTIME5:=IFELSE(COUNT(DTIME=5,10)>=5,1,0);
DTIME10:=IFELSE(COUNT(DTIME=10,10)>=5,1,0);
DTIME15:=IFELSE(COUNT(DTIME=15,10)>=5,1,0);
DTIME30:=IFELSE(COUNT(DTIME=30,10)>=5,1,0);
这样在进行秒杀行情判断时,我就可以直接在1分钟图上用KSIZE是否超过10这个简单逻辑了。
显然,KSIZE超过10只能用在1分钟图上,比如15分钟图到处都是KSIZE超过10的,而那显然就不是秒杀了。
那么,如果想避免采用魔鬼数字10,试图先采用HHV求取过去100或者200周期内KSIZE的最大值MAX_KSIZE,然后只要KSIZE大于0.8*MAX_SIZE就认为是秒杀?这样似乎就可以自适应各种时间周期了。
其实是行不通的。
原因很简单,你无法判断在过去100或者200周期内一定有一次秒杀行情,即MAX_KSIZE可能是非秒杀行情取得的,所以就会导致虚假信号。
当然,如果需要用的时间周期是天、或者月,那就
用DATE或DAY函数求差,计算原理一样。
shannon
Jun 8th, 2016

留言板

下载客户端体验更佳,还能发布图片和表情~

亿万博主正在被热评!
999+

给此博文留言吧! 有机会上热评榜! 攒金币兑换礼品!

好的评论会让人崇拜发布评论

我的更多文章

下载客户端阅读体验更佳

APP专享