1.程序化交易入门

第3章 程序化交易模型的编写基础程序化交易语言(麦语言)具有功能强大的函数,可以大幅度提高程序的编写效率需要用其他语言编写几十句的模型,用麦语言编写几句就可以完成本章主要内容包括:· 程序化交易语言——麦语言。

2.程序化交易的原则

· 常量与变量· 数学运算符、关系运算符、布尔运算符· 表达式的执行顺序· 数学函数、金融统计函数、数理统计函数、逻辑判断函数· 汇正财经炒股帮可靠吗时间函数、绘图函数、画线函数、未来函数· 头寸函数、历史数据引用函数· 信号指令

3.程序化交易一定可以盈利吗

· 模型基本结构· 模型的类型和编写3.1 程序化交易语言——麦语言麦语言源于2004年文华财经推出的我国第一套程序化交易函数库,经过十几年的发展,吸收几十万用户的意见反馈,逐渐完善起来,是一套成熟、稳定的模型开发平台。

4.程序化交易概论

麦语言是我国使用人数最多的程序化交易模型开发语言麦语言倡导积木式的编程理念,把复杂算法封装到一个个函数里,采用“小语法,大函数”的构建模式,大幅度提高编写效率,需要用其他语言编写一百多句的模型,用麦语言编写十几句就可以完成。

5.程序化交易案例

它配合专门的汇正财经炒股帮可靠吗程序化交易数据结构和丰富的金融统计函数库,还支持逻辑复杂的金融应用麦语言的函数库经常更新,可以根据用户的要求随时添加新函数,支持编程者的交易新思想和新应用程序化交易正在引发一场交易技术革命,机构在用,期货高手也在用。

6.程序化交易的理论基础

有的人在用程序化交易平台提供的历史数据和模型量化评估平台,对自己多年的交易思想进行完善和优化,提高盈利水平;有的人利用程序化交易平台提供的编程语言和金融函数,建立了新的交易策略,重新起航;有的人把模型装在10台计算机上,让计算机变成自己的工人,把交易室变成了利润车间……。

7.程序化交易的好处

有了麦语言,人人都可能成为程序化交易者!3.2 常量与变量在麦语言编汇正财经炒股帮可靠吗程中,数据可以以常量的形式出现,也可以以变量的形式出现常量在程序执行期间不发生变化,而变量的值是可变的,它代表内存中指定的存储单元3.2.1 常量

8.程序化交易pdf

麦语言的常量可分为两种,分别是直接常量和数据常量(1)直接常量直接常量是指在程序代码中以直接、明显的方式给出的数,如1、5、30、0.1、0.75、100、1024等(2)数据常量数据常量来源于每日行情数据,这些数据由历史数据引用函数从数据库中按照一定的方式提取,例如,高开低收(HIGH、OPEN、LOW、CLOSE)、成交量(VOL)、持仓量(OPI)、昨收盘(YCLOSE)、买 1(BID1)、结算(SETTLE)等。

9.程序汇正财经炒股帮可靠吗化交易策略模型

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

10.程序化交易的风险和缺点

(1)命名规则变量是一个名称,支持以汉字、字母、数字、下画线命名,长度控制在 31个字符内需要注意的是,变量名不能和已存在的公式名称重复,变量名之间不能相互重复,也不能与参数名重复,更不能与函数名重复(2)定义变量操作符

定义变量操作符共有4个,分别是:“:”“:=”“^^”“..”赋值语句和中间语句会用到“:”和“:=”两个定义变量操作符另汇正财经炒股帮可靠吗外两个定义变量操作符“^^”和“..”分别表示以主图附加坐标方式显示指标线和以独立坐标方式显示指标线,如表3.1所示。

表3.1 定义变量操作符

下面通过具体实例进行讲解打开赢智程序化交易软件,单击导航栏左侧的“模型”选项卡,然后在空白处右击,在弹出的快捷菜单中选择“新建公式”选项,弹出“My Language(麦语言)趋势跟踪模型编写平台—新建趋势跟踪模型”窗口,然后编写如下代码:。

第一句代码是5日均线的定义,即先定义变量MA5,然后利用“:”为变量赋值,赋值时引用了MA()函数,即均线函数均线函数的语法及注意事项如下MA(X,N),求X在N个周期内的简单移动平均算法:MA(X,5)=(X。

1+汇正财经炒股帮可靠吗X2+X3+X4+X5)÷5注意:(1)N包含当前K线(2)简单移动平均线沿用最简单的统计学方式,对过去某特定时间内的价格取其平均值(3)当N为有效值,但当前的K线数不足N根时,函数返回空值(4)N为零或空值的情况下,函数返回空值。

