-
自编公式语法与函数详解:
■
自编公式支持的操作符:
⒈+操作符,表示“加法运算”
。
⒉-操作符,表示“减法运算”
。
⒊
*
操作符,表示“乘法运算”
。
⒋
/
操作符,表示“除法运算”
。
例如:
C
LOSE
+
OPEN
表示求收盘价及开
盘价的和。
CLOSE
-
OPEN
表示求收盘
价及开盘价的差。
CLOSE*OPEN
表示求收盘价及开盘价的积。
CLOSE/OPEN
表示求收盘价及开盘价的商。
⒌
p>
&&
操作符,表示“与运算”
。
⒍
||
操作符,表示“或运算”
。
⒎
>
操作符,表示“大于运算”
。
⒏
<
操作符,表示“小于运算”
。
⒐
>=
操作符,表示“大于等于运算”
。
⒑
<=
操作符,表示“小于等于运算”
。
⒒
<>
操作符,表示“不等于运算”
。
⒓
=
操作符,表示“等于操作符”
。
例如:
CLOSE>OPEN
表示判断当前
周期是否收阳。
CLOSE=OPEN
表示判断当前周期是否平盘。
⒔
p>
:=
操作符,表示定义一个局部变量(这个变量在画图时是不画的)
。
⒕
:
操作
符,表示声明了一个变量,并且在画图时画出它并且按这个名字显示。
例如:
TMP1:=(OPEN CLOSE)/2;
MA(TMP1,10);
上面的
公式的第一个语句定义了一个局部变量
TMP1
,在下面一行中
引用了这个局部变
量,但是要注意的是这个公式在画图的时候只画了第二条语句所求出的
结果。
相反下面这个公式则需要画出两条线,
第一条是自己定义的均价
线,
同时显示了均价的
名称为
AVP<
/p>
,
第二条线是均价的简单移动平均线。
AVP:(OPEN
CLOSE)/2;
MA(AVP
,10);
■
自便公式支持的函数
1.
引用数据
AVPRICE
引用均价
(
在盘后对于国内三个期货交易所指结算价
)
CLOSE
引用收盘价
(
在盘中指最新价
)
HIGH
引用最高价
LOW
引用最低价
OPEN
引用开盘价
OPI
引用持仓量
REF(X,N)
引用
X
在
N
个周期前的值
p>
例
:REF(CLOSE,5);
表示引用当前周期前第
5
个周期的收盘价
p>
REFX(X,N)
引用
N
个周期后的数据。
(
N<
/p>
为大于等于
1
的整数)
< br>(未来函数)
例:
REFX(
CLOSE,5);
表示引用自当前周期后第
5
个周期的收盘价
SETTLE
引用结算价
(
只有盘后才能引用当日的结算价
)
VOL
引用成交量
2.
金融统计
BACKSET(X,N)
若
X
非
0,<
/p>
则将当前位置到
N
周期前的数值设为
p>
1
。
例:
BACKSET(CLOSE>OPEN,3);
表示当
K
线收阳时,自当前位置到
3
周期前的数值设为
1
BARSLAST(X)
求上一次条件成立到当前的周期数。
COUNT(X,N)
表示统计在
N
周期内满足
X
条件的周期数。
如果
N
为
0
则表示从第一天开始算
起。
例:
WR:=-100*(HHV(HIGH,N)-CLOSE)/(HHV(H
IGH,N)-LLV(LOW,N)); COUNT(WR>80,5);
表示统计
在
5
个周期内满足
WR>80
的次数
DMA(X,A)
返回
X
的动态移动平均,其中
A
必须介于
0
及
1
之间。
计算方法:
DMA(N)=DMA(N-1)*(1-A)
X(N)*A
其中
DMA(N-1)
为第
(N-1)
天的
DMA
值
EMA(X,N)
表示求
X
在
N
周期内的平滑移动平均。
计算方法:
EMA(N)=[2*X
(N-1)*EMA(N-1)]/(N 1)
其中
EMA(
N-1)
为第
(N-1)
天的
EMA
值
EMA2(X,N)
表示求
X
在
N
周期内的加权平均。
计算方法:
EMA2(N)=(N*X0
(N-1)*X1 (N-2)*X2 ... 1*XN)/(N (N-1) (N-2) ... 1),
X0
表示本周期值,
X1
表示上一周期
值
...
HHV(X,N)
得到<
/p>
X
在
N
周期内的
最高值,如果
N
=
0
< br>,则从第一个有效周期开始算起。
例:
HHV(HIGH,13);
求
13
< br>个周期内的最高价的最大值。
HHVBARS(X,N)
得到
X<
/p>
在
N
周期内的最高值位置到当前的周期数
。如果
N=0
,则从第一个有
效周期开
始算起。
例:
HHVBARS(VOL,0);
求历史成交量最大的周期到当前的周期数
LLV(X,N)
得到
X
在
N
周期内的最小值,如果
N=0
,则从第一个有效周期开始算起。
< br>例:
LLV(LOW,25);
表示求
< br>25
个周期内最低价的最小值
LLVBARS(X,N)
得到
X<
/p>
在
N
周期内的最小值的位置到当前的周期
数。如果
N=0
则从第一个有
效周期开
始算起。
例:
LLVBARS(VOL,0);
求历史成交量最小的周期到当前的周期数
MA(X,N)
求
X
在
N
周期内的简单移动平均。
计算方法:
MA=(A1 A2 A3 A4 A5)/5 <
/p>
求
A
在
5
个周期内的简单移动平均
ZIGZAG(X,P
,C)
之字转
向(未来函数)
,当
C
取
1
时,
P
为百分比数;当<
/p>
C
取
0
时,
p>
P
为价位
差值;
例:
ZIGZAG(HIGH,10,1);
< br>表示最高价的
10%
的之字转向
ZIGZAG(MA(HIGH,34),100,0);
表示
34
个周期内最高价均线的
100
p>
个价位的之字转向
PEAK(X,P
,M,C)
取得<
/p>
ZIGZAG
前
M
个波峰的值。
(未来函数)
其中<
/p>
X
为数据,
P
为
转折值(如果
C
为
1
< br>的话,这个值为百分比,否则为绝对值)
,
M
为大
于等于
1
的整数。<
/p>
例:
PEAK(HIGH,10,1,
1);
表示最高价的
10%
的之字转向
的上一个波峰的数值
PEAK(MA(HIGH,34),1
00,1,0);
表示
34
个周期内最
高价均线的
100
个价位的之字转向的上一个
< br>波峰的数值
PEAKBARS(X,P
,M,C)
取得
ZIGZAG
前
M
个波峰到当前周期的周期数。
(未来函数)
例:
PEAKBARS(HIGH,10,1,1);
表示最高价的
10%
的之字转向的上一个波峰到当前的
周期数
PEAKBARS(MA(
HIGH,34),100,1,0);
表示
34
个周期内最高价均线的
100
个价位的之字转向的上
一个波峰到当前的周期数
TROUGH(X,P
,M,C)
取
得
ZIGZAG
前
M
< br>个波谷的值。
(未来函数)
例
:
TROUGH(LOW,10,1,1);
表示最低价的
p>
10%
的之字转向的上一个波谷的数值
TROUGH (MA(LOW,34),100,1,0)
;
表示
34
个周期内最低价均线的
p>
100
个价位的之字转向的上一
个波谷的数
值
TROUGHBARS(X,P
,M,C)
< br>取得
ZIGZAG
前
M
个波谷到当前周期的周期数(未来函数)
TR
OUGHBARS(LOW,10,1,1);
表示最低价的
1
0%
的之字转向的上一个波谷到当前的周期数
TROUGHBARS (MA(LOW,34),100,
1,0);
表示
34
个周期内最低价均
线的
100
个价位的之字转向的
上一个
波谷到当前的周期数
SAR(N,
Step, Max)
得到抛物转向值。
N
< br>为计算周期
,Step
为步长
,
Max
为极值。
例:
SAR(17,3,30);
表示计算
17
个周期抛物转向,步长为
3%
,极限值为
30%
SMA(X,N,M)
得到
X
在
N
个周期内的移动平均,
M
为权重。
< br>
计算方法:
SMA(N)=SMA(N-1)*(N-M)/N
X(N)*M/N
SUM(X,N)
得到
X
在
N
周期内的总和,如果
N=0
,则从第一个有效周期开始算起。
例
: SUM(VOL,10);<
/p>
表示统计
10
周期内的成交量总和
SUMBARS(X,A)
得到
X
向前累加直到大于
A
时的周期数。
TRMA(X,N)
求
X
在
N
周期内的三角移动平均。
TSMA(X,N)
求
p>
X
在
N
周期内的时
间序列移动平均。
计算方法:
TSMA(X,N)= FOCAST(X,N)
SLOPE(X,N)
3.
数理统计
AVEDEV(X,N)
求
X
在
N
周期内的平均绝对偏差
< br>
DEVSQ(X,N)
数据偏差平方和。
FORCAST(X,N)
得到
X<
/p>
的
N
周期线性回归预测值。
例
:FORCAST(CLOSE,5);
表示求
5
周期线性回归预测
< br>
SLOPE(X,N)
得到
X
在
N
周期内的线性回归的斜率
例
:SLOPE(CLOSE,5);
p>
表示求
5
周期线性回归线的斜率
STD(X,N)
得到
X
在
N
周期内的标准差
STDP(X,N)
得到
X
在
N
周期内的总体标准差
VAR(X,N)
得到
X
在
N
周期内的样本方差
VARP(X,N)
得到
< br>X
在
N
周期内的总体样本方差<
/p>
数理统计举例说明:
设一个数列,数列中数据的总个数为
N
,以今天(
p>
2005-10-14
)五天
内的
A0605
收盘价为例,
N
就为
5
。数列的内容为:
{
2766
,
2805
,
2814
,
2886
,
2885
}
。
1
、
< br>算术平均值
MA(CLOSE,5)
:
< br>数据总和除以总个数
N
。
(2766 2805 2814 2886
2885)/5=2831.20
。
可以用公式
MA(CLOSE,5),
从今天的值上看出。
p>
2
、偏差:每
个数据,减去算术平均值的结果。
2766-2831.20
=-65.2
,
2805-2831.20=-26.2,
2814-2831.20=-17.2, 2886-2831.20=54.8,
2885-2831.20=53.8,
各偏差相加,应该是等于
0
的。
3
、平均绝对偏差
AVEDEV(X,N)
< br>:将偏差的绝对值相加,除以总个数
N
。
(65.2 26.2 17.2 54.8
53.8)/5=43.44
4<
/p>
、数据偏差平方和
DEVSQ(X,N)
:将偏差的平方相加。
(-65.2)2 (-26.2)2
(-17.2)2 (54.8)2
(53.8)2=11130.80
5
p>
、总体样本方差
VARP(X,N)
:将偏
差的平方相加,总和除以总个数
N
。用公式可以这样算:
(-65.2)2 (-26.2)2 (-17.2)2
(54.8)2 (53.8)2/5=2226.16
6
、
样本方差
VAR(X,N)
:
是总体方差的
N/(N-1)
倍。
2226.16*5/(5-1)=2782.70
估算样本
方差,
总比总体样本方差大一点,当
N
够大时,两者趋于相等。
7
、总体标准差
STDP(X,N)
:方差的开
方。
[(-65.2)2 (-26.2)2
(-17.2)2 (54.8)2 (53.8)2/5]?=47.18
8
、标准差
STD(X,N)
:估算样本方差的开方。
[2226.16*5/(5-1)]?=52.75
同样,
估算标准差也
比总体标准差大一点,当
N
够大时,两者趋于相等。
4.
逻辑判断
BETWEEN(A,B,C)
判断
A
是否位于
B
及
C
之间,如果
A
介于
B
,
C
之间则返回
1,
否则返回
0
。
例:
BETWEEN(CLOSE,MA5,MA40); <
/p>
表示收盘价介于
5
日均线与
40
日均线之间。
CROSS(X,Y)
如果
X
上穿
Y
则返回
1(y
es),
否则返回
0(no)
。
例:
CROSS(CLOSE,MA(CL
OSE,5));
表示收盘线从下方向上穿过
5
日均线
EXIST(COND,N)
判断
N
个周期内是否有满足条件
COND
。
例:
EXIST(CLOSE>REF(HIGH,1),10);
表示
10
个周期中是否存在收盘价大于前一个周期的最高价
EVERY(COND,N)
判断过去
N
个周期内是否一直满足条件
COND
。
例:
EVERY(CLO
SE>OPEN,5);
表示
5
个周期
内一直是阳线
LAST(COND,N1,N2)
判断过去
N1
到
N2<
/p>
周期内是否一直满足条件
COND
。
p>
例:
LAST(CLOSE>OPEN,
10,5);
表示从过去第
10
个周期
到第
5
个周期内一直是阳线
LONGCROSS(A,B,N)
如果
A
在前
N
个周期内都小于
B
,
本周期上穿
B
p>
,
则返回
1
。
p>
否则返回
0
。
<
/p>
例:
LONGCROSS(CLOSE,MA(CLOSE,10
),20);
表示收盘线在
10
日均线
之下持续
20
周期后从下向
上穿过
p>
10
日均线
NOFILTER
信号过滤函数。
公式后加
“
NOFILTER;
”
是指不需要过滤,
出现任何交易指令都会执
行。
公式后不加
“
NOFILTER;
”
是指当连续出现同方向的交易指令时,
系统只显示出第一个交易指令,
其他交易指令自动被
过滤。<
/p>
IF(C,A,B)
如果
C
成立返回
A,
否则返回
B
例:
IF(CLOSE>REF<
/p>
(
CLOSE,1
)
,1,0);
表示若今日收盘价高于前一日收盘价,则返回
1
,否则返
回
0
ISDOWN
如果该周期收阴则返回
1
,否则返回
0
ISEQUAL <
/p>
如果该周期平盘则返回
1,
否则返回
p>
0
ISUP
如果该周期收阳则返回
p>
1,
否则返回
0
ISLASTBAR
取得当前周期是否为最后一根
K
线。最后一个周期返回值为
1
< br>,其余为
0
。
VALUEWHEN(COND,DATA)
当条件
COND
满足时,
取当时的
DATA
的值,
否则取得
VALU
EWHEN
的前一个值。
例:
VALUEWHEN(HIGH>REF(HIGH,5),HIGH);
表示当前最高价大于前五个周期最高价的最大值
时返回当前最高价。
5.
数学运算
ABS(X)
求
X
的绝对值
例:
ABS(-10)
返回
10
,
ABS(CLOISE-10)
返回收盘价和
10
的价差的绝对值。
ACOS(X)
求
X
的反余弦值
ASIN(X)
求
X
的反正弦值
ATAN(X)
求
X
的反正切值