大智慧L2公式编辑语法大全第1页共2页常数与单值变量:代码:'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递增循环:语法:FORvar=n1TOn2DOexpr;从var=n1开始到var=n2开始循环执行expr语句,每执行一次var加1。这里,var称之为循环变量。例:fc:=close;//定义序列变量为收盘价fori=2todatacountdoma2:(fc+fc)/2;//从i=2到i=datacount循环执行ma2:(fc+fc)/22、FOR递减循环:语法:FORvar=n1DOWNTOn2DOexpr2;从var=n1开始到var=n2开始循环执行expr语句,每执行一次var减1。例:fc:=close;fori=datacountdownto2doma2:(fc[i-1]+fc)/2;二重循环的大致结构如下:fori=n1ton2dobegin语句;…forj=m1tom2dobegin语句;…end;语句;j=j*2;ifj=mthenbreak;//用break中途可以跳出for循环。…end;IF分支语句,语法:IFexpr判断条件THENBEGIN指令1;指令2;…指令n;ENDELSEBEGIN指令A1;指令A2;…指令An;END大智慧L2公式编辑语法大全第2页共2页WHILE循环语句语法:WHILEexpr1DOexpr2whilein1dobegin语句;…;j=j*2;ifj=n2thenbreak;//利用break,中途可以跳出while循环。i=i+1;end;DATA2数据2:引用本股票之外的数据。REFLINE使用参考线作为横坐标线:REFLINE:l1,l2,l3...,l1,l2表示需要画水平坐标线的位置。DEFINE宏定义:DEFINENameSomething;DEFFUNC函数宏定义:DEFFUNCName(x)Something;JP跳转;JTTRUE跳转;JNTFALSE跳转;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';