ripstop dobby:飞狐基本函数简介之逻辑函数

来源:百度文库 编辑:偶看新闻 时间:2024/04/27 03:16:25

飞狐基本函数简介之逻辑函数
这组函数全部用于逻辑判断,所得结果非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(C

A:=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);