Quantcast
Channel: 自由 安康 乐活 财富
Viewing all articles
Browse latest Browse all 690

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

$
0
0
在进行诊断秒杀程序化过程中,我只想画线在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


 

Viewing all articles
Browse latest Browse all 690

Trending Articles