先简单讲讲跨周期引用的基础方法现货配资平台多少钱,分为直接引用、指标引用,以及手机版自定义周期算法。
在讲解跨周期引用之前,还需要了解序列数据和周期的概念,可以参考之前的教程:通达信公式深度教学整合⑥:跨周期引用篇【14000字长文,建议收藏】
由于手机版通达信没有#引用符,因此无法使用该方法跨周期引用,想要用算法来代替'#’引用符,就要先了解跨周期引用的本质。自定义周期不考虑大跨小的情况,只看如何在小周期引用大周期的数据。小跨大的引用结果是,每个小周期的K线都获取所在大周期的数据,本质上就是让一个大周期内的所有小周期,都输出同一个值,并且使这个值与大周期的值相同。具体做法就是将默认周期上的大周期定义出来,找到小周期对应大周期的值,并且将这个值赋予每个小周期。
以下是我总结的跨周期算法固定步骤:
定义大周期→获取小周期对应的大周期数据→隔离即时和历史行情→代入指标根据默认周期等级是否为日内周期,自定义周期的算法分为日内跨周期算法和多日跨周期算法,具体内容篇幅较长,请直接看之前的教程:通达信公式深度教学整合⑥:跨周期引用篇【14000字长文,建议收藏】
2、手机版60分钟引用周线周期数据在之前的教程中,我详细介绍了手机版通达信如何在日内周期跨周期引用,例如5分钟引用15分钟等,以及如何在日线以上周期跨周期引用,例如日线引用周线等。本次教学将着重介绍如何用手机版通达信实现在60分钟周期引用周线周期的数据。
例如,在60分钟周期上,要获取周线周期的20均线,电脑版可以直接使用引用符:
MAW:MA.MA3#WEEK;图片
手机版由于缺失引用符,我们必须自行定义出周线周期的价格,以及周线周期的20均线。分两步走定义出价格,先在60分钟周期定义出日线的价格,再以此日线的价格定义出周线的价格。
60分钟引用日线首先要获取两项基本数据,分别是周期编号和K线编号。
每日首根K线:=DAY<>REF(DAY,1);小周期编号:=BARSLAST(每日首根K线);K线编号:=CURRBARSCOUNT;
周期编号指每根60分钟的K线在日内的编号,以0123为周期来循环,定义出日期的分界。
图片
K线编号是每根K线从新到旧的编号,从1开始计数。
这两个编号是用来区分即时行情和历史行情的指标,当K线编号+小周期编号<4 时,就代表当前K线属于最新的交易日。(这个规律大家感兴趣可以自行测试)
对于最新交易日的盘中数据,通达信无法用未来函数获取,而可以使用全推数据得到,这就是区分出即时行情的目的。
接下来,定义出日线周期的收盘价:
CDAY:IF(K线编号+小周期编号<4,DYNAINFO(7),REFX(CLOSE,3-小周期编号));当K线编号+小周期编号<4 ,代表当前的K线处于当前交易日内,因此使用DYNAINFO(7) 获取即时行情的收盘价,就是当前日线的收盘价。
历史行情的日线收盘价则用REFX(CLOSE,3-小周期编号) 获取,这是一个计算规律。下表是小周期编号和日内小时的对应关系:
图片
在60分钟周期内,日线收盘价永远为14:00~15:00的收盘价,也就是小周期编号为3的收盘价,我们要让每根K线都获取该收盘价。
举个例子9:30~10:30时为第1根60分钟K线,小周期编号为0,此时的日线收盘价为3根K线后的收盘价,用代码表示为REFX(CLOSE,3),以此类推,可以总结出规律,历史日线收盘价为REFX(CLOSE,3-小周期编号) .
运用相同的规律,可以得到60分钟引用日线的所有基础行情数据:
每日首根K线:=DAY<>REF(DAY,1);小周期编号:=BARSLAST(每日首根K线);K线编号:=CURRBARSCOUNT;大周期O:=REF(OPEN,小周期编号);大周期C:=IF(K线编号+小周期编号<4,DYNAINFO(7),REFX(CLOSE,3-小周期编号));大周期H:=IF(K线编号=1,HHV(H,小周期编号+1),IF(K线编号=2,REFX(HHV(H,REF(小周期编号,1)+2),1),IF(K线编号=3,REFX(HHV(H,REF(小周期编号,2)+3),2),REFX(HHV(HIGH,4),3-小周期编号))));大周期L:=IF(K线编号=1,LLV(L,小周期编号+1),IF(K线编号=2,REFX(LLV(L,REF(小周期编号,1)+2),1),IF(K线编号=3,REFX(LLV(L,REF(小周期编号,2)+3),2),REFX(LLV(LOW,4),3-小周期编号))));大周期V:=SUM(VOL,小周期编号+1);大周期AMO:=SUM(AMOUNT,小周期编号+1);60分钟引用周线
得到日线数据后,就可以在此基础上获取周线的数据,这里以收盘价为例:
日线C:=IF(K线编号+小周期编号<4,DYNAINFO(7),REFX(CLOSE,3-小周期编号));先回顾一下直接在日线引用周线的写法:
周线C:IF((WEEKDAY+K线编号)<=6,DYNAINFO(7),IF(WEEKDAY=5,CLOSE,IF(WEEKDAY=4,REFX(CLOSE,1),IF(WEEKDAY=3,REFX(CLOSE,2),IF(WEEKDAY=2,REFX(CLOSE,3),REFX(CLOSE,4))))));
这里我们要做的就是将上面定义出的日线C 代入到原本算法中的CLOSE 中去,这里要注意几个数值的变动。
首先是判断是否为即时行情,由于我们在60分钟周期引用周线周期,中间隔了一个日线周期,在(WEEKDAY+K线编号)<=6 的判断部分要压缩回来,因此需写作IF((WEEKDAY+K线编号)/4<=6,DYNAINFO(7), ,除以4后就可以补偿还原。
后续的引用操作也是类似,引用参数皆需要补偿差距,乘以4倍再代入日线C ,最终代码如下:
每日首根K线:=DAY<>REF(DAY,1);小周期编号:=BARSLAST(每日首根K线);K线编号:=CURRBARSCOUNT;日线C:=IF(K线编号+小周期编号<4,DYNAINFO(7),REFX(CLOSE,3-小周期编号));周线C:IF((WEEKDAY+K线编号)/4<=6,DYNAINFO(7),IF(WEEKDAY=5,日线C,IF(WEEKDAY=4,REFX(日线C,4),IF(WEEKDAY=3,REFX(日线C,8),IF(WEEKDAY=2,REFX(日线C,12),REFX(日线C,16))))));获取20均线则写为:
MA(周线C,20*4*5);
参数中,20表示20均线,*4 表示补偿60分钟到日线的4倍,*5 表示补偿日线到周线的5倍。
最终效果如图:
黄线为自定义均线,白线为电脑版引用符得到的均线,黄线更加平滑,在关键点的位置数据完全重合。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。华林优配APP提示:文章来自网络,不代表本站观点。