麦语言函数手册
麦语言函数手册
文华财经“麦语言”函数手册(2011年10月更新)
文华财经资讯有限公司
“麦语言”源于2004年文华推出的国内第一套程序化函数库,经过6年的发展,吸收几十万用户的意见反馈,一点一点完善起来的,是一套成熟稳定的模型开发平台。
麦语言,是国内使用人数最多的程序化模型开发平台。
麦语言倡导的是积木式的编程理念,把复杂算法封装到一个个的函数里,采用“小语法,大函数”的构建模式。
语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。
麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用
一、自编策略模型支持的函数
1.历史数据引用
2.日内高频数据引用
3.行情数据引用
4.金融统计
5.数理统计
6.逻辑判断
7.数学运算
8.时间函数
9.绘图
10.颜色常数
11.头寸函数
二、自编下单组件支持的函数
1.引用数据函数
2.逻辑判断函数
3.辅助函数
4.数学运算函数
5.模型相关函数
6.头寸函数。
“麦语言”的学习步骤和方法
“麦语言”的学习步骤和方法(一)为什么要学习编程语言:1、别人写的交易策略,你难以调整常听见有人说前一段运行很好的模型,最近却表现不佳,想换一个新的策略。
实际上没有一种策略能够永远适应市场,一般在一个季度左右就需要对策略调整参数或改动某些条件,如果策略不是自己编写的,很难去调整,就只能把大把时间浪费在无穷无尽的找模型中。
2、别人写的交易策略,你很难彻底执行如果是别人写的模型,无论模型测试结果多么完美,一旦市场出现危机情况,你都会坐立不安,总会怀疑策略有问题,然后把程序化扔到一边,又回到凭感觉操作的老路了。
人只会相信自己了解的东西,如果不相信就很难彻底执行,无法完成程序化。
3、编程的过程也是理解的过程有的人通过在市场亏钱、爆仓来理解市场,不仅学费高,成长也慢。
而通过编写策略来理解市场不需要交学费,从历史测试报告里很容易分析出来自己错在哪,也很容易改进,足以带来逼真的实战经验,所以编写和调试策略的过程也是理解市场的过程,是非常宝贵的积累。
(二)麦语言的学习步骤和方法:一提到语言,您可能想到的是复杂的语法,大量的词汇,无穷无尽的困难。
但“麦语言”与您以往学过的语言完全不同,它的语法只有两个部分,函数200多,是目前国内最简单的程序化编写语言,不需要您有任何的c语言c++编程基础,只要您能看懂汉字,外加点学习精神就能轻松学会。
(1)、了解麦语言模型结构,学习函数麦语言的模型结构很简单,只有两部分:1定义需要的变量。
2交易条件+交易指令。
如下图所示就是一个具有变量、条件、指令的完整模型。
更详细的语法可以在“模型开发平台中”的【帮助】菜单下“基本语法”中查看。
麦语言目前有函数240多个,不建议大家从头到尾背函数表,建议大家先从函数列表中大概了解软件中都提供了哪些函数,再在软件中提供的示范模型中学习编写方法和常用的函数,当您有更高的编写需求时在去函数列表里找相应的函数即可。
(2)、试着自己编写简单模型了解了示范模型中编写的交易思路后,试着按照同样思路独立编写模型,编程能力会有大幅提高。
麦语言函数手册
文华财经“麦语言”函数手册(2011年10月更新)
文华财经资讯有限公司
“麦语言”源于2004年文华推出的国内第一套程序化函数库,经过6年的发展,吸收几十万用户的意见反馈,一点一点完善起来的,是一套成熟稳定的模型开发平台。
麦语言,是国内使用人数最多的程序化模型开发平台。
麦语言倡导的是积木式的编程理念,把复杂算法封装到一个个的函数里,采用“小语法,大函数”的构建模式。
语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。
麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用
一、自编策略模型支持的函数
1.历史数据引用
2.日内高频数据引用。
量化经典麦语言程序化模型的编写(精).
关键词:多个交易条件 1:以均线结合KD交叉指标为例: 2:练习编写:MACD、KDJ指模型。
MA5:=MA(C,5);
MA10:=MA(C,10);
均线模型
MA5>MA10,BK;//5日均线大于10日均线买入 。
跨周期跨合约模型的编写规则
1.只能引用 .FML/.XFML文件 2.只能引用如下周期:MIN1 MIN3 MIN5 MIN15 MIN30 HOUR1 DAY WEEK MONTH 3.只能短周期引用长周期 4.被引用的指标中不能存在引用 5.如果不写文华码,默认引用当前合约,也可以直接写合约代 码如:rb1201 6.FORMULA 引用指标名,只能引用除数字、或者数字开头 的名称之外的名称。
总结:多条件下用“()”明确逻辑关系
跨周期函数介绍
引用某品种在某个周期上加载了某个指标的数据。 用法:
#IMPORT [CODE, PERIOD, FORMULA] AS VAR 引用 CODE 所对应的合约 PERIOD 周期下指标 FORMULA
的数据。
CODE 文华码,PERIOD 周期,FORMULA 引用指标名, VAR 定义变量名
5、参数部分: 可以设置六个参数 首先是参数名称,然后是参数的最小值,最大值,最后是参数
的默认值。 在定义参数时要注意的是参数名称不可以重复,12个字符内
6、运用函数语言,也就是表达你的语言 函数具有自己的表达式,运行它就需要将我们的思路,按照函
数的表达式套用表述。
模型源码 命名
参数
A:(O+C)/2; B:C>O; //判断是否收阳;满足条件返回1,否则返回0 D:TIME=0900&&C>O; //用于多条件逻辑关系
麦语言基本语法与指令说明
2、指令指定交易数量,买入数量为变量 a.BK 后面括号中的计算公式可任意编写,计算结果为买入数量。 b.小数采用向下取整原则。 c.指定交易数量后,设置的数量无效。 例: CLOSE>MA(CLOSE,5),BK(MONEY*0.5/(C+0.5*FEE));//收盘价大于 5 周期均线,按照理论可用资金 50%买入。
2、指令指定对应组别,不指定交易手数,下单手数为模组设置的固定手数。 例: CROSSUP(C,MA(C,5)),BK('A');//A 组做多指令,收盘价向上穿越 5 周期均线,买开仓,下单手数为模组设置的固定手数
在非过滤模型中的应用
1、指令指定交易手数,下单手数为固定手数
a.BK 后面的括号中为下单手数,可为任意正整数。 b.指定交易手数后,模组设置的手数无效。
CLOSE*OPEN;返回收盘价与开盘价的积。 CLOSE/OPEN;返回收盘价与开盘价的商。
CLOSE>OPEN&&REF(CLOSE>OPEN,1);当根 k 线 与前一根 k 线都收阳返回 1,否则返回 0。
CLOSE>OPEN||REF(CLOSE>OPEN,1);当根 k 线收阳或 前一根 k 线收阳返回 1,否则返回 0。
2、指令指定对应组别,不指定交易数量,买入数量为设置的固定数量。 例: CROSSUP(C,MA(C,5)),BK('A');//A 组做多指令,收盘价向上穿越 5 周期均线,买入,买入数量为设置的固定数量
在非过滤模型中的应用
1、指令指定交易数量,买入数量为固定数量
麦语言语法——精选推荐
麦语⾔语法
1、命名部分:⽀持汉字、字母、数字、划线格式命名,长度控制在
31字符内;命名不能和已存在的公式名称重复。
2、定义变量名称变量名称不能相互重复;不能与参数名重复;不能与函数名重复。
3、半⾓输⼊法的⼤写状态。
4、每个语句应该以分号结束。
5、参数部分:可以设置六个参数;⾸先是参数名称,然后是参数的最⼩值,最⼤值,最后是参数的默认值;在定义参数时要注意的是参数名称不可以重复,12个字符内。
6、注释或者舍去想要在编写后,加⼊⾃⼰的语⾔注释,在结尾处⽤“//”表⽰;或者想舍去某段,在某段在最前端加⼊“//”;
编写训练:
1、定义⼀个变量,名为A,算出开盘价与收盘价和的⼆分之⼀,并显⽰指标线扩展练习:指定指标线颜⾊为黄⾊。
开盘价open收盘价close
2、编写⼀个指标,在最⾼价和最低价上分别加减2%,画出⼀条通道,通道上轨为红⾊,下轨为绿⾊。
3、定义变量A为阳线,查看A的返回值。
麦语言编程教程
麦语言编程教程所有的编程都可以归结为以下三类:第一,表达式问题。
以当前视角,给出变量的计算公式。
所谓的当前视角,就是不考虑位置关系,把那个位置当作是当前位置。
事实上,前面那张表中任何一个方格的数据,都是把这个方格所在列当成当前K线来解读的。
第二,逻辑判断问题。
其实可以归结成表达式问题,但是考虑到逻辑判断比较重要,而且和纯计算数值的表达式略有些不同的,所以独立出来。
第三,定位问题。
只有一个位置不需要确定,那就是当前,这里说的当前,是K线图上最后一根K线,不是前面说的当前视角。
定位的结果是得到历史某个位置到当前的距离。
定位的目的是到那个历史位置去取值,可以是逻辑值,也可以是数据值。
当然定位还有另外一个作用,就是画线,这种情况我们之后再讨论。
表达式问题和逻辑判断问题这两个问题都是比较简单的。
关键点是以当前视角给出计算公式,不需要考虑计算公式之外的位置问题。
*************************************************************** *************先来一个简单的例子:求当前K线最高价和最低价一半的价格。
这是一个和位置完全没有关系的问题,因为当前K线是不需要定位。
所以我们可以直接定义变量名称并给出计算公式。
HL:(H+L)/2;*************************************************************** *************如果在表达式中,某个数据需要通过定位从历史中取,那么可以用定位问题的解决方法取到这个数值,然后再与其他与位置无关的变量组成表达式。
例如,计算最高、最低价,以及前一根K线收盘价的平均。
前一根K线收盘价定义为:ZC:=REF(C,1);//定位问题后面会有详细说明HLC:(H+L+ZC)/3;*************************************************************** *************在一个区间内计算数值,如果有系统函数,则与定位无关。
麦语言程序化模型的编写
3、半角输入法的大写状态;
4、每个语句应该以分号结束;
MY language 编写语法:
5、参数部分: 可以设置六个参数 首先是参数名称,然后是参数的最小值,最大值,最后是参数 的默认值。 在定义参数时要注意的是参数名称不可以重复,12个字符内 6、运用函数语言,也就是表达你的语言 函数具有自己的表达式,运行它就需要将我们的思路,按照函 数的表达式套用表述。
ISLASTSK
ISLASTBP
ISLASTSP
用法:ISLASTSP 如果上一个交易信号是SP则返回1(Yes),否则返回0(No)
判断上一个交易信号是否是BPK。 用法:ISLASTBPK 如果上一个交易信号是BPK则返回1(Yes),否则返回0(No) 判断上一个交易信号是否是SPK。 用法:ISLASTSPK 如果上一个交易信号是SPK则返回1(Yes),否则返回0(No)
定义变量: 当根K线最高价; 结算价: 15周期收盘价均线(显示定义); 衍生: 当前K线的前一个周期最高价; 当前K线的前一个周期15均线;
HH:=H; S:=SETTLE; MA15:MA(C,15);
REF(HH,1); REF(MA15,1);
2、模型的基本结构
在编写前,需要将交易思想清晰量化后,通过语言函数编写完成 交易模型基本结构 1.定义需要的每个变量 2.交易条件+交易指令
MA5:=MA(C,5); 定义思路中涉及到的变量 MA10:=MA(C,10); CROSS(MA5,MA10),BK; CROSS(MA10,MA5),SP;交易条件,写入交易指令 CROSS(MA10,MA5),SK; CROSS(MA5,MA10),BP;
模型中使用的交易指令
编写练习:
麦语言函数手册
文华财经“麦语言”函数手册
(2011年10月更新)
文华财经资讯有限公司
“麦语言”源于2004年文华推出的国内第一套程序化函数库,经过6年的发展,吸收几十万用户的意见反馈,一点一点完善起来的,是一套成熟稳定的模型开发平台。
麦语言,是国内使用人数最多的程序化模型开发平台。
建模式。
语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。
麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用
一、自编策略模型支持的函数
1.历史数据引用
2.日内高频数据引用
3.行情数据引用
4.金融统计
5.数理统计
6.逻辑判断
7.数学运算
8.时间函数
9.绘图
10.颜色常数
11.头寸函数
二、自编下单组件支持的函数
1.引用数据函数
2.逻辑判断函数
3.辅助函数
4.数学运算函数
5.模型相关函数
6.头寸函数。
麦语言函数手册
取Tick图中该笔TICK的成交价。用法:L2_PRICE返回TICK图中该笔TICK的成交价。
L2_VOLUME
取TICK图中该笔TICK的成交量。用法:L2_VOLUME返回TICK图中该笔TICK的成交量。
ASKBIGVOLPRICE
TICK图中该笔Tick盘口中空头满足大单条件的与最新价的最近价格。用法:ASKBIGVOLPRICE返回TICK图中该笔Tick盘口满足大单条件的与最新价的最近价格,注模型中需调用一次CALVOLPRICELIST函数
L2_ASK4
取秒周期末卖4价(K线图)或该笔TICK时刻的卖4价(Tick图)。用法:L2_ASK4K线图时返回当前秒周期最后时刻的卖4价。TICK图时返回该笔TICK时刻的卖4价。
L2_ASK5
取秒周期末卖5价(K线图)或该笔TICK时刻的卖5价(Tick图)。用法:L2_ASK5K线图时返回当前秒周期最后时刻的卖5价。TICK图时返回该笔TICK时刻的卖5价。
DMA(X,A)
返回X的动态移动平均,其中A为常数,并且必须介于0及1之间。计算方法:DMA(N)=DMA(N-1)*(1-A)+X(N)*A其中DMA(N-1)为第(N-1)天的DMA值。
EMA(X,N)
L2_BIDVOL5
取秒周期末买5量(K线图)或该笔TICK时刻的买5量(Tick图)。用法:L2_BID5K线图时返回当前秒周期最后时刻的买5量。TICK图时返回该笔TICK时刻的买5量。
L2_ASKVOL1
取秒周期末卖1量(K线图)或该笔TICK时刻的卖1量(Tick图)。用法:L2_ASK1K线图时返回当前秒周期最后时刻的卖1量。TICK图时返回该笔TICK时刻的卖1量。
麦语言自编下单组件函数列表
Week=Week(CurrentServerTime());
MessageOut(Week);
}
注:
因为CurrentServerTime()只能用于绑定运行的组件,所以该编写只能用于绑定运行的组件时才能得到正确的返回值
注册变量〔整形〕
注册一个整形变量。用法:WriteGlabal(Name,Value)。Name为整形变量的注册名称(字符串),Value为整形变量的值例:WriteGlabal("Period",5)注册一个整形变量,注册名称为"Period",值为5。
price=Price("m1109"); //price的值为合约m1109的当前价格
某合约当前成交量
某合约当前成交量。用法:Volume(Code)返回合约Code的当前成交量,Code为某合约的合约代码例:VAR volume;//定义一个变量volume
volume=Volume("m1109"); //volume的值为合约m1109的当前成交量
fRate=ReadGlobal(Rate);fRate的值为0.5。
读取注册变量〔字符串〕
返回已注册的字符串变量的值
用法:ReadGlobalStr(NameStr);返回注册的NameStr的值,NameStr为已注册的字符串变量的注册名称。如果NameStr未被注册过,返回""(空字符串)
例:
WriteGlobal("A1",A1);
MessageOut(A1);
}
}
小时
取得当前时间的小时注:time的取值:可以为本机时间CurrentTime(),也可以为交易所时间CurrentServerTime()例:VAR hour;hour = Hour(CurrentTime());//定义一个变量hour,hour的值为当前本机时间的小时
麦语言程序化模型的编写48页PPT
判断上一个交易信号是否是SPK。 ISLASTSPK
用法:ISLASTSPK 如果上一个交易信号是SPK则返回1(Yes),否则返回0(No)
BARSBK BARSSK
上一次买开信号位置 用法: BARSBK返回上一次买开仓距离当前k线的k线数。 上一次卖开信号位置 用法: BARSSK返回上一次卖开仓距离当前k线的k线数。
3、半角输入法的大写状态;
4、每个语句应该以分号结束;
MY language 编写语法:
5、参数部分: 可以设置六个参数 首先是参数名称,然后是参数的最小值,最大值,最后是参数
的默认值。 在定义参数时要注意的是参数名称不可以重复,12个字符内
6、运用函数语言,也就是表达你的语言 函数具有自己的表达式,运行它就需要将我们的思路,按照函
定义变量: 当根K线最高价; 结算价: 15周期收盘价均线(显示定义);
衍生: 当前K线的前一个周期最高价;
当前K线的前一个周期15均线;
HH:=H; S:=SETTLE; MA15:MA(C,15);
REF(HH,1); REF(MA15,1);
2、模型的基本结构
在编写前,需要将交易思想清晰量化后,通过语言函数编写完成
运作模型:
一、模型的基本结构和跨指标模型的编写
1、模型编写的语法与操作符
MY language 编写语法 MY language 操作符
MY language 编写语法:
1、命名部分: 支持汉字、字母、数字、划线格式命名,长度控制在31字符内。 命名不能和已存在的公式名称重复;
2、定义变量名称 变量名称不能相互重复; 不能与参数名重复; 不能与函数名重复;
麦语言程序化模型的编写精品文档
例 同一合约不同周期的数据调用
要求
30分钟周期上,当前面一根MA5大于MA10,并且5分钟 周期上,MA5上穿MA10,做多。
30分钟周期上,当前面一根MA5大于MA10,并且5分钟 周期上,MA5下穿MA10,做空。
尾盘平仓
先建立一个指标 名称AAA RMA5:=REF(MA(C,5),1); RMA10:=REF(MA(C,10),1);
MACD、KDJ指标模型:
DIFF := EMA(CLOSE,SHORT) - EMA(CLOSE,LONG); DEA := EMA(DIFF,N); MACD:=2*(DIFF-DEA); RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,M1,1); D:=SMA(K,M1,1); J:=3*K-2*D; (CROSS(K,D)&&J<30)||(CROSS(DIFF,DEA)&&MACD>1),BK; (CROSS(D,K)&&REF(J,1)>70)||(CROSS(DEA,DIFF)&&MACD<-1),SP; (CROSS(D,K)&&J>70)||(CROSS(DEA,DIFF)&&MACD<-1),SK; (CROSS(K,D)&&REF(J,1)<30)||(CROSS(DIFF,DEA)&&MACD>1),BP; AUTOFILTER;
模型中跨指标,是将多个指标交易思想结合在一起进行看盘 断势。 关键词:多个交易条件
1:以均线结合KD交叉指标为例: 2:练习编写:MACD、KDJ指标模型。
麦语言函数手册
麦语言函数手册文华财经“麦语言”函数手册(2011年10月更新)文华财经资讯有限公司“麦语言”源于2004年文华推出的国内第一套程序化函数库,经过6年的发展,吸收几十万用户的意见反馈,一点一点完善起来的,是一套成熟稳定的模型开发平台。
麦语言,是国内使用人数最多的程序化模型开发平台。
麦语言倡导的是积木式的编程理念,把复杂算法封装到一个个的函数里,采用“小语法,大函数”的构建模式。
语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。
麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用一、自编策略模型支持的函数1.历史数据引用AVPRICE 取得均价(在盘后对于国内三个期货交易所指结算价)SETTLE 取得结算价(只有在日线周期盘后才能取得当日的结算价)说明:如果用在周期小于'日'的K线上如5分钟K线,一小时k线,每根k线返回的值表示这根k线当日开盘时到这根k线的为止的结算价(均价)如果用在周期大于等于'日'的K线上,返回当根K线结束时间所在日的结算价.CLOSE 取得收盘价(在盘中指最新价),也可简写为 C 。
HIGH 求高价,也可简写为 H 。
LOW 求最低价,也可简写为L 。
OPEN 求开盘价,也可简写为O 。
OPI 取持仓量REF(X,N)引用X在N个周期前的值例:REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价REFX(X,N) 引用N个周期后的数据。
(N为大于等于1的整数)『未来函数』例:REFX(CLOSE,5);表示引用自当前周期后第5个周期的收盘价本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!#IMPORT 引用某品种在某个周期上加载了某个指标的数据。
用法:#IMPORT [CODE, PERIOD, FORMULA] AS VAR。
MATLAB中文手册
Matlab中文手册目录 (1)第1章MATLAB 6.5环境 (11)1.1 MATLAB简介 (11)1.1.1 MATLAB工具箱 (11)1.1.2 MATLAB功能和特点 (12)1.2 MATLAB 6.5环境设置 (13)1.2.1 菜单栏 (13)1.2.2 工具栏 (18)1.2.3 通用操作界面窗口 (18)1.3 MATLAB 6.5帮助 (32)1.4 MATLAB 6.5其他管理 (35)1.4.1 MATLAB用户文件格式 (35)1.4.2设置搜索路径 (36)1.4.3文件管理命令 (37)1.4.4 退出MATLAB (39)1.5 一个实例 (39)第2章MATLAB数值计算 (43)2.1 变量和数据 (43)2.1.1数据类型 (43)2.1.2数据 (43)2.1.3变量 (46)2.2 矩阵和数组 (47)2.2.1矩阵输入 (47)2.2.2矩阵元素和操作 (54)2.2.3字符串 (65)2.2.4矩阵和数组运算 (72)2.2.5多维数组 (92)2.3稀疏矩阵 (98)2.3.1稀疏矩阵的建立 (98)2.3.2稀疏矩阵的存储空间 (103)2.3.3稀疏矩阵的运算 (105)2.4多项式 (105)2.4.1多项式的求值、求根和部分分式展开 (105)2.4.2多项式的乘除法和微积分 (109)2.4.3多项式拟合和插值 (112)2.5元胞数组和结构数组 (115)2.5.1元胞数组 (116)2.5.2结构数组 (121)2.6数据分析 (127)2.6.1数据统计和相关分析 (127)2.6.2差分和积分 (129)2.6.3卷积和快速傅里叶变换 (134)2.6.4向量函数 (137)第3章MATLAB符号计算 (138)3.1 符号表达式的建立 (138)3.1.1 创建符号常量 (138)3.1.2 创建符号变量和表达式 (141)3.1.3 符号矩阵 (143)3.2符号表达式的代数运算 (145)3.2.1符号表达式的代数运算 (146)3.2.2 符号数值任意精度控制和运算 (149)3.2.3 符号对象与数值对象的转换 (152)3.3符号表达式的操作和转换 (154)3.3.1符号表达式中自由变量的确定 (154)3.3.2符号表达式的化简 (156)3.3.3符号表达式的替换 (161)3.3.4求反函数和复合函数 (164)3.3.5 符号表达式的转换 (166)3.4 符号极限、微积分和级数求和 (169)3.4.1符号极限 (169)3.4.2符号微分 (171)3.4.3符号积分 (174)3.4.4符号级数 (176)3.5 符号积分变换 (178)3.5.1傅里叶(Fourier)变换及其反变换 (178)3.5.2拉普拉斯(Laplace)变换及其反变换 (180)3.5.3 Z变换及其反变换 (181)3.6符号方程的求解 (183)3.6.1代数方程 (183)3.6.2符号常微分方程 (185)3.7符号函数的可视化 (186)3.7.1符号函数的绘图命令 (186)3.7.2图形化的符号函数计算器 (189)3.8 Maple函数的使用 (189)3.8.1访问Maple函数 (190)3.8.2 获得Maple的帮助 (191)第4章MATLAB计算的可视化和GUI设计 (192)4.1二维曲线的绘制 (192)4.1.1基本绘图命令plot (192)4.1.2绘制曲线的一般步骤 (198)4.1.3多个图形绘制的方法 (199)4.1.4曲线的线型、颜色和数据点形 (202)4.1.5设置坐标轴和文字标注 (204)4.1.6交互式图形命令 (210)4.2 MATLAB的三维图形绘制 (211)4.2.1绘制三维线图命令plot3 (211)4.2.2绘制三维网线图和曲面图 (212)4.2.3立体图形与图轴的控制 (217)4.2.4色彩的控制 (220)4.3 MATLAB的特殊图形绘制 (225)4.3.1条形图 (225)4.3.2面积图和实心图 (227)4.3.3直方图 (228)4.3.4饼图 (230)4.3.5离散数据图 (231)4.3.6对数坐标和极坐标图 (232)4.3.7等高线图 (234)4.3.8复向量图 (235)4.4图形窗口的功能 (236)4.5对话框 (238)4.6句柄图形 (242)4.6.1句柄图形体系 (242)4.6.2图形对象的操作 (242)4.6.3图形对象属性的获取和设置 (248)4.7图形用户界面(GUI)设计 (251)4.7.1可视化的界面环境 (252)4.7.2菜单 (253)4.7.5回调函数 (258)4.7.6 GUI应用举例 (258)4.8动画 (261)4.8.1以电影方式产生动画 (261)4.8.2以对象方式产生动画 (262)第5章MATLAB程序设计 (264)5.1脚本文件和函数文件 (264)5.1.1 M文本编辑器 (265)5.1.2 M文件的基本格式 (265)5.1.3 M脚本文件 (266)5.1.4 M函数文件 (268)5.2程序流程控制 (269)5.2.1 for ... end循环结构.. (269)5.2.2 while ... end循环结构. (271)5.2.3 If...else...end条件转移结构 (272)5.2.4 switch...case开关结构.. (273)5.2.5 try... catch... end试探结构 .. (275)5.2.6流程控制语句 (276)5.3函数调用和参数传递 (280)5.3.1子函数和私有函数 (280)5.3.2局部变量和全局变量 (281)5.3.4程序举例 (287)5.4 M文件性能的优化和加速 (289)5.4.1 P码文件 (289)5.4.2 M文件性能优化 (290)5.4.3 JIT和加速器 (292)5.5内联函数 (295)5.6利用函数句柄执行函数 (298)5.6.1函数句柄的创建 (298)5.6.2用feval命令执行函数 (299)5.7利用泛函命令进行数值分析 (301)5.7.1求极小值 (302)5.7.2求过零点 (304)5.7.3数值积分 (305)5.7.4微分方程的数值解 (306)第6章线性控制系统分析与设计 (309)6.1线性系统的描述 (309)6.1.1状态空间描述法 (309)6.1.2传递函数描述法 (311)6.1.3零极点描述法 (312)6.1.4离散系统的数学描述 (313)6.2线性系统模型之间的转换 (317)6.2.1连续系统模型之间的转换 (317)6.2.2连续系统与离散系统之间的转换 (325)6.2.3模型对象的属性 (330)6.3结构框图的模型表示 (334)6.4线性系统的时域分析 (348)6.4.1零输入响应分析 (348)6.4.2脉冲响应分析 (350)6.4.3阶跃响应分析 (351)6.4.4任意输入的响应 (353)6.4.5系统的结构参数 (356)6.5线性系统的频域分析 (358)6.5.1频域特性 (358)6.5.2连续系统频域特性 (359)6.5.3幅值裕度和相角裕度 (366)6.5.4离散系统频域分析 (367)6.6线性系统的根轨迹分析 (367)6.6.1绘制根轨迹 (367)6.6.2根轨迹的其它工具 (370)6.7线性系统的状态空间设计 (373)6.7.1极点配置法 (373)6.7.2最优二次型设计 (374)第7章Simulink仿真环境 (376)7.1演示一个Simulink的简单程序 (376)7.2 Simulink的文件操作和模型窗口 (379)7.2.1 Simulink的文件操作 (379)7.2.2 Simulink的模型窗口 (380)7.3 模型的创建 (382)7.3.1模块的操作 (382)7.3.2信号线的操作 (385)7.3.3给模型添加文本注释 (387)7.4 Simulink的基本模块 (387)7.4.1基本模块 (387)7.4.2常用模块的参数和属性设置 (390)7.5复杂系统的仿真与分析 (395)7.5.1仿真的设置 (395)7.5.2连续系统仿真 (397)7.5.3离散系统仿真 (400)7.5.4仿真结构参数化 (402)7.6子系统与封装 (403)7.6.1建立子系统 (403)7.6.2条件执行子系统 (405)7.6.3子系统的封装 (407)7.7用MATLAB命令创建和运行Simulink模型 (413)7.7.1用MATLAB命令创建Simulink模型 (413)7.7.2用MATLAB命令运行Simulink模块 (417)7.8以Simulink为基础的模块工具箱简介 (418)第8章MATLAB高级应用 (419)8.1 MATLAB应用接口 (419)8.1.1 MEX文件 (419)8.1.2 使用MATLAB编译器生成MEX和EXE文件 (424)8.2 低级文件的输入输出 (426)8.2.1打开和关闭文件 (426)8.2.2读写格式化文件 (428)8.2.3读写二进制数据 (433)8.2.4文件定位 (435)8.3 图形文件的转储 (437)8.4 Notebook (438)8.4.1 Notebook的安装 (438)8.4.2 Notebook的启动 (438)8.4.3 Notebook的使用 (441)8.4.4 Notebook中MATLAB的使用 (445)第1章MATLAB 6.5环境1.1MATLAB简介●MATLAB(Matrix Laborator)是MathWorks公司开发科学与工程计算软件;●广泛应用于自动控制、数学运算、信号分析、计算机技术、图像信号处理、财务分析、航天工业、汽车工业、生物医学工程、语音处理和雷达工程等行业;●国内外高校和研究部门科学研究的重要工具;●MATLIB 已成为数学计算工具方面事实上的标准,MATLIB 6.5是最新版本。
麦语言模型编写学习教案
第六页,共40页。
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:SMA(RSV,M1,1); D:SMA(K,M2,1); J:3*K-2*D; //以下是加入的交易( jiāoyì)指令 CROSS(K,D),BK;//K向上穿越D,发出买开交易( jiāoyì)指令 CROSS(J,100),SP;//J向上穿越100,发出卖平交易( jiāoyì)指令 CROSS(D,K),SK;//K向下穿越D,发出卖开交易( jiāoyì)指令 CROSS(0,J),BP;//J向下穿越0,发出买平交易( jiāoyì)指令 AUTOFILTER;
第31页/共40页
第三十二页,共40页。
2、资金(zījīn)管理模型的编写思路及 案例
第32页/共40页
第三十三页,共40页。
例1 利用头寸(tóucùn)函数实现对仓位的加Βιβλιοθήκη 减。加仓模型(móxíng)
A:=多头开仓条件(tiáojiàn); B:=空头交易条件(tiáojiàn); D:=多头平仓条件(tiáojiàn); E:=空头平仓条件(tiáojiàn);
A1:=多头加仓条件(tiáojiàn); B1:=空头加仓条件(tiáojiàn);
第3页/共40页
第四页,共40页。
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1); D:SMA(K,M2,1); J:3*K-2*D;
第4页/共40页
第五页,共40页。
用指标(zhǐbiāo)监测 行情: K线上穿D线
如果买开价位比当前价位高出60且买开价位存在卖平仓bkprice请注意当模型存在连续多个开仓信号bkprice只在加载之后的卖开信号位置的卖开信号价位用法
麦语言函数手册最新版(233页)
ASKBIGCOUNT 取得TICK图所定义数据区主动卖大单次数
的和。 该函数不支持与指令连用。
注:
1、使用该函数前,必须先调用DEF_TICKDATA函数定义T ICK数据区。
ASKBIGCOU NT
2、使用该函数前,必须使用SETBIGVOL函数定义大单阈 值,否则该函数返回0。 3、该函数必须在TICK图中使用,在K线图上返回空值。
全部函数
函数名 函数说明
ABS(X):取的X的绝对值。
注:
1、正数的绝对值是它本身;
2、负数的绝对值是它的相反数;
3、0的绝对值还是0;
ABS
例1:
ABS(-10);//返回10。
例2:
ABS(CLOSE-10);//返回收盘价和的10价差的绝对值。
例3:
ABS(C-O);//当前K线实体长度
ACCOUNTM ONEY
ACOS(X):返回X的反余弦值。 注: 1、X取值范围[-1,1]。
ACOS ADMA
2、若X不在取值范围,返回值为空值。 例1: ACOS(-1);//求-1的反余弦值; 例2: ACOS(1);//求1的反余弦值;
ADMA(X,N,P,Q) 考夫曼均值 用法:ADMA(X,N,P,Q);求X在N个周期中的,快线频率参 数为P,慢线频率参数为Q的考夫曼自适应均值。 注: 1、X为调用的k线数据(例如高、开、低,收);N为调用 的间隔时间;P为快线频率参数;Q为慢线频率参数。 2、当前的K线数不足N根时,函数返回空值。 3、N为0或空值的情况下,函数返回空值。 算法: ADMA(X,N,P,Q)=REF(EMA(X,N),1)+CONSTANT*(X- REF( EMA(X,N),1)); CONSTANT是平滑系数,用⻨语言函数可以表示为: CONSTANT:=SQUARE((ABS((CLOSE-REF(CLOSE,N))/(SU M(ABS((CLOSE-REF(CLOSE,1))),N))))*(2/(P+1)-2/(Q+1))+2 /(Q+1)); 算法举例:计算C在9周期的,快线频率参数为2,慢线频率 参数为30的考夫曼均值。 1、确定价格方向:价格方向表示整个时间段中的净价格变 化。比如,使用N天的间隔(或N小时),这里N为9 2、计算方向移动:DIRECTION:=ABS(CLOSE-REF(CLOSE ,9)); 3、计算波动性:波动性是市场噪音的总数量,计算了时间 段内价格变化的总和。 VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),9); 4、确定效率系数: ER:=DIRECTION/VOLATILITY; 5、计算平滑系数:
麦语言基本语法与指令说明
3、指令指定对应组别,同时指定交易手数,
a.下面例 1 中,BK 后面的括号中“1”位置为下单手数。 b.下单手数为固定手数或者变量。 c.如下单手数为变量且结果包含小数,小数采用向下取整原则。 d.指定交易手数后,模组设置的手数无效。 例 1: CROSSUP(C,MA(C,5)),BK('A',1);//A 组做多指令,收盘价向上穿越 5 周期均线,下单手数为固定手数,1 手
例: CLOSE>MA(CLOSE,5),BK(500);//收盘价大于 5 周期均线,买入 500 股。设置的数量无效
2、指令指定交易数量,买入数量为变量 a.BK 后面括号中的计算公式可任意编写,计算结果为买入数量。 b.小数采用向下取整原则。 c.指定交易数量后,设置的数量无效。 例: CLOSE>MA(CLOSE,5),BK(MONEY*0.5/(C+0.5*FEE));//收盘价大于 5 周期均线,按照理论可用资金 50%买入。
2、指令指定对应组别,不指定交易数量,买入数量为设置的固定数量。 例: CROSSUP(C,MA(C,5)),BK('A');//A 组做多指令,收盘价向上穿越 5 周期均线,买入,买入数量为设置的固定数量
在非过滤模型中的应用
1、指令指定交易数量,买入数量为固定数量
a.BK 后面的括号中为买入数量,可为任意正整数。 b.指定交易数量后,设置的数量无效。
CLOSE>OPEN;当根 k 线的收盘价大于开盘价 (阳线)返回 1,否则返回 0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文华财经“麦语言”函数手册(2011年10月更新)文华财经资讯有限公司“麦语言”源于2004年文华推出的国内第一套程序化函数库,经过6年的发展,吸收几十万用户的意见反馈,一点一点完善起来的,是一套成熟稳定的模型开发平台。
麦语言,是国内使用人数最多的程序化模型开发平台。
麦语言倡导的是积木式的编程理念,把复杂算法封装到一个个的函数里,采用“小语法,大函数”的构建模式。
语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。
麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用一、自编策略模型支持的函数1.历史数据引用AVPRICE 取得均价(在盘后对于国内三个期货交易所指结算价)SETTLE 取得结算价(只有在日线周期盘后才能取得当日的结算价)说明:如果用在周期小于'日'的K线上如5分钟K线,一小时k线,每根k线返回的值表示这根k线当日开盘时到这根k线的为止的结算价(均价)如果用在周期大于等于'日'的K线上,返回当根K线结束时间所在日的结算价.CLOSE 取得收盘价(在盘中指最新价),也可简写为 C 。
HIGH 求高价,也可简写为 H 。
LOW 求最低价,也可简写为L 。
OPEN 求开盘价,也可简写为O 。
OPI 取持仓量REF(X,N)引用X在N个周期前的值例:REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价REFX(X,N) 引用N个周期后的数据。
(N为大于等于1的整数)『未来函数』例:REFX(CLOSE,5);表示引用自当前周期后第5个周期的收盘价本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!#IMPORT引用某品种在某个周期上加载了某个指标的数据。
用法:#IMPORT [CODE, PERIOD, FORMULA] AS VAR。
引用 CODE 所对应的合约 PERIOD周期下指标 FORMULA 的数据。
CODE 文华码,PERIOD 周期,FORMULA 引用指标名,VAR定义变量名注意:1.只能引用 .FML/.XFML文件2.只能引用如下周期:MIN1 MIN3 MIN5 MIN15 MIN30 HOUR1 DAY WEEK MONTH s3.只能短周期引用长周期4.被引用的指标中不能存在引用5.如果不写文华码,默认引用当前合约MINPRICE 返回某品种的最小变动价位。
用法:MINPRICE(CODE); 返回CODE所对应合约的最小变动价位。
CODE 文华码或交易代码。
例:MINPRICE('IF1107'); 表示返回IF1007的最小变动价位。
注意:某些合约(如橡胶指数)查不到最小变动价位,返回0。
VOL 求成交量,也可简写为V 。
2.日内高频数据引用L2_BID1 取秒周期末买1价(K线图)或该笔TICK时刻的买1价(Tick图)。
用法:L2_BID1 K线图时返回当前秒周期最后时刻的买1价。
TICK图时返回该笔TICK 时刻的买1价。
L2_BID2 取秒周期末买2价(K线图)或该笔TICK时刻的买2价(Tick图)。
用法:L2_BID2 K线图时返回当前秒周期最后时刻的买2价。
TICK图时返回该笔TICK 时刻的买2价。
L2_BID3 取秒周期末买3价(K线图)或该笔TICK时刻的买3价(Tick图)。
用法:L2_BID3 K线图时返回当前秒周期最后时刻的买3价。
TICK图时返回该笔TICK 时刻的买3价。
L2_BID4 取秒周期末买4价(K线图)或该笔TICK时刻的买4价(Tick图)。
用法:L2_BID4 K线图时返回当前秒周期最后时刻的买4价。
TICK图时返回该笔TICK 时刻的买4价。
L2_BID5 取秒周期末买5价(K线图)或该笔TICK时刻的买5价(Tick图)。
用法:L2_BID5 K线图时返回当前秒周期最后时刻的买5价。
TICK图时返回该笔TICK 时刻的买5价。
L2_ASK1 取秒周期末卖1价(K线图)或该笔TICK时刻的卖1价(Tick图)。
用法:L2_ASK1 K线图时返回当前秒周期最后时刻的卖1价。
TICK图时返回该笔TICK 时刻的卖1价。
L2_ASK2 取秒周期末卖2价(K线图)或该笔TICK时刻的卖2价(Tick图)。
用法:L2_ASK2 K线图时返回当前秒周期最后时刻的卖2价。
TICK图时返回该笔TICK 时刻的卖2价。
L2_ASK3 取秒周期末卖3价(K线图)或该笔TICK时刻的卖3价(Tick图)。
用法:L2_ASK3 K线图时返回当前秒周期最后时刻的卖3价。
TICK图时返回该笔TICK 时刻的卖3价。
L2_ASK4 取秒周期末卖4价(K线图)或该笔TICK时刻的卖4价(Tick图)。
用法:L2_ASK4 K线图时返回当前秒周期最后时刻的卖4价。
TICK图时返回该笔TICK 时刻的卖4价。
L2_ASK5 取秒周期末卖5价(K线图)或该笔TICK时刻的卖5价(Tick图)。
用法:L2_ASK5 K线图时返回当前秒周期最后时刻的卖5价。
TICK图时返回该笔TICK 时刻的卖5价。
L2_BIDVOL1取秒周期末买1量(K线图)或该笔TICK时刻的买1量(Tick图)。
用法:L2_BID1 K线图时返回当前秒周期最后时刻的买1量。
TICK图时返回该笔TICK 时刻的买1量。
L2_BIDVOL2 取秒周期末买2量(K线图)或该笔TICK时刻的买2量(Tick图)。
用法:L2_BID2 K线图时返回当前秒周期最后时刻的买2量。
TICK图时返回该笔TICK 时刻的买2量。
L2_BIDVOL3 取秒周期末买3量(K线图)或该笔TICK时刻的买3量(Tick图)。
用法:L2_BID3 K线图时返回当前秒周期最后时刻的买3量。
TICK图时返回该笔TICK 时刻的买3量。
L2_BIDVOL4 取秒周期末买4量(K线图)或该笔TICK时刻的买4量(Tick图)。
用法:L2_BID4 K线图时返回当前秒周期最后时刻的买4量。
TICK图时返回该笔TICK 时刻的买4量。
L2_BIDVOL5 取秒周期末买5量(K线图)或该笔TICK时刻的买5量(Tick图)。
用法:L2_BID5 K线图时返回当前秒周期最后时刻的买5量。
TICK图时返回该笔TICK 时刻的买5量。
L2_ASKVOL1 取秒周期末卖1量(K线图)或该笔TICK时刻的卖1量(Tick图)。
用法:L2_ASK1 K线图时返回当前秒周期最后时刻的卖1量。
TICK图时返回该笔TICK 时刻的卖1量。
L2_ASKVOL2 取秒周期末卖2量(K线图)或该笔TICK时刻的卖2量(Tick图)。
用法:L2_ASK2 K线图时返回当前秒周期最后时刻的卖2量。
TICK图时返回该笔TICK 时刻的卖2量。
L2_ASKVOL3 取秒周期末卖3量(K线图)或该笔TICK时刻的卖3量(Tick图)。
用法:L2_ASK3 K线图时返回当前秒周期最后时刻的卖3量。
TICK图时返回该笔TICK时刻的卖3量。
L2_ASKVOL4 取秒周期末卖4量(K线图)或该笔TICK时刻的卖4量(Tick图)。
用法:L2_ASK4 K线图时返回当前秒周期最后时刻的卖4量。
TICK图时返回该笔TICK 时刻的卖4量。
L2_ASKVOL5 取秒周期末卖5量(K线图)或该笔TICK时刻的卖5量(Tick图)。
用法:L2_ASK5 K线图时返回当前秒周期最后时刻的卖5量。
TICK图时返回该笔TICK 时刻的卖5量。
L2_PRICE 取Tick图中该笔TICK的成交价。
用法:L2_PRICE 返回TICK图中该笔TICK的成交价。
L2_VOLUME 取TICK图中该笔TICK的成交量。
用法:L2_VOLUME 返回TICK图中该笔TICK的成交量。
ASKBIGVOLPRICE TICK图中该笔Tick 盘口中空头满足大单条件的与最新价的最近价格。
用法:ASKBIGVOLPRICE 返回TICK图中该笔Tick 盘口满足大单条件的与最新价的最近价格, 注模型中需调用一次CALVOLPRICELIST函数BIDBIGVOLPRICE TICK图中该笔Tick 盘口中多头满足大单条件的与最新价的最近价格。
用法:BIDBIGVOLPRICE 返回TICK图中该笔Tick 盘口满足大单条件的与最新价的最近价格, 注模型中需调用一次CALVOLPRICELIST函数CALVOLPRICELIST TICK图中初始化盘口大单价格表,主要在BIDBIGVOLPRICE 与ASKBIGVOLPRICE 前使用,提供初始化。
用法:CALVOLPRICELISTL2_SETBIGVOL设置大单成交手数阈值用法:L2_SETBIGVOL( nVol ) 成交手数大于nVol的为大单,例:L2_SETBIGVOL( 10 ); // 大于10手的是大单L2_BKBIGCOUNT; // 查看买开的大单成交次数;L2_BIDVOL 取秒周期主动买的成交量。
用法:L2_BIDVOL 返回当前秒周期主动买的成交量L2_ASKVOL 取秒周期主动卖的成交量。
用法:L2_ASKVOL 返回当前秒周期主动卖的成交量L2_BIDBIGCOUNT 取秒周期主动买的大单成交次数。
用法:L2_BIDBIGCOUNT 返回当前秒周期主动买的大单成交次数L2_ASKBIGCOUNT 取秒周期主动卖的大单成交次数。
用法:L2_ASKBIGCOUNT 返回当前秒周期主动卖的大单成交次数L2_BIDBIGTOTVOL 取秒周期主动买的大单成交量。
用法:L2_BIDBIGTOTVOL 返回当前秒周期主动买的大单成交量L2_ASKBIGTOTVOL 取秒周期主动卖的大单成交量。
用法:L2_ASKBIGTOTVOL 返回当前秒周期主动卖的大单成交量L2_BKVOL 取秒周期买开的成交量。
用法:L2_BKVOL 返回当前秒周期买开的成交量L2_SKVOL 取秒周期卖开的成交量。
用法:L2_SKVOL 返回当前秒周期卖开的成交量L2_BPVOL 取秒周期买平的成交量。
用法:L2_BPVOL 返回当前秒周期买平的成交量L2_SPVOL 取秒周期卖平的成交量。
用法:L2_SPVOL 返回当前秒周期卖平的成交量L2_BKBIGCOUNT 取秒周期买开的大单成交次数。
用法:L2_BKBIGCOUNT 返回当前秒周期买开的大单成交次数L2_SKBIGCOUNT 取秒周期卖开的大单成交次数。
用法:L2_SKBIGCOUNT 返回当前秒周期卖开的大单成交次数L2_BPBIGCOUNT 取秒周期买平的大单成交次数。