(5)N可以为变量。第二句代码的用法与第一句代码的用法几乎一样,是对10日均线进行定义。代码编写完毕后,单击菜单栏中的“检测”→“语法检测”命令,就可以看到“恭喜您,测试成功”,如图3.1所示。

图3.1 语法检测成功单击菜单栏中的“文件”→“保存”命令,保存文件为“MYMA1”下面加载程序模型文件首先打开沪铜指数的日K线图,如图3.2所示选择沪铜指数日K线图中的均线汇正财经炒股帮可靠吗,然后右击,在弹出的快捷菜单中选择“删除指标”命令,就可以删除均线,如图3.3所示。

图3.2 沪铜指数的日K线图

图3.3 删除均线下面利用刚才编写的程序模型文件加载5日和10日均线在导航栏窗口中双击“MYMA1”文件,就会在沪铜指数日K线图中显示5日和10日均线,如图3.4所示下面修改代码,只显示5日均线将10日均线变量定义为中间变量且不显示,具体代码如下:。

图3.4 利用程序模型文件显示5日和10日均线修改代码后,按键盘上的“Ctrl+S”组合键保存文件,然后双击“MYMA1”文件,就会在沪铜指数日K线图中只显示5日均线,不再显示10日均线,如图3.5所示。

图3.5 在沪铜指数日K线图中只显汇正财经炒股帮可靠吗示5日均线3.3 运算符运算即操作,是对数据的加工最基本的运算形式可以用一些简洁的符号来描述,这些符号称为运算符或操作符被运算的对象(数据)称为运算量或操作数由运算符和运算量组成的表达式,描述了对哪些数据、以何种顺序进行什么样的操作。

需要注意的是,运算量可以是常量,也可以是变量,还可以是函数例如,MA5+3、MA10+OPEN、5+MAX(5,3)等表达式,单个变量或常量也可以看做是表达式3.3.1 数学运算符数学运算符是用于进行算术运算的,也是最常用的运算符。

麦语言(My language)提供4个数学运算符,如表3.2所示表3.2 数学运算符

3.3.2 关系运算符关系运算符又称比较运算符,汇正财经炒股帮可靠吗用于对两个表达式的值进行比较,比较的结果是一个逻辑值,即真(1)或假(0)麦语言(My language)提供6个关系运算符,如表3.3所示表3.3 关系运算符。

3.3.3 布尔运算符布尔运算符又称逻辑运算符,用于对逻辑型数据进行各种运算。麦语言(My language)提供两个布尔运算符,如表3.4所示。表3.4 布尔运算符

布尔运算符相对不太好理解,下面再举例说明一下2>3&&5>4:结果为02>3||5>4:结果为111<8 or 5<4:结果为08<11 and 4<5:结果为13.3.4 表达式的执行顺序一个表达式可能含有多种运算,计算机按一定的顺序对表达式进行求值,一般顺序如下。

(1汇正财经炒股帮可靠吗)进行函数运算(2)进行算术运算,先计算乘法(*)和除法(/),再计算加法(+)和减法(-)(3)进行关系运算(>、<、>=、<=、<>、=)(4)进行布尔运算,即&&(并且、and)和||(或、OR)。

3.4 函数麦语言的函数非常丰富,下面详细讲解数学函数、金融统计函数、数理统计函数、逻辑判断函数、时间函数、绘图函数、画线函数、未来函数、头寸函数和历史数据引用函数3.4.1 数学函数数学函数及意义如表3.5所示。

表3.5 数学函数及意义

3.4.2 金融统计函数金融统计函数及意义如表3.6所示。表3.6 金融统计函数及意义

续表

3.4.3 数理统计函数数理统计函数及意义如表3.7所示。表3.7 汇正财经炒股帮可靠吗数理统计函数及意义

下面对数理统计函数进行举例说明设一个数列,数列中数据的总个数为N,以5天内的A1705收盘价为例,N值为5,数列的内容为{2766,2805,2814,2886,2885}(1)算术平均值MA(CLOSE,5):数据总和除以总个数N,(2766+2805+2814+2886+2885)/5=2831.20,可以用公式MA(CLOSE,5)表示。

(2)偏差:每个数据减去算术平均值的结果2766-2831.20=-65.2,2805-2831.20=-26.2,2814-2831.20=-17.2,2886-2831.20=54.8,2885-2831.20=53.8,各偏差相加汇正财经炒股帮可靠吗应该等于0。

