《飞狐公式编写基础》和《通达信公式教程》--4-- 指标公...

来源:百度文库 编辑:神马文学网 时间:2024/04/28 22:28:53
飞狐基本函数简介之逻辑函数
这组函数全部用于逻辑判断,所得结果非0即1。
一、
函数: IF(X,A,B)
参数: X、A、B为数组或常数
返回: 返回数组
说明: 若X不为0则返回A,否则返回B
示例: IF(CLOSE>OPEN,HIGH,LOW)
表示该周期收阳则返回最高值,否则返回最低值
IF,如果。
这个函数妙用无穷,例子举不胜举。这里只提要注意的几点。
1、用以下公式来测试,发现N取10,在最后一根K线还能输出1,N取11就输出0了。说明“X不为0”的极限值是0.1。
IF(ISLASTPERIOD/N,1,0);{参数N:10,1,999}
2、A和B两者,要求是有效值。如果A是有效值,B是无效值,在X满足条件的情况下,也未必能返回A。
IF(C>O,MA(C,5),MA(C,100000000));
二、
函数: CROSS(A,B)
参数: A、B为数组或常数
返回: 返回数组
说明: 表示当A从下方向上穿过B时返回1,否则返回0
示例: CROSS(MA(CLOSE,5),MA(CLOSE,10))
表示5日均线与10日均线交金叉
CROSS,交叉。
这个“说明: 表示当A从下方向上穿过B时返回1,否则返回0 ”要咬文嚼字的话,要说成这样:
当上一个周期AB时,CROSS(A,B)返回1,否则返回0。
为什么要这样说呢?因为“从下方向上穿过”是个模糊说法,当两条线同时向下时,也会发生“金叉”,不信?看看以下公式的运行情况就知道了。
REF(A,1)B;
这个公式与CROSS(A,B)输出的结果应该是一样的。也可用以下公式验证。
LC:=REF(C,1);
D:=IF(C>LC,C-LC,0);  E:=IF(CA:=SUM(D,N)/N;       B:=SUM(E,N)/N;
原始RSI:100*A/(A+B); {N:6,2,100}
飞狐RSI:SMA(MAX(C-LC,0),N,1)/SMA(ABS(C-LC),N,1)*100;
DRAWICON(CROSS(飞狐RSI,原始RSI),0,10);
DRAWICON(REF(飞狐RSI,1)原始RSI,10,11);
{坐标线位置:0; 20; 50; 80; 100; 参数N:6.2.100 }
三、
函数: NOT(X)
参数: X为数组或常数
返回: 数组或常数
说明: 返回非X,即当X=0时返回1,否则返回0
示例: NOT(ISUP)
表示平盘或收阴
0.1是常数么?是。0.1不等于0吧?是。那么NOT(0.1)应该返回0了?
按说明应该返回0,但实际上是返回1的。
NOT(C/N);
NOT(0.1);{参数N:10,1,999}
如图,调整N,我们可以观察到结论:当X大于等于1时,NOT(X)返回0,小于1时返回1。
四、
函数: ISUP
参数: 无
返回: 返回数组
说明: 当收盘>开盘时,返回值为1,否则为0
函数: ISEQUAL
参数: 无
返回: 返回数组
说明: 当收盘=开盘时,返回值为1,否则为0
函数: ISDOWN
参数: 无
返回: 返回数组
说明: 当收盘<开盘时,返回值为1,否则为0
ISUP相当于OC,感觉没有什么用,只是有时可以使公式简洁一点。
五、
函数: ISLASTPERIOD
参数: 无
返回: 返回数组
说明: 该周期是否最后一个周期。最后一个周期返回值为1,其余为0
ISLASTPERIOD,是最后一个周期。这个函数,可以适用于任意周期的,当周期定下来之后,就返回最后一根条形图上的值为1。所以,解释为最后一根条形图(K线)比较恰当。
飞狐最近版本中,改ISLASTPERIOD为ISLASTBAR,就是这个原因。但也带来不便,以前的公式运行没有问题,要修改时,就要把ISLASTPERIOD全改成ISLASTBAR,否则调试通不过。
这是个很实用的函数,特别是在与BACKSET同时用时,找最近的信号很方便。分析家目前好象还没有添加这个功能的基本函数,有时会觉得不便--不过可以用DLL实现。
六、
函数: BETWEEN(A,B,C)
参数: 无
返回: 返回数组
说明: 表示A处于B和C之间时返回1,否则返回0
示例: BETWEEN(CLOSE,MA(CLOSE,10),MA(CLOSE,5))表示收盘价介于5日均线和10日均线之间
函数: RANGE(A,B,C)
参数: 无
返回: 返回数组
说明: 表示A大于B同时小于C时返回1,否则返回0
示例: RANGE(CLOSE,MA(CLOSE,5),MA(CLOSE,10))表示收盘价大于5日均线并且小于10日均线
BETWEEN,在...之间。RANGE,范围、排列。
BETWEEN返回1,相当于满足条件:(A>B AND AC)。
RANGE返回1,相当于满足条件: A>B AND A七、
函数: EXIST(X,N)
参数: N可为常数或变量
返回: 返回数组
说明: 返回N周期内是否存在满足条件X
示例: EXIST(C>O,10)表示10个周期中存在阳线
EXIST,存在。
表示判断当前周期和前N-1个周期,共N个周期中,是否存在数组X绝对值大于等于1的信号。
八、
函数: EVERY (X,N)
参数: N可为常数或变量
返回: 返回数组
说明: 返回N周期内一直满足条件X
示例: EVERY (C>O,10)表示10个周期内一直是阳线
就是EVERYDAY的EVERY了。表示信号的连续性。
EVERY(C九、
函数: LAST(X,A,B)
参数:
返回: 返回数组
说明: 返回第前A周期到第前B周期是否一直满足条件X,若A为0,表示从第一天开始,B为0,表示到最后日止
示例: LAST(C>O,10,5)表示从第前10个周期到第前5个周期内一直是阳线
LAST,最后的,最近的。这个函数使满足连续条件的信号滞后(往后移)了。
A:=MA(C,5)>MA(C,10);
LAST(A,4,2);
十、
函数: LONGCROSS(A,B,N)
参数:
返回: 返回数组
说明: 表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0
示例: LONGCROSS(MA(CLOSE,5),MA(CLOSE,10),5)表示5日均线维持5周期后与10日均线交金叉
LONGCROSS,长交叉。就是在交叉之前,还要加上条件。如图,两者的输出是一样的。
A:=CROSS(MA(CLOSE,5),MA(CLOSE,10));
B:=LAST(MA(C,5)条件金叉:A AND B;
长金叉:0.5*LONGCROSS(MA(CLOSE,5),MA(CLOSE,10),5);
飞狐基本函数简介之算术函数
这组函数用于算术运算,相对简单,例子就不多举了。
一、
函数: MAX(A,B)
参数: A、B为数组或常数
返回: A、B都为常数则返回常数,否则返回数组
说明: 返回A和B中的较大值
示例: MAX(CLOSE-OPEN,0)
表示若收盘价大于开盘价返回它们的差值,否则返回0
MAX.,MAXIMUM,最大值。
相当于IF(A>B,A,B);
二、
函数: MIN(A,B)
参数: A、B为数组或常数
返回: A、B都为常数则返回常数,否则返回数组
说明: 返回A和B中的较小值
示例: MIN(CLOSE,OPEN)
返回开盘价和收盘价中的较小值
MIN.,MINIMUM,MINISTER,小的,迷你的。
相当于IF(A>B,B,A);
三、
函数: ABS(X)
参数: X为数组或常数
返回: X为常数则返回常数,否则返回数组
说明: 返回X的绝对值
示例: ABS(CLOSE-OPEN)
返回开盘价和收盘价的价差
ABSOLUTE VALUE,绝对值。
相当于IF(A>B,A-B,B-A);
四、
函数: SGN(X)
参数: X为数组或常数
返回: X为常数则返回常数,否则返回数组
说明: 当X>0,X=0,X<0分别返回1,0,-1
示例: ABS(-34) 返回34
SIGN,符号,标记。
相当于
A1:=IF(X>0,1,0);
A2:=IF(X=0,0,0);
A3:=IF(X<0,-1,0);
A:=A1+A2+A3;
写成IF嵌套,就是IF(X>0,1,IF(X<0,-1,0));
五、
函数: REVERSE(X)
参数: X为数组或常数
返回: X为常数则返回常数,否则返回数组
说明: 返回的X相反数-X
示例: REVERSE(CLOSE)
返回-CLOSE
REVERSE,相反(数)。
相当于-X;
六、
函数: MOD(A,B)
参数: A、B为数组或常数
返回: A、B都为常数则返回常数,否则返回数组
说明: 返回A对B求模
示例: MOD(26,10)返回6
MODULUS,模数。
相当于整数A除以整数B后所得的余数。支持负数。
七、
函数: CEILING(A)
参数: A、B为数组或常数
返回: A、B都为常数则返回常数,否则返回数组
说明: 向上舍入,向数值增大方向舍入
示例: CEILING(12.3)求得13,CEILING(-3.5)求得-3
CEILING,最高限度。
八、
函数: FLOOR(A)
参数: A、B为数组或常数
返回: A、B都为常数则返回常数,否则返回数组
说明: 向下舍入,向数值减小方向舍入
示例: FLOOR(12.3)求得12,FLOOR(-3.5)求得-4 向下舍入
FLOOR,地板,基底。也可理解为最低限度。
九、
函数: INTPART(A)
参数: A为数组或常数
返回: A为常数则返回常数,否则返回数组
说明: 取得数据的整数部分,返回沿A绝对值减小方向最接近的整数
示例: INTPART(12.3)求得12,INTPART(-3.5)求得-3
INTEGER,整数。PART,部分。INTPART就是整数部分了。
不管是正数还是负数,INTPART之后,留下的就只有整数部分。
我们很奇怪地发现,有向上舍入、向下舍入和取整的基本函数,但没有发现四舍五入的基本函数。可能是因为四舍五入是人为的一种粗略习惯,进不了精确算术的殿堂。那么用基本函数可以解决四舍五入么?
以小数点后第二位的数,四舍五入到小数点后第一位的数为例:
A:=C*100;
B:=MOD(A,10);
D:=IF(B>=5,1,0);
E:=INTPART(C*10)+D;
四舍五入:E/10;
收盘价:C;
飞狐基本函数简介之数学函数
飞狐的数学函数,主要支持三角函数、对数、和幂的运算。
先回忆一下。如图,
sin(X)=a/c,cos(X)=b/c,tg(X)=a/b,ctg(X)=b/a。这里没有提供ctg(X)函数,是因为正切和余切互为倒数关系。
实际上正弦值的平方加上余弦值的平方等于1,有正弦函数之后,余弦函数也可以求出来了。
图中的角度X,一般有两种表达方式,一种是一个圆周为360度,还有一种是一个圆周为2π弧度。
这里的三角函数中的数组或常数X,取的都是弧度。
一、
函数: SIN(X)
参数: X为数组或常数
返回: 数组或常数
说明: 返回X的正弦值
函数: COS(X)
参数: X为数组或常数
返回: 数组或常数
说明: 返回X的余弦值
正弦波是自然界最常见的波形。正弦波和余弦波的波形是一样的,无非是相差π/2弧度(90度)的相位。
主要应用在技术分析中的周期分析上。
那么在指标中画出正弦波应该是很容易了吧。
A:=COUNT(C,0)=1;
B:=BARSLAST(A);{1,2,3,4,.....}
正弦值:SIN(B);
余弦值:COS(B);
正余平方和:POW(正弦值,2)+POW(余弦值,2);
正弦180度:SIN(3.1415926);
但是看起来不太光滑:(
究其原因,是因为正弦波的周期是2π,当X取值较大时(1,2,3,...)时,返回值就不太“精密”了,也就是说构成波形的点数不够。
这个就好办了,我们可以把数列的值都减小N倍,再来看看效果。
A:=COUNT(C,0)=1;
B:=BARSLAST(A)/N;
正弦值:SIN(B);
余弦值:COS(B);{参数N:10.1.999}
调整参数N,就可以发现,N取值越大,波形就越光滑。当N取3时,就有不错的光滑度。当N取10时,就非常光滑了。
N调整得越大,在2π周期中的点数就越多,一个完整波形的周期内所含的日期差(在日K线中)就越大了。
二、
函数: TAN(X)
参数: X为数组或常数
返回: 数组或常数
说明: 返回X的正切值
TANGENT,正切。
正切值的绝对值,最小是0,最大趋向于无穷大。
当正弦值接近1时,正切值接近于无穷大。
A:=COUNT(C,0)=1;
B:=BARSLAST(A)/N;
正弦值:SIN(B);
余弦值:COS(B);{参数N:10.1.999}
TAN(B);
三、
函数: ASIN(X)
参数: X为数组或常数
返回: 数组或常数
说明: 返回X的反正弦值
函数: ACOS(X)
参数: X为数组或常数
返回: 数组或常数
说明: 返回X的反余弦值
函数: ATAN(X)
参数: X为数组或常数
返回: 数组或常数
说明: 返回X的反正切值
Y=SIN(X),是已经知道X的弧度值求正弦值。反正弦值是已经知道正弦值,去求弧度是多少。其它类推。
ASIN(1);
返回1.57080弧度,相当于是π/2。
四、
函数: LOG(X)
参数: X为数组或常数
返回: 数组或常数
说明: 取得X的10为底对数
示例: LOG(100) 等于2
Y是10的N次方值,那么LOG(Y)=N。
五、
函数: LN(X)
参数: X为数组或常数
返回: 数组或常数
说明: 以e为底的对数
示例: LN(CLOSE) 求收盘价的对数
函数: EXP(X)
返回: X为数组或常数
参数: 数组或常数
说明: 为e的X次幂
示例: EXP(CLOSE) 返回e的CLOSE次幂
LN(X)是取自然对数。自然数e=2.718281828...
呵呵,连自然数都到股市中来了。
EXP(X)在正态分布中要用到,可。。。晕,不说了。
六、
函数: POW(A,B)
参数: A、B为数组或常数
返回: 数组或常数
说明: 返回A的B次幂
示例: POW(CLOSE,3)
求得收盘价的3次方
函数: SQRT(X)
参数: X为数组或常数
返回: 数组或常数
说明: 为X的平方根
示例: SQRT(CLOSE) 收盘价的平方根
POWER,幂。SQUARE ROOT,平方根。
POWER(A,B)中的B支持小数,即可用0.5,那么POW(A,0.5)=SQRT(A)了。
POW(C,0.5);
SQRT(C);
这两根线是一样的。
飞狐基本函数简介之统计函数
这组函数,是统计学中的最典型的几个指标,在基本函数中提供了算法。有几个是可以相互转换的,看似众多,实际上没有几个。
“统计学理论划分成描述统计学和推导统计学两部分。描述统计学指用图表达资料数据,比如用一张标准的线图展示价格历史。推导统计学则指从资料推导出概括的、预测的或推延性的结论。所以价格图表属于前者的范畴,而针对价格图表进行的技术分析则属于推导统计学的范畴。
综合起来,技术分析以过去的价格数据预测未来,有充分的统计学根据。”<期货市场技术分析>P16
实际上,我们常用的技术指标,都自觉或不自觉地利用了统计学中的相关原理。比如均线指标MA(C,N),是N个周期中收盘价的算术平均值,就利用了统计学中集中趋势度量法的原理。
先回忆一下统计学中几个指标的算法。
统计对象可以看成是一个数列,数列中数据的总个数为N,以今天(2002.11.22)五天内的600036招商银行收盘价为例,N就为5。数列的内容为:{9.17,9.24,9.11,8.85,8.87}。
1、算术平均值:数据总和除以总个数N。
(9.17+9.24+9.11+8.85+8.87)/5=9.048。
可以用公式MA(C,5),从今天的值上看出。
2、偏差:每个数据,减去算术平均值的结果。
9.17-9.048=0.122,
9.24-9.048=0.192,
9.11-9.048=0.062,
8.85-9.048=-0.198,
8.87-9.048=-0.178,
各偏差相加,应该是等于0的。
3、平均绝对偏差:将偏差的绝对值相加,除以总个数N。
(0.122+0.192+0.062+0.198+0.178)/5=0.150
4、(总体样本)方差:将偏差的平方相加,总和除以总个数N。用公式可以这样算:
(POW(0.122,2)+POW(0.192,2)+POW(0.062,2)+POW(0.198,2)+POW(0.178,2))/5=0.025
方差的算法,经过化简,也可以这样算:每个数据的平方的平均数,减去平均数的平方。
在公式里就可以这样编了:
MA(POW(C,2),5)-POW(MA(C,5),2);{0.025}
5、估算样本方差:是总体方差的N/(N-1)倍。
0.025*5/(5-1)=0.031
估算样本方差,总比总体样本方差大一点,当N够大时,两者趋于相等。
6、(总体)标准差:方差的开方。
POW(0.025,0.5);{0.158}
7、估算标准差:估算样本方差的开方。
POW(0.031,0.5);{0.176}
同样,估算标准差也比总体标准差大一点,当N够大时,两者趋于相等。
8、最小二乘法求回归直线方程:放在后面讲。
以下的例子,也以在今天(2002.11.22)五天内的600036招商银行收盘价为例。
一、
函数: AVEDEV(X,N)
参数: X为数组,N为统计周期
返回: 返回数组
说明: 平均绝对偏差
AVEDEV(C,5);{0.150}
二、
函数: DEVSQ(X,N)
参数: X为数组,N为统计周期
返回: 返回数组
说明: 数据偏差平方和DEVSQ
数据偏差平方和,除以N,即为方差。
DEVSQ(C,5)/5;{0.025}
DEVSQ(C,5);{0.126}
三、
函数: VARP(X,N)
参数: X为数组,N为统计周期
返回: 返回数组
说明: X的N日总体样本方差
总体样本方差用数据偏差平方和,已经求出了,看看一样吗?
DEVSQ(C,5)/5;{0.025}
VARP(C,5);{0.025}
四、
函数: VAR(X,N)
参数: X为数组,N为统计周期
返回: 返回数组
说明: X的N日估算样本方差
估算样本方差是总体方差的N/(N-1)倍,看看一样吗?
VARP(C,5)*(5/(5-1));{0.032}
VAR(C,5);{0.032}
五、
函数: STDP(X,N)
参数: X为数组,N为统计周期
返回: 返回数组
说明: X的N日总体标准差
总体标准差,即为总体样本方差的开方,看看一样吗?
POW(VARP(C,5),0.5);{0.159}
STDP(C,5);{0.159}
六、
函数: STD(X,N)
参数: X为数组,N为统计周期
返回: 返回数组
说明: X的N日估算标准差
估算标准差,即为估算样本方差的开方,看看一样吗?
POW(VAR(C,5),0.5);{0.178}
STD(C,5);{0.178}
好了,以上六个统计函数,除了第一个,其它五个,只要求出方差,就可以找到相应关系,全部求出来。而方差,可以用公式MA(POW(C,2),5)-POW(MA(C,5),2);求出,所以说,新东西只有一个:平均绝对偏差。
以上六个函数中的N,目前均不支持序列变量,但可以用参数来调整。
下面介绍线性回归的概念,仍以前例为例。
如图,坐标中的各点不存在明确的关系,它们不在同一直线上,也不在同一曲线上。但仔细观察可以看到,它们还是存在着一定的相关关系,图a中的点分布在一根直线附近,图b中的点分布在一根曲线(抛物线)附近。
在图a中,如果能够画出一根直线,使各点到直线的垂直距离总和达到最小,那么这根直线无疑是很有参考价值的,用股市中的行话说,就是这根直线代表了点以后的发展趋势。这种分析方法,就是统计学中的回归分析法。
图a中的X轴,相当于K线图中的时间轴,Y轴相当于价格轴,一个点相当于是由两个变量决定位置。
两个变量之间的回归分析称为简单回归或一元回归,三个以上变量之间的回归分析称为复回归或多元回归。如果变量间相关关系表现为线性相关的回归称为线性回归,表现为曲线相关的回归称为非线性回归。所谓一元线性回归,则是指两个变量之间表现为线性相关关系的回归。
一元线性回归的方法,就是在众多的点中,找到一根直线,而这根直线,最能代表众多点的平均“趋势”。
直线的表达方程是:y=a+bx。只要两个参数a、b定下来,直线的位置就定了。
求参数a、b的方法一般有两种,一种较为简便,但精度不够,称为平均数法。还有一种精度较高,应用也最多,叫最小二乘法。可想而知,飞狐中的线性回归预测值,是根据最小二乘法求出来的。这里就只介绍最小二乘法。
设在众多点中穿过的回归直线的方程是y'=a+bx。而每个点的垂直高度为y。那么对应于每个点,都可得到类似于偏差的值y-y'。这些值的平方的总和达到最小,而求出参数a、b,就是最小二乘法的基本原理。
y-y'=y-a-bx。每个点,都有对应的x、y值,那么将这些值,分别代入(y-a-bx),求平方,最后进行累计。最终的表达式Q中,就只有a和b两个变量了。为使Q具有最小值,必须使其对a,b的偏导数等于0。由这两个等式中,就可以求出a、b的值了。
同例,x:{0,1,2,3,4}, y:{9.17,9.24,9.11,8.85,8.87}
xy:{0,9.24,18.22,26.55,35.48}
x的平均值是:(0+1+2+3+4)/5=2,x的平均值的平方是:4,y的平均值是:9.048
x平方{0,1,4,9,16},x平方总和是:30
b=(89.49-5*2*9.048)/(30-5*4)=-0.99/10=-0.099
a=9.048-(-0.099*2)=9.246
y=9.246-0.099*x。这就是我们求出的回归直线方程。
在前四天,y值为9.246,在今天,y=9.246-0.099*4=8.85。
有了这两个值,就可以在主图上画线了:
A:=BACKSET(ISLASTBAR,5);
B:=A>REF(A,1);
DRAWICON(A,C,10);
DRAWLINE(B,9.246,ISLASTBAR,8.85,0);
{主图、主图叠加}
各位看到,计算过程比较麻烦,一般只要了解回归线的意义即可。具体计算,也有以下两个基本函数帮忙。
七、
函数: FORCAST(X,N)
参数: X为数组,N为统计周期
返回: 返回数组
说明: X的N周期线性回归预测值
示例: FORCAST(CLOSE,10) 表示求10周期线性回归预测
用最小二乘法,求出N周期内,X的一元线性回归线上的当天的值。与以上介绍的a值不同,a值是(N-1)周期前的回归线上的值。N取值为1时没有意义。
FORCAST(C,5);{8.85}
八、
函数: SLOPE(X,N)
参数: X为数组,N为统计周期
返回: 返回数组
说明: 为X的N周期线性回归线的斜率
示例: SLOPE(CLOSE,10) 表示求10周期线性回归线的斜率
用最小二乘法,求出N周期内,X的一元线性回归线的斜率,相当于以上介绍的b值。在K线图上是(价差/时间差)的关系,与角度没有任何关系。N取值为1时没有意义。
SLOPE(C,5);{-0.099}
那么有了这两个函数,要画出回归线还是不容易。今天的回归线的值和斜率知道了,可(N-1)天之前的回归线上的值(相当于前面说的a值)还是不知道,因为指标均为序列变量,无法倒推。
一般来说,有两种方法,一种是全用基本函数,用起来有点麻烦,要调整参数。还有一种是借用VBS来倒推数据。
留作思考题吧。
九、
函数: CORR(X1,X2,N)
参数: X为数组,N为统计周期
返回: 返回数组
说明: 求2个序列间的相关系数。
示例: CORR(CLOSE,HIGH,10)表示求10周期VAR1与VAR2的相关系数
转贴《教育统计学》中,对相关系数的描述:
相关系数
在教育研究中,常涉及到两个事物(变量)的相互关系问题,例如,学习成绩与非智力因素的关系,数学成绩与物理成绩的关系,男女生学习成绩的关系,等等。其关系表现为以下三种变化;第一,正相关:一个变量增加或减少时,另一个变量也相应增加或减少;第二,负相关:一个变量增加或减少时,另一个变量却减少或增加;第三,无相关:说明两个变量是独立的,即由一个变量值,无法预测另一个变量值。统计学中,就用“相关系数"来从数量上描述两个变量之间的相关程度,用符号“r"来表示。
相关系数取值范围限于:-1≤r≤+1
PHP代码:--------------------------------------------------------------------------------
相关系数表示的意义
相关系数(r) 0.00   0.00-±0.3   ±0.30-±0.50
相关程度     无相关  微正负相关    实正负相关
相关系数(r) ±0.50-±0.80     ±0.80-±1.00
相关程度      显著正负相关       高度正负相关
--------------------------------------------------------------------------------
相关系数函数CORR,可以比较两只个股或个股与大盘的指标或价格在N周期内走势的相似程度,函数返回的数值越大,相似程序越高。
下面是最后N周期内,个股与大盘收盘价走势相似程度的示例代码:
ts0:=barssince(c);
ts1:=barslast(barssince(backset(islastbar,N+1))=0);
ts:=if(ts0bl:=ref(IndexC/C,Ts);{确定基准日压缩比率}
fc:c*bl/bl;
fIndexC:IndexC/bl;{按比率压缩大盘指数,以便跟个股收盘比较}
相似程度:CORR(fc,fIndexC,N),linethick0;
简单的应用方法:
1、指标作为副图指标,可通过对“相似程度”排序,找出近期走势跟大盘相似程度较高的个股。
2、也可以把代码中的IndexC换成其它作为样本的个股,找出同类走势的个股。
代码中,有一行:
fc:c*bl/bl;
大家可能会有疑问,“bl/bl”不是等于1吗?乘以1那不是多此一举?
不妨在代码中删除“*bl/bl”,再试试效果。
您理解了吗?这是一个小技巧:)
十、
函数: CORRTPL(TPLNAME,X,D,N)
参数: X为数组,N为统计周期
返回: 返回数组
说明: CORRTPL(TPLNAME,X,D,N),求与模板相关系数。
D为常数,表示0:开盘价,1:最高价,2:最低价,3:收盘价,4:成交量,5:成交额
N表示计算最后多少组,为0表示计算所有,用于当前选股时设为1可大大减小计算量
示例: CORRTPL('一马平川',CLOSE,3,1)表示求收盘价线与一马平川收盘价线的最后一组的相关系数
飞狐基本函数简介之指标函数
所谓指标函数,就是头疼函数。一些指标的算法极为繁琐,做成基本函数,用起来就方便了。
我自己也是摸着石头过河。
一、
函数: ZIG(K,N)
参数: N为常数,参数K可为序列或常数,K取0--3,表示0:开盘价,1:最高价,2:最低价,3:收盘价;也可为ma(close,5)等。
返回: 返回数组
说明: 当价格变化量超过N%时转向
示例: ZIG(3,5) 表示收盘价的5%的ZIG转向
ZIG(MA(C,20),5)表示均线的5%的ZIG转向
ZIG,之字形。
1、K可以作为参数调整,也可以直接写其它的指标线,如"kd.k"。N也可以做成参数调整。
2、在K线中,ZIG只能对一根指标线进行转向处理。要想高点在H位置,低点在L位置,ZIG是做不到的。
3、ZIG到底是如何体现“未来”的?即它是怎么画出来的?见最后的说明。
4、ZIG输出的是数值,不是直线。
5、ZIG一般使用在看波浪、看形态上。
ZIG函数是未来函数之第二大嫌疑。在交易系统中用未来函数,就是用BACKSET或ZIG,可以使许多人“梦想成真”。
由于“未来函数”在交易系统中可以大大作弊,才使其在指标和选股公式中也一起“臭名昭著”。
二、
函数: PEAK(K,N,M)
参数: N为常数,参数K可为序列或常数,K取0--3,表示0:开盘价,1:最高价,2:最低价,3:收盘价;也可为ma(close,5)等,M为大于等于1的整数
返回: 返回数组
说明: 表示之字转向ZIG(K,N)的前M个波峰的数值
示例: PEAK(1,5,1) 表示%5最高价ZIG转向的上一个波峰的数值
PEAK(MA(C,20),5,1) 表示均线的5%的ZIG转向的上一个波峰的数值
PEAK,高峰。
这个函数可以取到ZIG波峰的数值。如果K取1,波峰取的是H。如果K取3,波峰是C的波峰,可不是H。
三、
函数: PEAKBARS(K,N,M)
参数: N为常数,参数K可为序列或常数,K取0--3,表示0:开盘价,1:最高价,2:最低价,3:收盘价;也可为ma(close,5)等,M为大于等于1的整数
返回: 返回数组
说明: 表示之字转向ZIG(K,N)的前M个波峰到当前的周期数
示例: PEAKBARS(1,5,1)
表示%5开盘价ZIG转向的上一个波峰到当前的周期数
PEAKBARS(MA(C,20),5,1)表示均线的5%的ZIG转向的上一个波峰到当前的周期数
这个函数用来定波峰的位置的。有了位置,画两根线试试。
ZIG(1,N);
A1:=BACKSET(ISLASTBAR,PEAKBARS(1,N,1)+1);
A2:=A1>REF(A1,1);
B1:=BACKSET(ISLASTBAR,PEAKBARS(1,N,2)+1);
B2:=B1>REF(B1,1);
C1:=BACKSET(ISLASTBAR,PEAKBARS(1,N,3)+1);
C2:=C1>REF(C1,1);
DRAWLINE(B2,H,A2,H,1);
DRAWLINE(C2,H,B2,H,1);{N:3.1.99,主图叠加}
四、
函数: TROUGH(K,N,M)
参数: N为常数,参数K可为序列或常数,K取0--3,表示0:开盘价,1:最高价,2:最低价,3:收盘价;也可为ma(close,5)等,M为大于等于1的整数
返回: 返回数组
说明: 表示之字转向ZIG(K,N)的前M个波谷的数值
示例: TROUGH(2,5,2) 表示%5最低价ZIG转向的前2个波谷的数值
TROUGH(MA(C,20),5,2) 表示均线的5%的ZIG转向的前2个波谷的数值
TROUGH,水槽,波谷。
与PEAK对应。
五、
函数: TROUGHBARS(K,N,M)
参数: N为常数,参数K可为序列或常数,K取0--3,表示0:开盘价,1:最高价,2:最低价,3:收盘价;也可为ma(close,5)等,M为大于等于1的整数
返回: 返回数组
说明: 表示之字转向ZIG(K,N)的前M个波谷到当前的周期数
示例: TROUGHBARS(2,5,2) 表示%5最低价ZIG转向的前2个波谷到当前的周期数
TROUGHBARS(MA(C,20),5,2) 表示均线的5%的ZIG转向的前2个波谷到当前的周期数
对应于PEAKBARS。
这样在应用时,ZIG的各点的数值是知道的,波峰和波谷的数值和位置也可以引用到了。
“综合运用”:
ZIG(3,N),CROSSDOT;{主图叠加}
ZIG(3,N),CIRCLEDOT,COLORMAGENTA;
A:=PEAKBARS(3,N,1);
B:=TROUGHBARS(3,N,1);
B>A,COLORGREEN;
A>B,COLORRED;{五彩K线}
六、
函数: SAR(N,S,M)
参数: N为计算周期,S为步长,M为极值
返回: 返回数组
说明: 计算抛物转向点
示例: SAR(10,2,20)
表示计算10日抛物转向,步长为2%,极限值为20%
STOP AND REVERSE,转向点指标,停顿指标,又称抛物线指标,全称为抛物线转向指标。
SAR指标,也是王尔德(RSI的发明人)发明的,主要用于与趋向指标DMI(DIRECTION MOVEMENT INDEX)结合使用。
SAR一般以圆圈的形式输出,实际上也是输出数值的,形式可以用描述函数进行改变。
说是抛物转向,输出的并不是标准的抛物线。
目前的转向指标,典型的有三个,ZIG、SAR(因为做成基本函数了,所以有数值输出),还有一个是结构波浪,可以用基本函数做出,但只能输出直线,不能输出完整的数值。
SAR的画法,在众多的股票软件中,是一种百花齐放的局面。由于飞狐提供了开放可定制的公式平台,所以,只要有明确思路的SAR画法,都可以在飞狐实现。飞狐中基本函数SAR的具体画法在最后介绍。
SAR的画法,矛盾集中在数个方面,所以没有一种方法能够一统江山。
1、起算点,是从看涨开始还是从看跌开始?怎么判断画前的看涨和看跌?
2、转向条件满足时,是迟一个周期跳转还是迟两个周期跳转?
3、跳转后的第二个周期,以0步长计算,还是以STEP步长计算?
4、当N取1时,应不应该有输出?等等
飞狐的主要问题是在起算点就满足跳转条件时,会延迟一个周期跳转,而后面的就不延迟跳转了。分析家的问题是起算点有时是找不准前期极值的。这些都不是大问题,因为后面的计算是趋向于统一的,起算点附近的SAR问题,一般无人问津。
七、
函数: SARTURN(N,S,M)
参数: N为计算周期,S为步长,M为极值
返回: 返回数组
说明: 若发生向上转向则返回1,若发生向下转向则返回-1,否则为0
由于可以返回三个值,就可以判断是向上的跳转还是向下的跳转。
SA:=SAR(3,2,20);
A:=SARTURN(3,2,20);
B:=A=1;
D:=A=-1;
E:=BARSLAST(B)>BARSLAST(D);
F:=NOT(E);
DRAWICON(E,SA,10);
DRAWICON(F,SA,11);{主图叠加}
如果想颜色更鲜艳一些,可调用BMP文件,把最后两句改为:
DRAWICON(E,SA,'S31');
DRAWICON(F,SA,'S28');
八、
函数: COST(N)
参数: N为常数,表示百分比
返回: 返回数组
说明: 计算成本分布情况,该函数仅对日线分析周期有效
示例: COST(10)
表示10%获利盘的价格是多少,即有10%的持仓量在该价格以下,其余90%在该价格以上,为套牢盘
函数: WINNER(A)
参数: A为数组或常数
返回: 返回数组
说明: 计算获利盘比例,该函数仅对日线分析周期有效
示例: WINNER(CLOSE)
表示以当前收市价卖出的获利盘比例,例如返回0.1表示10%获利盘
WINNER(10.5)
表示10.5元价格的获利盘比例
COST,成本。WINNER,优胜者,获利。
两者互相换算。COST是根据获利盘估算价格,WINNER是根据价格估算获利盘。
之所以说估算,是因为要精确算,必须把每笔成交的价格和成交量都记录下来,一般这是很难做到的。
就算能做到,筹码分布方面的技术分析有效么?这就看各人自己的取舍了,股市中目前还没有发现包赚不赔的技术指标。
COST(WINNER(C)*100);
C;
此两者趋于相等。也说明这两个函数支持序列变量。
平均成本价的计算。将刚好完全换手的每笔成交量和成交价格相乘,然后除以这期间总的成交量,即为平均成本价。
平均成本价格:COST(50);
AA:=SUMBARS(VOL,CAPITAL);
平均成本价:SUM(C*V,AA)/SUM(V,AA);
实际上这两种方法都是估算出来的,后者的误差可能更大一些。
相当于一箱苹果是2元一斤,另两箱苹果是5元一斤。三箱苹果的平均价格就是(2*1+5*2)/(1+2)=4元。
这有点统计学中的调和平均值的味道了。筹码分布,要搞得复杂,可以计算中位值、众位值,研究正态分布、偏态分布,还有集中度、穿透力,当真是花样繁多,只能留给有兴趣的朋友自己研究了。
筹码分布的峰位在哪个价格区域,是筹码分布爱好者很想知道的一个指标。用COST可以估算出来,留作思考题吧。
九、
函数: PPART(N)
参数: N为常数
返回: 返回数组
说明: 远期成本比例,表示N周期前的成本占总成本的比例,如返回0.3表示30%
示例: PPART(20); 20天前的成本占总成本的比例
远期成本比例,只要把近N天之成本比例算出来,远期的自然就出来的。因为总成本为百分之百的换手率。
远期成本比例:PPART(N)*100;
A:=100*V/CAPITAL;
远期成本:100-SUM(A,N);{参数N:10.1.999}
两者基本相等。
十、
函数: PWINNER(N,X)
参数: N为常数,X为数组或常数
返回: 返回数组
说明: 远期获利盘比例
示例: PWINNER(20,CLOSE);表示20天前的那部分成本以当前收市价卖出的获利盘比例,例如返回0.2表示20%获利盘
以上几个筹码指标,在飞狐中,目前已经支持多周期分析,即在分笔、五分钟、周等周期上都有输出。
附一、ZIG线的画法。
假设在手工画线年代,ZIG线是怎么画出来的,实际上也介绍了算法。
以zig(3,5),即收盘价转向,转向要求5%,在600036招商银行上为例。
从第一根K线上的收盘价,慢慢往后看。直到当天的C,和以前的K线的最低C值相比的涨幅,或与最高C值相比的跌幅超过5%时,才在当天作出记号,称之为拐点。涨幅超过5%的,称为向上的拐点,跌幅超过5%的,称为向下的拐点。
例中,先有向下的拐点,于是第一根K线上的C值,就是高点了。在向下的拐点出现之后的每根K线上,相比较记录最低之C值。然后把当天的C值,与记录的最低C值比较,看有没有涨幅超过5%。例中,到6月24日,才产生满足条件之向上的拐点。向上的拐点出现之后,回过头,在与上一个向下的拐点之间,找到一个最低的C,作为ZIG的低点。
产生向上拐点之后,就在之后的K线中记录C的最大值。当出现当天的C值,与最大C值相比,跌幅超过5%时,记为向下的拐点。例中,到7月12日,产生向下的拐点。于是从向下的拐点回过头来,在与上一个向上的拐点之间,找到一个最高的C,作为ZIG的高点。如此循环。也就是说,ZIG的高点和低点,是根据向上和向下的拐点出来之后,回溯过去才找到的。这就是ZIG未来数据的实质所在。
在最近期间,ZIG的未来数据,要追溯到最近的一个拐点之前的一个峰点。且看最近期间的ZIG线是怎么画出的。
从最后一根K线往前,如果先出现向下的拐点,则在此拐点到目前的K线中求出最小收盘价所在的K线,为低点。这个低点可能与目前的K线重合。重合的话目前的K线为低点,不重合的话目前K线为高点。
如果先出现向上的拐点,则在此拐点到目前的K线中求出最高收盘价所在的K线,为高点。此高点与目前的K线重合,则目前的K线为高点,否则为低点。
附二、SAR的画法。
SAR(N,S,M),参数:N为计算天数,STEP=调整系数×100,MAXP=调整系数上限×100。
以sar(5,2,20),circledot;用在日线中为例。
SAR只跟K线中的H、L有关,与O、C无关。
一、起画点
当N取5时,起画点就在第六根K线上。第一步要做的事,就是由第一根K线到第五根K线判断是看涨还是看跌。如是看涨,就要把起画点画成看涨SAR,如是看跌,就要把起画点画成看跌SAR。
A:(H-REF(H,1)+L-REF(L,1))>0 AND BARSCOUNT(C)=2;
如果A成立,则先画看跌SAR(SAR在K线之上);如果A不成立,则先画看涨SAR(SAR在K线之下)。这是我的观察所得,各位不妨去看看是不是如此。就是说不管N取多少,起画点是根据第一、二根K线上的H、L决定的。
二、看涨SAR
第一个看涨SAR的值,是前五天的最低价,即REF(LLV(L,5),1);然后看看SAR值是不是比L小,是的话继续,否则在下一天跳转。
第二个看涨SAR的值,是
SAR(2)=SAR(1)+AF1*(REF(HHV(H,5),1)-SAR(1)),
SAR(1)即为第一个看涨SAR的值。AF1是调整系数,如果当天的H比前五天的最高H大,则要+0.02(得0.04),否则还是取0.02。然后看看SAR值是不是比L小,是的话继续,否则在下一天跳转。
第三个看涨SAR的值,是
SAR(3)=SAR(2)+AF2*(REF(HHV(H,5),1)-SAR(2)),
计算方法与求第二个看涨SAR类同,只是当天的H是否比前五天的最高H大还要判断,是的话AF2=AF1+0.02,否则取AF1。
然后看看SAR值是不是比L小,是的话继续,否则在下一天跳转。
因为没有跳转的话,REF(HHV(H,5),1)-SAR(2)的值肯定大于0,所以看涨SAR一直是向上升的。
如此循环往复,直到跳转条件成立就跳转,去画看跌SAR了。而调整系数AF的值,经过反复累积的话,最大是不能超过0.2的。
三、看跌SAR
第一个看跌SAR的值,是前五天的最高价,即REF(HHV(H,5),1);然后看看SAR值是不是比H大,是的话继续,否则要在下一天跳转。
第二个看跌SAR的值,是
SAR(2)=SAR(1)+AF1*(REF(LLV(L,5),1)-SAR(1)),
SAR(1)即为第一个看跌SAR的值。AF1是调整系数,如果当天的L比前五天的最低L小,则要+0.02(得0.04),否则还是取0.02。然后看看SAR值是不是比H大,是的话继续,否则在下一天跳转。
第三个看跌SAR的值,是
SAR(3)=SAR(2)+AF2*(REF(LLV(L,5),1)-SAR(2)),
计算方法与求第二个看跌SAR类同,只是当天的L是否比前五天的最低L小还要判断,是的话AF2=AF1+0.02,否则取AF1。
然后看看SAR值是不是比H大,是的话继续,否则在下一天跳转。
因为没有跳转的话,REF(LLV(L,5),1)-SAR(2)的值肯定小于0,所以看跌SAR一直是向下跌的。
如此循环往复,直到跳转条件成立就跳转,去画看涨SAR了。而调整系数AF的值,经过反复累积的话,最大是不能超过0.2的。
SAR没有未来之嫌,但是N、S、M的调整对SAR影响都很大,感觉灵敏性过大。
飞狐基本函数简介之大盘函数和常数函数
大盘函数,就是公式应用于个股中时,可以引用相应大盘的相应数据。
常数函数用于取得一些常数数据。
一、
函数: INDEXO
参数: 无
返回: 数组
说明: 表示对应大盘同期的开盘价。(该函数对分笔成交分析周期无效)
函数: INDEXH
参数: 无
返回: 数组
说明: 表示对应大盘同期的最高价。(该函数对分笔成交分析周期无效)
函数: INDEXL
参数: 无
返回: 数组
说明: 表示对应大盘同期的最低价。(该函数对分笔成交分析周期无效)
函数: INDEXC
参数: 无
返回: 数组
说明: 表示对应大盘同期的收盘价。(该函数对分笔成交分析周期无效)
函数: INDEXV
参数: 无
返回: 数组
说明: 表示对应大盘同期的成交量。(该函数对分笔成交分析周期无效)
函数: INDEXA
参数: 无
返回: 数组
说明: 表示对应大盘同期的成交额。(该函数对分笔成交分析周期无效)
当主图显示的是沪个股时,取INDEXC就是上证指数的收盘价,其它类推。
当主图显示的是深个股时,取INDEXC等就是深成指的收盘价,其它类推。
这对引用大盘相应数据是很方便的。
如果你想引用0号指数的相应数据,就要先建立0号指数(自定义指数),比如0号指数的代码是“ 宋体'>BI01”,引用时就用
"BI01$CLOSE";
"BI01$VOL";
等。
二、
函数: INDEXADV
参数: 无
返回: 数组
说明: 表示对应大盘同期的上涨家数。(该函数对分笔成交分析周期无效)
函数: INDEXDEC
参数: 无
返回: 数组
说明: 表示对应大盘同期的下跌家数。(该函数对分笔成交分析周期无效)
当主图显示的是沪个股时,取INDEXADV就是沪A股中的上涨家数。
当主图显示的是深个股时,取INDEXADV就是深A股中的上涨家数。
INDEXDEC的用法一样。
这与以前在行情函数中介绍的ADVANCE和DECLINE有点类似,不过ADVANCE、DECLINE只能用于大盘,在主图为个股时不会有输出。
三、
函数: CAPITAL
参数: 无
返回: 返回常数
说明: 返回流通盘大小,单位为手。对于A股得到流通A股,B股得到B股总股本,指数为0
前面已经用过很多次了。
流通盘万股:CAPITAL/100,LINETHICK0;
换手率:100*V/CAPITAL,LINETHICK0;
四、
函数: VOLUNIT
参数: 无
返回: 返回常数
说明: 返回每手股数,对于股票值为100,债券为1000
这样也可据此识别股票和债券了。
五、
函数: FINANCE(N)
返回: 返回常数
说明: 取得参数对应的基本财务数据 N 含义  单位  N 含义  单位
1 总股本 万股 29 税后利润 千元
2 国家股 万股 30 净利润 千元
3 发起人法人股 万股 31 未分配利润 千元
4 法人股 万股 32 每股未分配 元
5 B股 万股 33 每股收益 元
6 H股 万股 34 每股净资 元
7 流通A股 万股 35 调整每股净资 元
8 职工股 万股 36 股东权益比率 %
9 A2转配股 万股 37 净资收益率 %
10 总资产 千元 38 经营现金流入 千元
11 流动资产 千元 39 经营现金流出 千元
12 固定资产 千元 40 经营现金流量 千元
13 无形资产 千元 41 投资现金流入 千元
14 长期投资 千元 42 投资现金流出 千元
15 流动负债 千元 43 投资现金流量 千元
16 长期负债 千元 44 筹资现金流入 千元
17 资本公积金 千元 45 筹资现金流出 千元
18 每股公积金 千元 46 筹资现金流量 千元
19 股东权益 千元 47 现金及等价物 千元
20 主营收入 千元 48 应收帐款周转率 %
21 主营利润 千元 49 存货周转率 %
22 其他利润 千元 50 总资产周转率 %
23 营业利润 千元 51 流动比率 %
24 投资收益 千元 52 速动比率 %
25 补贴收入 千元 53 主营业务增长率 %
26 营业外收支 千元 54 税后利润增长率 %
27 上年损益调整 千元 55 净资产增长率 %
28 利润总额 千元 56 总资产增长率 %
六、
函数: DYNAINFO(N)
返回: 返回常数
说明: 取得参数对应的动态行情数据
N 含义  N 含义
3 前收 31 卖一量
4 今开 32 卖二量
5 最高 33 卖三量
6 最低 34 卖一价
7 最新 35 卖二价
8 总手 36 卖三价
9 现手 37 换手率
10 总额(持仓) 38 5日均量
11 均价 39 市盈率
12 涨跌 40 成交方向
13 振幅 41 总市值
14 涨幅 42 流通市值
15 委比 43 买四量
16 委差 44 买五量
17 量比 45 买四价
18 委买 46 买五价
19 委卖 47 卖四量
20 委买价 48 卖五量
21 委卖价 49 卖四价
22 内盘 50 卖五价
23 外盘 51 成交笔数
24 涨速 52 每笔均量
25 买一量
26 买二量
27 买三量
28 买一价
29 买二价
30 买三价
七、
函数: SPLITDATA(N)
返回: 返回常数
说明: 除权数据函数
示例: SPLITDATA(N) 取得对应除权数据
N参数表示取那种分红数据
N=0 有除权时为1,否则为0
N=1 红股,得到当时每十股送几股
N=2 配股,得到当时每十股配几股
N=3 配股价,得到当时配股价格
N=4 红利,得到当时每十股派息几元
这些常数函数,完全没有必要记忆,在公式编辑器中,点一下插入函数,马上可以查到相关的说明。
飞狐基本函数简介之解盘函数
函数: EXPLAIN(COND,TEXT)
参数:
用法: EXPLAIN(COND,TEXT),在COND条件满足时在[解]中输出解盘文字
说明: 在[解]中输出解盘文字
示例: EXPLAIN(HIGH>=HHV(HIGH,20), '创20天新高');表示在创20天新高时在[解]中输出解说。
以下是的说明:
一、①新增解盘函数 EXPLAIN(COND,TEXT);(随十字游标对应位置对应COND是否成立在[解]中显示TEXT)
{在[解]中输出解盘文字。
用法:EXPLAIN(COND,TEXT),在COND条件满足时在[解]中输出解盘文字。
例如:EXPLAIN(HIGH>=HHV(HIGH,20), '创20天新高')表示在创20天新高时在[解]中输出解说。}
②新增可输出带数值的解盘函数 EXPLAINEX(COND,TEXT,NUMBER,PRECISION,TYPE);
{在[解]中输出带数值的解盘。
用法:EXPLAINEX(COND,TEXT,NUMBER,PRECISION,TYPE),在COND条件满足时在[解]中输出数值解说。PRECISION为小数显示位数,TYPE为0不换行,1则换行显示下一个解盘
例如:EXPLAINEX(HIGH>=HHV(HIGH,20), '20天新高价:',HIGH,2,1)表示在创20天新高时在[解]中输出数值解说。}
EXPLAIN,解释、说明。单输出解盘文字的,用EXPLAIN;要输出带数值的解盘要用EXPLAINEX。
一个公式中可以输出多个解盘函数。交易信息中的“解”中,可以输出多个公式的解盘函数。
解盘函数的输出文字或数值,颜色均可设置,在函数中目前都可以设置。
以一个主图叠加公式和一个副图公式,同时运行,应该能说明问题了。
MA5:MA(C,5);
MA10:MA(C,10);
MA20:MA(C,20);
EXPLAIN(MA5>MA10 AND MA10>MA20, 'MA5:'),COLORRED;
EXPLAINEX(MA5>MA10 AND MA10>MA20, 'MA10:',MA10,2,1),COLORGREEN;
EXPLAINEX(MA5>MA10 AND MA10>MA20, 'MA20:',MA20,2,1),COLORYELLOW;{主图叠加}
副图公式:
MA5:MA(C,5);
MA10:MA(C,10);
MA20:MA(C,20);
EXPLAINEX(MA5>MA10 AND MA10>MA20, 'MA5:',MA5,3,1);
EXPLAINEX(MA5>MA10 AND MA10>MA20, 'MA10:',MA10,3,0);
EXPLAINEX(MA5>MA10 AND MA10>MA20, 'MA20:',MA20,3,1);
函数: EXPLAINICON(COND,ICON)
参数: ICON为数字时4种图标编码为1-4(阴雨、初彩、中彩、彩虹)。为字符串表示自制图标
用法: EXPLAIN(COND,TEXT),在COND条件满足时在[解]中输出解盘文字
说明: 在[解]中绘制解盘图标。
示例: EXPLAINICON(HIGH>=HHV(HIGH,20), 2)
表示在创20天新高时在[解]中画2号图标(雨后初彩虹)。
EXPLAINICON(HIGH>=HHV(HIGH,20), 'MyBMP')
表示在创20天新高时在[解]中画FmlDLL子目录下的自制图标MyBMP.BMP。
可用ALIGN0中对齐,ALIGN1左对齐,ALIGN2右对齐
图例:
EXPLAINICON(c>0,1);
EXPLAINICON(c>0,2);
EXPLAINICON(c>0,3);
EXPLAINICON(c>0,4);