期货程序化交易实战入门与技巧
上QQ阅读APP看书,第一时间看更新

2.2 麦语言的常量与变量

在麦语言编程中,数据可以以常量的形式出现,也可以以变量的形式出现。常量在程序执行期间不发生变化,而变量的值是可变的,它代表内存中指定的存储单元。

2.2.1 常量

麦语言的常量可分两种,分别是直接常量和数据常量。

1.直接常量

直接常量是指在程序代码中以直接明显的开式给出的数,如1、5、30、0.1、0.75、100、1024等。

2.数据常量

数据常量来源于每日行情数据,这些数据由历史数据引用函数从数据库中按照一定的方式提取。例如,高开低收(HIGH、OPEN、LOW、CLOSE),成交量(VOL),持仓量(OPI),昨收盘(YCLOSE),买1(BID1),结算(SETTLE)等。

2.2.2 变量

变量是指程序执行过程中其值可以变化的量,系统为程序中的每一个变量分配一个存储单元。变量名实质上就是计算机内存单元的命名。因此,借助变量名就可以访问内存中的数据了。每个变量都有一个名字,通过名字就可以引用变量了。

1.命名规则

变量是一个名字,支持汉字、字母、数字、下划线格式命名,长度控制在31字符内。

需要注意的是,变量名不能和已存在的公式名称重复。变量名不能相互重复,也不能与参数名重复,更不能与函数名重复。

2.定义变量操作符

定义变量操作符,一共有四个,分别是:“:”、“:=”、“^^”和“..”。

赋值语句和中间语句用到了“:”和“:=”两个定义变量操作符。

另外两个定义变量操作符“^^”和“..”分别表示定义以主图附加坐标方式显示和以独立坐标方式显示的指标线,如表2.1所示。

表2.1 定义变量操作符

下面通过具体实例来说明一下。

打开赢智程序化交易软件,单击导航栏左侧的“模型”,然后在空白处单击右键,在弹出菜单中单击“新建公式”,弹出“My Language(麦语言)趋势跟踪模型编写平台—新建趋势跟踪模型”对话框。然后编写代码如下:

第一句代码的意思是5日均线的定义,即先定义变量MA5,然后利用“:”为变量赋值。赋值时引用了MA()函数,即均线函数。均线函数的语法及注意事项如下:

MA(X,N),求X在N个周期内的简单移动平均。

算法:MA(X,5)=(X1+X2+X3+X4+X5)÷5

注意:

(1)N包含当前K线。

(2)简单移动平均线沿用最简单的统计学方式,将过去某特定时间内的价格取其平均值。

(3)当N为有效值,但当前的K线数不足N根,函数返回空值。

(4)N为0或空值的情况下,函数返回空值。

(5)N可以为变量。

第二句代码的意思与第一句代码的意思几乎一样,只是10日均线的定义。

代码编写完毕后,然后单击菜单栏中的“检测/语法检测”命令,就可以看到“恭喜您,测试成功!”,如图2.1所示。

图2.1 语法检测

保存代码。单击菜单栏中的“文件/保存”命令,保存文件为“MYMA1”。

下面来加载程序模型文件。首先打开沪铜指数的日K线图,如图2.2所示。

图2.2 沪铜指数的日K线图

选择沪铜指数的日K线图中的均线,然后单击右键,在弹出菜单中单击“删除指标”命令,就可以删除均线,如图2.3所示。

图2.3 删除均线

下面利用刚才编写的程序模型文件,来加载5日和10日均线。双击“MYMA1”文件,就在沪铜指数的日K线图中显示5日和10日均线,如图2.4所示。

图2.4 利用程序模型文件显示5日和10日均线

下面来修改代码,只显示5日均线。定义10日均线变量,只做为中间变量,不显示,具体代码如下:

MA5:MA(CLOSE,5); //定义5日均线并显示

MA10:=MA(CLOSE,10); //定义10日均线不显示

修改代码后,按下键盘上的“Ctrl+S”键,保存文件,然后再双击“MYMA1”文件,就在沪铜指数的日K线图中只显示5日,10日均线不再显示,如图2.5所示。

图2.5 在沪铜指数的日K线图中只显示5日