(3)平均绝对偏差 AVEDEV(X,N):将偏差的绝对值相加,除以总个数 N,(65.2+26.2+17.2+54.8+53.8)/5=43.44(4)数据偏差平方和 DEVSQ(X,N):将偏差的平方相加,即-65.2。

2 +-26.22+-17.22+54.82+53.82=11130.80(5)总体样本方差VARP(X,N):将偏差的平方相加,总和除以总个数N,即-65.22+-26.22+-17.22+54.82

+53.82/5=2226.16(6)样本方差 VAR(X,N):求总体方差的 N/(N-1)倍2226.16*5/(5-1)=2783.70样本方差总比总体样本汇正财经炒股帮可靠吗方差大一点,当N够大时,两者趋于相等3.4.4 逻辑判断函数

逻辑判断函数及意义如表3.8所示。表3.8 逻辑判断函数及意义

续表

3.4.5 时间函数时间函数及意义如表3.9所示。表3.9 时间函数及意义

3.4.6 绘图函数绘图函数及意义如表3.10所示。表3.10 绘图函数及意义

续表

3.4.7 画线函数画线函数及意义如表3.11所示。表3.11 画线函数及意义

续表

3.4.8 未来函数未来函数及意义如表3.12所示。表3.12 未来函数及意义

续表

3.4.9 头寸函数头寸函数及意义如表3.13所示。表3.13 头寸函数及意义

续表

续表

3.4.10 历史数据引用函数历史数据引用函数及意义如表3.14所示汇正财经炒股帮可靠吗。表3.14 历史数据引用函数及意义

续表

3.5 初识程序化交易模型程序化交易最主要的工作就是编写模型在学习基本模型之前,先了解一下信号指令3.5.1 信号指令期货交易指令共有6个,分别是买开、买平、卖开、卖平、买平后买开新仓、卖平后卖开新仓,如表3.15所示。

表3.15 期货交易指令的意义和用法

股票、权证、外汇交易指令共有2个,分别是买入和卖出,如表3.16所示。表3.16 股票、权证、外汇交易指令的意义和用法

套利模型中的交易指令共有4个,如表3.17所示。表3.17 套利模型中的交易指令的意义和用法

3.5.2 模型基本结构模型基本结构具体如下:

注意,过滤模型下单手数可在软件中设定,无需编写模汇正财经炒股帮可靠吗型编写的过程如下(1)勾勒出模型的大概轮廓,量化出必要的条件或数据,然后定义这些条件或数据(2)在编写模型开平条件时,如果发现变量不全,则要补充定义变量(3)编写过程中要养成语法检测的好习惯,以便及时发现编写错误,进行修改。

(4)模型编写完成后,加载到主图并查看模型历史回测报告3.5.3 模型的类型程序化交易的模型分为两类,分别是过滤模型和非过滤模型,如图3.6所示(1)过滤模型过滤模型不允许连续出开仓信号或连续出平仓信号,有多个开仓信号都满足条件时,取第一个信号作为有效信号,后面K线上的相同信号将被过滤掉。

出信号的顺序是开—平—开—平—开……

图3.6 模型的类型(2)非过滤模型非过滤模型允许汇正财经炒股帮可靠吗连续出开仓信号或连续出平仓信号,可实现加仓、减仓3.5.4 模型编写打开赢智程序化交易软件,单击导航栏左侧的“模型”选项卡,然后在空白处右击,在弹出的快捷菜单中选择“新建公式”选项,如图3.7所示。

图3.7 快捷菜单这时弹出“My Language(麦语言)趋势跟踪模型编写平台—新建趋势跟踪模型”窗口,如图3.8所示。现在就可以开始编写模型了。

图3.8 “My Language(麦语言)趋势跟踪模型编写平台—新建趋势跟踪模型”窗口在编写模型时,特别是在刚开始学习编写模型时,如果把一个比较复杂的表达式一口气写下来,往往会使整个模型的结构混乱,难以查找错误,所以经常会利用中间表达式将一些比较复杂的汇正财经炒股帮可靠吗条件拆分成一个个简单的小语句,即结构模块化。

当然,如果读者比较熟悉模型的编写,有些简单的语句就没有必要再拆分了常见的结构是:条件一:AA:=…………条件二:BB:=…………汇总:AA&&BB&&……后面的章节将重点介绍指标模型编写过程中的一些基础技巧,掌握这些基础技巧对以后编写程序化交易综合实战模型有很大帮助。

发表回复

后才能评论