● 常数与单值变量:代码:'x:100'; 定义了一个单值变量x=100,这个值不随时间而改变,做成副图指标看,今天是100明天也是100,直到最后1根K线也是100,即副图指标是一条数值为100的水平直线。
● 基本的条件表达式由“>、>=、<、<>、<=、=、and、or”等比较运算符、逻辑运算符组成,其中"and"表示并、并且,"or"表示或、或者。条件表达式的值只有2个,1和0,条件成立则返回1,条件不成立则返回0。
● 序列变量:代码:'fc:close',定义了一个变量fc,并把收盘价赋值给变量fc。这里变量fc就是序列变量,因为fc不是一个值,而是一序列随时间而变化的值(收盘价),在K线图中,从第1根K线到最后1根K线都有一个收盘价,因此fc跟单值变量不同,是 由一系列的值组成的变量,因此我们称之为序列变量。事实上,把“fc:close”这行代码做成一个指标,就可以看出fc是一条变化的曲线而不是一条水平直线。
● VARIABLE:name=inivalue 定义并初始化变量;name表示变量名,inivalue表示变量类型及初始值例如:VARIABLE: T=0; 表示定义浮点数变量T并初始化为0
● 数组:数组的使用,要先定义,然后初始化(即赋予数组的每个元素一个初始的数据)。在飞狐中,目前只支持一维数组,并且下标是从1开始的。
● INPUT:name(default,min,max,step) 定义并设置参数;name表示参数名,default表示缺省值,min表示最小值,max表示最大值,step表示优化步长,除default外都可以省略。例如:INPUT: T(10); 表示定义参数T,缺省值为10。
● BEGIN … END 复合语句:将 BEGIN 和 END 之间的语句合成一个复合语句,好像BAT批处理指令。
例:BEGIN 指令1;指令2;指令3;END。
● BREAK 循环终止语句: 终止FOR或WHILE循环的继续执行。
● FOR循环语句:
1、 FOR递增循环:
语法:FOR var=n1 TO n2 DO expr;
从 var=n1 开始到 var=n2 开始循环执行 expr 语句,每执行一次var加1。这里,var称之为循环变量。例:
fc:=close; //定义序列变量为收盘价
for i=2 to datacount do ma2 : (fc+fc)/2; //从i=2到i=datacount循环执行ma2 : (fc+fc)/2
2、FOR递减循环:
语法:FOR var=n1 DOWNTO n2 DO expr2;
从 var=n1 开始到 var=n2 开始循环执行 expr 语句,每执行一次var减1。例:
fc:=close;
for i=datacount downto 2 do ma2 : (fc[i-1]+fc)/2;
二重循环的大致结构如下:
for i=n1 to n2 do
begin
语句;
…
for j=m1 to m2 do
begin
语句;
…
end;
语句;
j=j*2;
if j=m then break; //用break中途可以跳出for循环。
…
end;
● IF 分支语句,语法:
IF expr判断条件 THEN BEGIN 指令1; 指令2; … 指令n; END ELSE BEGIN
指令A1; 指令A2; … 指令An; END
● WHILE循环语句
语法:WHILE expr1 DO expr2while i
DATA2 数据2:引用本股票之外的数据。
REFLINE 使用参考线作为横坐标线:REFLINE:l1,l2,l3...,l1,l2表示需要画水平坐标线的位置。
DEFINE 宏定义:DEFINE Name Something;
DEFFUNC 函数宏定义:DEFFUNC Name(x) Something;
JP 跳转;
JT TRUE跳转;
JNT FALSE跳转;
JNE 不等于跳转;
JEQ 等于跳转;
JLE 小于等于跳转;
JLT 小于跳转;
JGE 大于等于跳转;
JGT 大于跳转;
LOOP 单步循环;
PERCENT 百分比;
INC 加1;
DEC减1;
REFINDI 指标引用
REFEXPLORER 条件选股引用
REFSYSTEM 交易系统引用
REFSTK 股票引用
REFDLL 动态库引用
ARYREF 数组引用
ARYASGN 数组赋值
STRADD 字符串加
STRADDNUM 字符串加数字
TICKCOUNT:取得该周期成交笔数。
DIVIDEND:每股派息数量。
DIVIDBARS:派息到现在的周期数。
SPLIT(N):除权比例,取得之前第N次除权(送股或配股)的除权比例。
SPLITBARS(N):除权到现在的周期数,取得之前第N次除权到当前的周期数
BARSTATUS:数据位置状态返回,1表示第一根K线,2表示最后一个数据,0表示中间位置。
DISPSTATUS:数据显示状态返回1表示显示区域的第一根K线,2表示表示显示区域的最后一根K线,0表示其它位置。
ISUP:该周期是否收阳当收盘>开盘时,返回值为1,否则为0。
ISEQUAL:该周期是否平盘当收盘=开盘时,返回值为1,否则为0。
ISDOWN:该周期是否收阴当收盘<开盘时,返回值为1,否则为0。
在飞狐中,如何定义、初始化并使用数组?下面简单示例说明:
例1、在飞狐中,定义一个含10个元素的数值型数组
定义数组的语句是variable,公式代码如下:
variable:A[10]=0; //定义一个含10个元素的数值型数组A,并把所有元素初始化为0;
例2:定义一个3个元素的字符串型的数组
公式代码如下:
variable:B[3]='abc'; //定义一个含3个元素的字符串型数组B,并把所有元素初始化为'abc'
例3:把{1,3,5,7,9}定义为数组
分析:这组数据共有5个数值型数据,因此应定义长度为5的数组,并给每个元素赋值。公式代码如下:
variable:A[5]=0;
A[1]:=1;A[2]:=3;A[3]:=5;A[4]:=7;A[5]:=9;
例4:把{1,5}和{'a','b','c'}定义为数组
分析:variable语句,可以同时定义多个变量、数组,之间用逗号隔开。公式代码如下:
variable:A[2]=0,B[3]='';
A[1]:=1;A[2]:=5;B[1]:='a';B[2]:='b';B[3]:='c';
¥29.8
¥9.9
¥59.8