加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

指标公式教学(四)

(2013-05-07 13:10:03)
标签:

天数

方法

思路

代表

信号

股票

分类: 技术探讨

指标公式教学(四)

 

十.【最高.最低及最大.最小】  十一.【最后一天---最后1个周期】  十二.【BACKSET未来函数】
十. 【最高.最低及最大.最小】
这类的函数很多,每种软件也有很多延伸的函数,
现以最常用到.最基础的函数说明如下:
1.        HHV(x,n) 代表找寻在n周期内的最高”x”,
若N=0,则在分笔周期,代表从开盘开始找寻,在其他周期则代表从有数据(历史)开始找寻
例如:日线 HHV(close,8) 表示找寻8天内的最高”收盘价”
     日线 HHV(close,0) 表示找寻有史以来的最高”收盘价”

注意:当n为未知时,可用运算式代替
例如:要找寻上次”close大于 open”以来的最高收盘价,则须用
BARSLAST(CLOSE>OPEN) 1(周期数= K线间隔数 1)代替N,
故全式=
HHV(CLOSE,BARSLAST(CLOSE>OPEN) 1);
[注] 以运算式代替N,并非每个软件皆适用,使用前最好先测试

2.        LLV(x,n) 代表找寻在n周期内的最低”x”
与HHV用法相同,只是改为取最低价而已,不再详细说明

3.        MAX(a,b) 取得A,B的较大值,A.B可为数或运算式
例如: MAX(CLOSE,5) 表示取得收盘价及5的较大值,看哪一个较大,就取哪一个
     MAX(CLOSE,OPEN) 表示取得收盘价及开盘价的较大值 -----此式很重要,常用到

[MAX的连环套]
那么若有3个以上的数,要比大小,怎么办?很简单,跟IF一样,使用连环套即可
例如:有CLOSE,OPEN,MA(C,5),MA(C,10)这4个数要取最高,怎么写?
首先跟IF一样,先写出函数,未知的以X代替,等全部写出后,由最下面往上面套入X的地方,
第一步.先写出函数,未知的以X代替第一步
MAX(CLOSE,X) ------ CLOSE后面还有3个数值,不知要跟谁比,故以X代替
MAX(OPEN,X) ------- OPEN后面还有2个数值,不知要跟谁比,故以X代替
MAX(MA(C,5),MA(C,10)) ------MA(C,5)后面只有MA(C,10),故知道要跟MA(C,10)比,
第二步. 由最下面往上面套入X的地方
   A.将MAX(MA(C,5),MA(C,10))带入MAX(OPEN,X)的X的地方,即
MAX(OPEN, MAX(MA(C,5),MA(C,10)))  -----1式
B.再将1式带入MAX(CLOSE,X) 的X的地方,即
MAX(CLOSE, MAX(OPEN, MAX(MA(C,5),MA(C,10)))); 加上”;”号,即为所求

简单吧!再多的数也不怕   ^__^

[例外]分析家及大智慧L2不用这么麻烦,直接全部写进去即可,
MAX(CLOSE,OPEN,MA(C,5),MA(C,10))

4.        MIN(a,b) 取得A,B的较小值,A.B可为数或运算式
用法与MAX相同,只是意思相反罢了,不再详细说明

十一. 【最后一天---最后1个周期】
我们在写公式时,常会用到”最后一天”,这是因为有时候由最后1天往前推算较方便,
因此,我单独把它拿出来说明,大家在用到时,就比较方便.
其实,各软件并无统一函数,有的软件有函数,有的软件没有此函数,只好由众高手集思广益,
现将比较普遍的代码写于下面:
分析家.大智慧L2------- BARSTATUS=2    (BARSTATUS代表数据位置,2为最后1个周期)
飞狐----BARSTATUS=2 或 ISLASTBAR 或 BARPOS=SYSPARAM(3) (SYSPARAM(3)为主图可见K线最后位置,使用时,须打开光标)
通达信-------- ISLASTBAR 或 CURRBARSCOUNT=1 (CURRBARSCOUNT的意思是到最后1天的周期数(含最后1天),=1即最后1天)
大智慧1-------DYNAINFO(8)=v (总手=成交量,此式比较简洁,由知无不言版主提供)
同花顺--------我未使用,请高手提供,谢谢!

