飞狐公式入门
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、参数、参数精灵
页码,4/5
参照上图一边修改参数,一边观察指标线是否变化。最后可以按照自己的需要,把参数修改为自己所需的数值。到此应该满意了吧? 说明:从前面的图中,可以看出,飞狐交易师支持多达16个参数。
3、使用INPUT语句来申明参数: 前面已经知道了参数的意义及通过参数表来设定参数的方法。参数的申明也可以用公式控制语句INPUT来设定,这样就不必填参数表 了,好处是便于交流公式代码,因为参数的设定已经包含在公式代码中了。
现在回头看刚才的新建的公式SL002,即“ma5:ma(close,5);”,根据我们查到的ma函数的注释,显然ma5被定义为5日均价。 在K线图中,切换股票到600004,敲sl002,调用这个公式,观察5日均价曲线,发现了什么?
file://C:\Documents and Settings\Administrator\Local Settings\Temp\4... 2010-7-7
例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函数查询其注释,或鼠标移到函数的名称处,会浮动提示该函数的注释};
给一点提示:①利用“引用函数”类中的“信号过滤”函数FILTER(X,N)。②巧妙利用“突变”这个特征。 这个练习对于初学者有点难度,只有不断学习、不断钻研,才能更快进步,南客给大家加油!
file://C:\Documents and Settings\Administrator\Local Settings\Temp\4... 2010-7-7
二、参数、参数精灵
页码,3/5
2、参数、参数精灵:
上面修改后的公式sl002,已经是很实用的公式了。但有个缺点,如果你想要的不是5、10、20、30、60日均价线,而是其它的譬如7、 14、21、28、35日的均价线,怎么办?修改公式代码是一个可行的办法,但太麻烦。在飞狐中,可以使用参数,把公式sl002修改如下:
一、公式基础
飞狐公式入门一:
1、建立公式组的方法,参见下图:
页码,1/5
2、建立一个简单的新公式sl001,方法如下图所示:
file://C:\Documents and Settings\Administrator\Local Settings\Temp\3... 2010-7-7
二、参数、参数精灵
file://C:\Documents and Settings\Administrator\Local Settings\Temp\5... 2010-7-7
三、条件表达式
页码,2/3
例5的公式,显示的结果如何,不错吧?条件满足时,指标线的值会由0突变为1,“信号”很醒目。不过还是有点不爽,如果连续出现 信号则第一次满足条件才给出“信号”,似乎更好些,怎么办呢?留给大家作为练习吧^_^。
别名: 简单移动平均 所属类别: 引用函数 参数数量: 2
求简单移动平均。 用法: MA(X,N),求X的N日移动平均值。 算法: (X1+X2+X3+...+Xn)/N 例如: MA(CLOSE,10)表示求10日均价
查询函数ma的注释,也可参考下图方法,只要鼠标移到公式代码中的函数名称处,随时可弹出浮动框获取公式代码中的函 数注释,下图中试试把鼠标移到close处看看会显示什么。
上述公式,使用INPUT语句申明参数,代码改写如下:
input:n1(5,1,999),n2(10,1,999),n3(20,1,999),n4(30,1,999),n5(60,1,999); ma5:ma(close,n1); ma10:ma(close,n2) ma20:ma(close,n3); ma30:ma(close,n4); ma60:ma(close,n5);
例4:corss(ma(c,5),ma(c,10)){5日均价线上穿10日均价线,cross函数的定义,请自查。这里close简写为c};
说明:上面例子中,包含在半角的一对花括号“{”、“}”的部分,是注释语句,注释这行代码的含义、思路等,不会被飞狐运行。 一个好公式的设计,需要花费很多心血,时间久了有可能自己也忘记当时是怎么设计的,此外也为了别人能看懂公式,适当的加入注释是 个好习惯。除了用花括号作注释,飞狐中还允许用半角的双斜杠“//”作注释,双斜杠后面写入注释的内容。
明白了条件表达式的意义后,我们来设计一个有点实用价值的公式:
例5:设计一个副图指标,8日内如果先后出现5日均价线上穿10日均价线、5日均价线上穿20日均价线,则返回1,否则返回0。
求解:根据上面的学习,“5日均价线上穿10日均价线”的条件表达ຫໍສະໝຸດ Baidu是cross(ma(c,5),ma(c,10)),“5日均价线上穿20日均价线”的条件 表达式是cross(ma(c,5),ma(c,20)),那么本例是不是可以写成
上一页 下一页
file://C:\Documents and Settings\Administrator\Local Settings\Temp\4... 2010-7-7
三、条件表达式
页码,1/3
飞狐公式入门三
三、条件表达式及其应用:
1、条件表达式:在飞狐中设计公式,需要大量使用条件表达式,根据条件表达式的结果,作出判断,以便确定下一步该做什么,不该 做什么。基本的条件表达式由“>、>=、<、<=、=、and、or、not”等比较运算符、逻辑运算符组成,此外单独的“逻辑函数”,如判断 是否最后周期的函数ISLASTBAR也可以构成条件表达式。条件表达式的值只有2个,1和0,条件成立则返回1,条件不成立则返回0,下面举 例说明:
正确代码结果如下,我们把公式命名为sl003:
信号:EXIST(cross(ma(c,5),ma(c,10)),8) AND EXIST(cross(ma(c,5),ma(c,20)),8)
代码说明: ①飞狐的公式代码不区分字母的大小写,字母可以大写,也可以小写或者大小写混合。 ②本例中,公式代码使用了函数嵌套,即一个函数套一个函数,这里使用了三重嵌套。 ③要看懂嵌套函数,基本的分析方法是,从里到外一层层分析,如EXIST(cross(ma(c,5),ma(c,20)),8),先分析ma(c,5)、ma(c,10)是 什么意思,然后分析cross(ma(c,5),ma(c,20))是什么意思,最后再分析EXIST(cross(ma(c,5),ma(c,20)),8)是什么意思。
ma5:ma(close,n1); ma10:ma(close,n2) ma20:ma(close,n3); ma30:ma(close,n4); ma60:ma(close,n5);
在公式编辑器的参数表中,输入参数n1----n5的最小、最大、缺省值,如下图所示。 为了验证公式代码是否正确,用鼠标左键点“调试公式”按钮,飞狐提示“行3:语句缺少分号”,仔细分析公式代码,原来是第2行少
4、参数精灵:在上面修改参数的过程,是否注意到参数的提示?因为公式是自己设计的,参数的提示尽管很简单,但自己仍然知道参 数的含义,但如果是其他人的话,就可能摸不着头脑了,因此有必要对参数加上一点提示。方法是,在公式编辑器中,点“参数精灵”按 钮,输入以下文字:
Param#1日均价(1--999); Param#2日均价(1--999); Param#3日均价(1--999); Param#4日均价(1--999);
file://C:\Documents and Settings\Administrator\Local Settings\Temp\4... 2010-7-7
二、参数、参数精灵
页码,5/5
Param#5日均价(1--999);
这里,Param#1表示参数N1,其它依此类推,点“确定”退出公式编辑器。再试试调整参数,发现参数调整窗口的提示已经符合我们的要 求。
cross(ma(c,5),ma(c,10)) and cross(ma(c,5),ma(c,20))
答案是否定的。因为这个条件表达式是表示同时满足2个条件,怎么办? 本指标的设计要用到逻辑函数EXIST(X,N),查询EXIST(X,N)的注释如下
{是否存在 用法: EXIST(X,N)返回N周期内是否存在满足条件X,N可为常数或变量 例如: EXIST(C>O,10)表示10个周期中存在阳线}
了分号,修正后再点“调试公式”按钮,提示“调试通过”。点“确定”按钮退出并保存公式。
结果发现,公式sl002显示跟原来一样没有变化,参数不是毫无用处了吗?请看下图:
file://C:\Documents and Settings\Administrator\Local Settings\Temp\4... 2010-7-7
下面,我们修改刚才建立的公式sl002,代码如下:
ma5:ma(close,5); ma10:ma(close,10); ma20:ma(close,20); ma30:ma(close,30); ma60:ma(close,60);
注意,每一行公式代码的末尾要有一个半角的分号“;”,表示一行代码结束。切换股票到600317,观察我们修改后的sl002显示的结果, 原来就是我们所熟悉的均线系统,由5、10、20、30、60日均价线组成。
二、参数、参数精灵
页码,2/5
可以看出,ma5是从第5根K线开始的,我们就说ma5的起始有效周期是5,为什么是5而不是其它数据?根据ma函数的定义,ma5即ma (close,5)等于当日及之前共5日收盘价的算术平均值,至少要有5天的数据,这就是说,从第5天开始,才会有5日均价。
想想看,ma(close,10)表示什么?它的起始有效周期是多少?为什么?
页码,1/5
飞狐公式入门二
二、参数、参数精灵及其应用:
1、起始有效周期: 上一讲,我们学习了在飞狐中新建公式的基础知识。并编了一个最简单的公式SL001。下面我们再来新建一个主图叠加公式SL002,代 码如下:
ma5:ma(close,5);
代码解释:本行代码,定义了一个序列变量ma5,其序列值由函数ma(close,5)确定。 点公式编辑器中的“插入函数”按钮,可查到ma函数的注释是:
注意:这里的“Param”中第一个字母要大写。
小结:今天学习了函数ma,起始有效周期、参数的概念,学会了参数精灵的用法。
练习1:设计一个主图叠加公式,包含5、10、20、30、60、120、240日均价,并在公式中,使用7个参数。 练习2:设计一个副图指标公式,描述成交量、5日均量、10均量、20日均量、30日均量。在K线图下,观察你设计的公式,跟系统公式 vol进行对比,有什么不同?通过研究系统公式VOL,你又学到了一招,即“线型描述符”VOLSTICK。 练习3:设计一个副图公式,描述换手率、5日平均换手率、10日平均换手率、20日平均换手率。提示:需使用“财务指标”函数,[换 手率=成交量/流通盘*100%]。 探索1:如何给公式加上密码,使公式只有自己才可以看到公式代码(源代码),别人无法看到、修改。 探索2:如下图,公式编辑器中,有个选项“中文公式”,试试看它有什么作用。
INPUT语句的用法注释如下:
所属类别: 控制语句 参数数量: 0
申明并设置参数 语法: INPUT:pname1(default,min,max,step),pname2(dft,min,max,step)...; pname表示参数名, default表示缺省值,min表示最小值,max表示最大值, step表示优化步长,除default外都可省略。 例如: INPUT:N(5), M(10,1,100,2); 表示定义参数N,缺省值为5 定义参数M,缺省值为10,最小值为1,最大值为100,优化步长为2