飞狐公式设计入门
一、公式入门:
1、建立公式组的方法,参见下图:
2、建立一个简单的新公式sl001
弹出公式编辑器后,在公式名称处输入sl001,在公式说明中输入“示例公式001”,在代码框中输入“spj:”,点“插入函数”,在“行情函数”中找到CLOSE,点“插入函数”框的“确定”按钮,在代码框中就插入了一个函数CLOSE(CLOSE可以简写为C)。
最后在公式编辑器中点“确定”按钮,我们就建立了一个名为sl001的新公式。公式只有一行代码即:
spj:close
其中,spj(“收盘价”的拼音代码)称为公式变量,close是函数(行情函数的一种)两者间以半角的冒号“:”相隔,表示spj定义为close。
3、进入某个股的K线图,在键盘上敲“sl001”调用我们刚才设计的公式,结果在副图显示一条收盘价曲线,曲线的名称是“spj”
注意观察,该曲线是对应了K线的第一天到最后一天,说明,“spj”不是一个简单的变量,是一个数组或者说是一个序列变量,当然理解成一个函数也可以,是一个自变量为时间日期的函数。
因此,今后看公式时,对公式中的变量,一定要理解成是一个序列变量。
4、在副图指标sl001的空白处,点鼠标右键选“修改指标公式”,在公式编辑器中,看到“主图叠加”的选项了吗?打上“√”确定退出。键盘敲“sl001”,调用sl001公式,结果你看到了什么?
结果是,副图指标sl001变成了主图叠加指标sl001。
在主图指标的名称sl001处,点鼠标右键选“修改指标公式”,在公式编辑器中给“主图”选项打上勾,确定退出。再观察一下,有何变化?
结果是,主图叠加指标变成主图指标。
小结:本次讲座,学习了几个基础知识,建立公式组的方法,建立一个新公式的方法,修改公式的几种方法,副图指标、主图叠加指标、主图指标,序列变量的概念,查询函数注释的方法。
思考1:修改指标公式,有几种方法?在K线图中,按F3试试,有什么变化?鼠标右键菜单有几种情况?
思考2:什么是副图指标?什么是主图指标?什么是主图叠加指标?它们之间有什么不同?
练习1:跟K线有关的几个股价函数:close/open/high/low,仿照今天学习的内容,自行制作公式,要求分别做成副图指标、主图叠加指标和主图指标。在操作过程中,练习今天学习的内容。
练习2:查找MA函数,并写出它的注释。
探索1:要给指标公式加入注释,怎么办?
探索2:要把自己的公式导出,让别人共享,怎么办?
探索3:要导入别人的公式,怎么操作?
探索4:怎么删除无用的公式?
二、参数、参数精灵及其应用:
1、起始有效周期:
上一讲,我们学习了在飞狐中新建公式的基础知识。并编了一个最简单的公式sl001。下面我们再来新建一个公式主图叠加公式sl002,代码如下:
ma5:ma(close,5);
代码解释:定义了一个序列变量ma5,其序列值由函数ma(close,5)确定。查ma函数的注释是:
{
求简单移动平均。
用法: MA(X,N),求X的N日移动平均值。
算法: (X1+X2+X3+...+Xn)/N
例如: MA(CLOSE,10)表示求10日均价
}
显然,ma5被定义为5日均价,在K线图中,切换股票到600026,敲sl002,调用这个公式,观察5日均价曲线,发现了什么?
可以看出,ma5是从第5根K线开始的,也就是说,ma5的起始有效周期是5,为什么是5而不是其它数据?根据ma函数的定义,ma5即ma(close,5)等于当日及前4日收盘价的算术平均值,至少要有5天的数据,才会有5日均价。
想想看,ma(close,10)表示什么?它的起始有效周期是多少?
下面,我们修改刚才建立的公式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、参数、参数精灵:
上面修改后的公式sl002,已经是很实用的公式了。但有个缺点,如果你想要的不是5、10、20、30、60日均价线,而是其它的譬如7、14、21、28、35日的均价线,怎么办?修改公式代码是一个可行的办法,但太麻烦。在飞狐中,可以使用参数,把公式sl002修改如下:
ma5:ma(close,n1);
ma10:ma(close,n2)
ma20:ma(close,n3);
ma30:ma(close,n4);
ma60:ma(close,n5);
在公式编辑器中,输入参数n1----n5的最小、最大、缺省值。
为了验证公式代码是否正确,用鼠标左键点“调试公式”按钮,飞狐提示“行3:语句缺少分号”,仔细分析公式代码,原来是第2行少了分号,修正后再点“调试公式”按钮,提示“调试通过”。点“确定”按钮退出并保存公式。
结果发现,公式sl002显示跟原来一样没有变化,参数不是毫无用处了吗?请看图:
参照图一边修改参数,一边观察指标线是否变化。最后可以按照自己的需要,把参数修改为自己所需的数值。到此应该满意了吧?
3、参数精灵:在上面修改参数的过程,是否注意到参数的提示?因为公式是自己设计的,参数的提示尽管很简单,但自己仍然知道参数的含义,但如果是其他人的话,就可能摸不着头脑了,因此有必要对参数加上一点提示。方法是,在公式编辑器中,点“参数精灵”按钮,输入以下文字:
Param#1日均价(1--999);
Param#2日均价(1--999);
Param#3日均价(1--999);
Param#4日均价(1--999);
Param#5日均价(1--999);
这里,Param#1表示参数N1,其它依此类推,点“确定”退出公式编辑器。再试试调整参数,发现参数调整窗口的提示已经符合我们的要求。
注意:“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:如何快速导出一个公式组的所有公式?
附件: 您所在的用户组无法下载或查看附件