十二. 【BACKSET未来函数】
BACKSET函数是标准未来式,这就奇怪了, 既然是未来式,为什么还去讲呢?
其实BACKSET虽然是未来式,但却非常重要,有时候还非它不可呢,
现详述如下:

函数定义: BACKSET函数的写法为
BACKSET(条件,N天)—表示若合于条件时,将N天(含当天)内全部设为1,(N可为数字或运算数)
例如: BACKSET(CROSS(CLOSE,MA(CLOSE,5)),5)---表示当收盘上穿5日线时,将5日内全部设为1

又如: (飞狐)BACKSET(CROSS(MA(CLOSE,5), CLOSE),BARSLAST(CROSS(CLOSE,MA(CLOSE,5))) 1)
表示当收盘下穿5日线时,将”从上次收盘上穿5日线至今”的天数内全部设为1
请注意: 通达信会乱掉,此式n以运算式代替,不一定每种软件皆适用,请小心确认

再如: (飞狐.通达信)BACKSET(ISLASTBAR,BARSLAST(CROSS(CLOSE,MA(CLOSE,5))) 1)
表示当最后一个周期(最后1天)时,将”从上次收盘上穿5日线至今”的天数内全部设为1

[BACKSET崁入到FILTER内作过滤]
BACKSET常用FILTER作过滤,以达到选出符合条件的那1天,
方法为把BACKSET(a条件,N天数)崁入FILTER(X条件, M天数)中的”X条件”内,
注意:通常会将FILTER的过滤天数设为BACKSET天数减1,即(N天数-1),
FILTER(BACKSET(a条件,N天数), N天数-1);
当BACKSET满足a条件后,会将之前的N天全部设为1后,
再由FILTER保留第1个为1外,其后M天皆化为0(即第1天显示外,其后的N-1天皆不显示)
如:FILTER(BACKSET(CROSS(CLOSE,MA(CLOSE,5)),6),5);
当收盘上穿5日线时, 将6日内全部设为1后,保留第1个为1外,其后5天皆为0.

简言之:
BACKSET(a条件,N天数)崁入FILTER(X条件, N天数-1),即把显示信号向前推N天显示之意

例如:
例1.(通达信) 只要显示最后一个”收盘上穿5日线”,公式怎么写?
[思路]要只显示最后一个符合条件,只要算出最后符合条件至最后1个周期的周期数,
再由最后1个周期,将这几天全部设为1,再用FILTER将其后的天数皆化为0即可.
[小技巧]
因为是最后,所以FILTER的过滤周期,可以直接写数字较省事,
又因为我们不知道”最后符合条件至最后1个周期的周期数”,故FILTER的过滤周期,
可设大一点没关系,安全第一,当然也可如一般写法,设为该周期数-1,只是比较长罢了.
解答:
FILTER(BACKSET(ISLASTBAR, BARSLAST(CROSS(CLOSE,MA(CLOSE,5))) 1), BARSLAST(CROSS(CLOSE,MA(CLOSE,5))));
(FILTER的过滤周期设为”最后符合条件至最后1个周期的周期数”-1,此为一般正常写法,不加1即减1)
OR
K1:= BARSLAST(CROSS(CLOSE,MA(CLOSE,5))) 1;
FILTER(BACKSET(ISLASTBAR, K1),K1-1);
(若觉得公式太长或不好阅读,可将”最后符合条件至最后1个周期的周期数”先提出,再代入,就比较简洁)
OR
FILTER(BACKSET(ISLASTBAR, BARSLAST(CROSS(CLOSE,MA(CLOSE,5))) 1),1000);
(FILTER的过滤周期设为1000,越大越安全)

请注意: FILTER的过滤周期尽可能使用数字,比较不容易造成错乱

例2. (通达信日线周期)  每月最后一天或最后1天
[小技巧]月末即月初的前1天,故先找出月初MONTH != REF(MONTH,1),再推回去1天
FILTER(BACKSET(MONTH != REF(MONTH,1),2),1) OR ISLASTBAR;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有