二、条件表达式及其应用:
1、条件表达式:在飞狐中设计公式,需要大量使用条件表达式,根据条件表达式的结果,作出判断,以便确定下一步该做什么,不该做什么。基本的条件表达式由“>、>=、<、<=、=、and、or、not”等比较运算符、逻辑运算符组成,此外单独的“逻辑函数”,如判断是否最后周期的函数ISLASTBAR也可以构成条件表达式。条件表达式的值只有2个,1和0,条件成立则返回1,条件不成立则返回0,下面举例说明: 例1:close>open{表示收盘价大于开盘价,如果成立返回1,否则这个条件表达式的值为0}; 例2:close>open and close>ma(close,5){表示收盘价大于开盘价且close大于5日均价,and 是“且、和”的意思}; 例3:close<=ref(close,1) or close<=ref(close,2){今收盘小于昨收盘或今收盘小于等于前2天收盘价,or是“或 的意思,ref()函数的含义,请在公式编辑器中点“插入函数”按钮后找到ma函数查询其注释,或鼠标移到函数的名称处,会浮动提示该函数的注释}; 例4:corss(ma(c,5),ma(c,10)){5日均价线上穿10日均价线,cross函数的定义,请自查。这里close简写为c}; 说明:上面例子中,包含在半角的一对花括号“{”、“}”的部分,是注释语句,注释这行代码的含义、思路等,不会被飞狐运行。一个好公式的设计,需要花费很多心血,时间久了有可能自己也忘记当时是怎么设计的,此外也为了别人能看懂公式,适当的加入注释是个好习惯。除了用花括号作注释,飞狐中还允许用半角的双斜杠“//”作注释,双斜杠后面写入注释的内容。 明白了条件表达式的意义后,我们来设计一个有点实用价值的公式: 例5:设计一个副图指标,8日内如果先后出现5日均价线上穿10日均价线、5日均价线上穿20日均价线,则返回1,否则返回0。 求解:根据上面的学习,“5日均价线上穿10日均价线”的条件表达式是cross(ma(c,5),ma(c,10)),“5日均价线上穿20日均价线”的条件表达式是cross(ma(c,5),ma(c,20)),那么本例是不是可以写成 cross(ma(c,5),ma(c,10)) and cross(ma(c,5),ma(c,20)) 答案是否定的。因为这个条件表达式是表示同时满足2个条件,怎么办? {是否存在 正确代码结果如下,我们把公式命名为sl003: 信号:EXIST(cross(ma(c,5),ma(c,10)),8) AND EXIST(cross(ma(c,5),ma(c,20)),8) 代码说明: |
|
来自: 幽谷清馨 > 《飞狐公式编写入门》