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相当于O 五、 函数: 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 A 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);