[分享] 你会写跨周期调用吗? [通达信]
-
咨询内容:
跨周期调用实例详解
看到好几个人的帖子写的跨周期调用都犯了“习惯性”错误。例如,在日线公式里,为读取上一天的收盘价,写:
ref(c,1)
为读取上一周的周收盘价,很习惯地就写成:
c1:= ref(c#week,1) ;
错了。(但也并非总错,在某些天可能是对的。*注1)
一般地,ref(x,1)是昨天的x,于是,c1=ref(c#week,1)就是昨天的c#week,所以,如果当前是星期三,c1则是本周星期二所在周的收盘价,星期二和星期三都是本周的,所以应该有相同的周收盘价。(这里假定星期二和星期三都开盘。)
如果你一定要在日线公式里,用c#week来得到上一周的周收盘价c1,应该怎样写呢?
可以这样写:
A:=barslast(weekofyear != ref(weekofyear,1)); *注2
c1:=ref(c#week, A+1);
当然,此时直接写
c1:=ref(c,A+1); *注3
也行。
正确的跨周期调用的写法(读取上周的收盘价、成交量)
1) 建立一个(被调用的)指标公式,例如取名为“zuotian”,其内容是:
{zuotian}
c1:ref(c,1);
v1:ref(v,1);
2) 在主公式里
为了读取上一周的收盘价,写
c1:=zuotian.c1#week; {接收变量名任意,并非一定取名c1}
为了读取上一周的成交量,写
v1:=zuotian.v1#week;
为了读取上一月的收盘价,写
c1:=zuotian.c1#month;
为了读取上一月的成交量,写
v1:=zuotian.v1#month;
为什么要这样? 现以在日线公式里执行 c1:=zuotian.c1#week 为例说明:
按通达信的语法,
D1:=zuotian.c1;
是调用指标公式zuotian,令它在(本股票的)相同的周期(此时是日线)下执行,并把它在当前日K线上的输出C1赋值给本公式的D1变量。即D1将是昨天的收盘价, 因为公式zuotian在日周期下执行,输出的c1=ref(c,1)当然是昨天的close。
现在解释
c1:=zuotian.c1#week;
按通达信语法,该语句的语意是:调用指标公式zuotian,令它在week周期下执行,并把它在(本日K线所对应的)周K线上的输出c1赋值给本公式的c1变量。
公式zuotian在week周期下执行,输出在周K线上的c1=ref(c,1)当然是上一周的close。
注: 本日所对应的周/月是指本日所在的周/月。如果在日线中用 #MIN60跨周期调用,本日所对应的小时K线是指本日的最后交易小时即15:00那条60分钟K线。
如果你愿意,请回答以下问题:
*注1 “但也并非总错,在某些天可能是对的。” 在哪些天是对的?
*注2 本语句这种写法也是不全对。你知道在什么情况下它是错的吗?
*注3 c1:=ref(c,A+1)为什么对? 为得上周的成交量,写v1:=ref(v,A+1)对吗?
本人仔细阅读了tdxluntan老师的有关跨周期的帖子,现在把心得贴出来,与大家分享。借此对tdxluntan老师表示深谢。
-
通达信技术部:
学习下。
只是这个网页被太多弹窗及不良提示链接了。那些管理或版主们你们被猪了???
-
通达信客服:
本人写这个帖子花了差不多1个小时,有30个人看过了,只有一个人回帖,太不够意思了。本人郑重声明,以后只帮在此贴回贴的人-- 因为他们可能是性情中人,值得你去交的朋友。没回帖的人,也许也是性情中人,只是因为他看此贴并没有收获才不回。那说明他已经不需要别人帮助了。(根本没看此贴的人就不得而知了,请勿怪失言。)哈,就这么定了。
-
网友交流:
顶楼主,我正为此烦恼,终于有所明白了
-
网友交流:
c1:zuotian.c1#MIN15;
在日线中c1显示的是开盘价,在15分钟图中c1显示的是收盘价
我想做一个13:45-14:00的条件预警,不知怎么搞?
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容