麦语言基本语法与指令说明

合集下载

麦语言函数手册

麦语言函数手册

文华财经“麦语言”函数手册(2011年10月更新)
文华财经资讯有限公司
“麦语言”源于2004年文华推出的国内第一套程序化函数库,经过6年的发展,吸收几十万用户的意见反馈,一点一点完善起来的,是一套成熟稳定的模型开发平台。

麦语言,是国内使用人数最多的程序化模型开发平台。

麦语言倡导的是积木式的编程理念,把复杂算法封装到一个个的函数里,采用“小语法,大函数”的构建模式。

语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。

麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用
一、自编策略模型支持的函数
1.历史数据引用
2.日内高频数据引用
3.行情数据引用
4.金融统计
5.数理统计
6.逻辑判断
7.数学运算
8.时间函数
9.绘图
10.颜色常数
11.头寸函数
二、自编下单组件支持的函数
1.引用数据函数
2.逻辑判断函数
3.辅助函数
4.数学运算函数
5.模型相关函数
6.头寸函数。

M语言——精选推荐

M语言——精选推荐

M语⾔开发培训⽂档alertM基础(参考Cache⾯向对象软件开发教程.pdf P489)1.常⽤的特殊的变量这些特殊的变量有指定的含义,它们⼀般以$开头。

有个别特殊变量也同时⽀持缩写1)$HOROLOG ($H)$Horolog 包含了时间和⽇期,它们由逗号分开。

第⼀部分是⽇期的数字,它是从1840 年12 ⽉31 ⽇开始计算⽇期的数字。

第⼆部分是秒的数字,它是从午夜开始计算的。

Global中的⽇期时间都是以数字的形式存储的。

时间⽇期的函数$ZDate 把$Horolog 格式的⽇期值按照指定格式显⽰。

$ZDateH $ZDate 的反函数。

$ZDateTime 把$Horolog 格式的⽇期时间值按照指定格式显⽰。

$ZDateTimeH $ZDateTime 的反函数。

$ZTime 把$Horolog 格式的时间值按照指定格式显⽰。

$ZTimeH $ZTime 的反函数。

2) $JOB ($J)$JOB 包含⼀个正整数,表⽰系统所分配给每⼀个在执⾏中的进程独⼀⽆⼆的编号。

当进程还在的时候,$JOB 的值是不变的2.基本的运算符1)算术运算符+、-、*、/、\、#,**。

其中,+、-、*、/ 是基本的4 个算术运算符。

\ 整数的除法2+5*7 = 49,从左到右依次运算2+(a*b) = 372)算术⽐较运算符<、>3)字符串⽐较运算符=、[、]= ⽐较运算符是⽐较两个字符串的相同与否。

如果需要⽐较两个数字是否⼀样的话,需要在前⾯再加⼀个+ 号。

例如,+number1=+number2。

[运算符检查右边的串是不是包含了左边的串] 运算符检查左边的串是不是在字典顺序上跟着右边的串;它是严格按照ASCII 码来操作的。

例如:2]19,返回是1,因为2 的ASCII 值是50,⽽1的ASCII 值是49。

4) 连接符_ 它是⽤来连接两个字符串的& 与! 或‘= ⾮3.常见的命令变量操作命令:Set, Merge, Kill, New, Lock1)SET (S)给⼀个或者多个变量赋值 ,缩写SSet x=5,n(1)=4,dd=5Set ^FILE=32)MERGE (M)拷贝变量树。

m语言说明

m语言说明
利用冒号运算符创建向量的语法为:
X=J:INC:K
①J表示第一个元素,K表示最后一个元素,INC表示元素递增的步长
②都用:隔开
③如果省略INC,则按默认步长为1
④INC为正,则要求K>J,INC为负,则要求J>K
例:>>x=1:0.01:1.1
第三种方法是使用函数linspace或logspace
linspace是用来产生线性间隔向量的函数,用法:
经常使用的几个常量:
pi圆周率
inf无穷大,负无穷大可以表示为-inf
Nan不定式,代表“非数值量”,通常由0/0或inf/inf运算得出。
eps变量eps是用来确定秩和近似奇异的允差,对大多数pc来说,eps=,大约是,若变量的绝对值小于eps,则可以认为这个量为零。
i和j如果i和j不被定义,则表示纯虚数量i
B=
二.创建向量
向量也就是一维数组,在Matlab中创建向量可以使用不同的方法,最简单的方法就是逐个输入向量元素,如
>>x=[1 3 pi 3+5i]
在逐个元素输入时,每个元素之间可以用空格或逗号“,”作为间隔符。
第二种方法就是利用冒号“:”运算符创建向量,如
>>x=1:10
然后用whos查看内存变量。
表matlab矩阵生成函数函数说明zeros生成全为0的矩阵ones生成全为1的矩阵eye生成单位矩阵rand生成均匀分布的随机数矩阵数值范围01randn生成均值为0方差为1的正态分布随机数矩阵diag获取矩阵的对角线元素也可以生成对角矩阵tril产生下三角矩阵triu产生上三角矩阵compan产生伴随矩阵hilb产生希尔伯特矩阵inhilb希尔伯特逆矩阵pascal产生帕斯卡矩阵即杨辉三角magic产生魔方矩阵vander产生万达摩方阵meshgrid产生三维绘图基底坐标平面例子

“麦语言”的学习步骤和方法

“麦语言”的学习步骤和方法

“麦语言”的学习步骤和方法(一)为什么要学习编程语言:1、别人写的交易策略,你难以调整常听见有人说前一段运行很好的模型,最近却表现不佳,想换一个新的策略。

实际上没有一种策略能够永远适应市场,一般在一个季度左右就需要对策略调整参数或改动某些条件,如果策略不是自己编写的,很难去调整,就只能把大把时间浪费在无穷无尽的找模型中。

2、别人写的交易策略,你很难彻底执行如果是别人写的模型,无论模型测试结果多么完美,一旦市场出现危机情况,你都会坐立不安,总会怀疑策略有问题,然后把程序化扔到一边,又回到凭感觉操作的老路了。

人只会相信自己了解的东西,如果不相信就很难彻底执行,无法完成程序化。

3、编程的过程也是理解的过程有的人通过在市场亏钱、爆仓来理解市场,不仅学费高,成长也慢。

而通过编写策略来理解市场不需要交学费,从历史测试报告里很容易分析出来自己错在哪,也很容易改进,足以带来逼真的实战经验,所以编写和调试策略的过程也是理解市场的过程,是非常宝贵的积累。

(二)麦语言的学习步骤和方法:一提到语言,您可能想到的是复杂的语法,大量的词汇,无穷无尽的困难。

但“麦语言”与您以往学过的语言完全不同,它的语法只有两个部分,函数200多,是目前国内最简单的程序化编写语言,不需要您有任何的c语言c++编程基础,只要您能看懂汉字,外加点学习精神就能轻松学会。

(1)、了解麦语言模型结构,学习函数麦语言的模型结构很简单,只有两部分:1定义需要的变量。

2交易条件+交易指令。

如下图所示就是一个具有变量、条件、指令的完整模型。

更详细的语法可以在“模型开发平台中”的【帮助】菜单下“基本语法”中查看。

麦语言目前有函数240多个,不建议大家从头到尾背函数表,建议大家先从函数列表中大概了解软件中都提供了哪些函数,再在软件中提供的示范模型中学习编写方法和常用的函数,当您有更高的编写需求时在去函数列表里找相应的函数即可。

(2)、试着自己编写简单模型了解了示范模型中编写的交易思路后,试着按照同样思路独立编写模型,编程能力会有大幅提高。

麦语言语法——精选推荐

麦语言语法——精选推荐

麦语⾔语法
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;*************************************************************** *************在一个区间内计算数值,如果有系统函数,则与定位无关。

麦语言函数手册

麦语言函数手册

文华财经“麦语言”函数手册
(2011年10月更新)
文华财经资讯有限公司
“麦语言”源于2004年文华推出的国内第一套程序化函数库,经过6年的发展,吸收几十万用户的意见反馈,一点一点完善起来的,是一套成熟稳定的模型开发平台。

麦语言,是国内使用人数最多的程序化模型开发平台。

建模式。

语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。

麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用
一、自编策略模型支持的函数
1.历史数据引用
2.日内高频数据引用
3.行情数据引用
4.金融统计
5.数理统计
6.逻辑判断
7.数学运算
8.时间函数
9.绘图
10.颜色常数
11.头寸函数
二、自编下单组件支持的函数
1.引用数据函数
2.逻辑判断函数
3.辅助函数
4.数学运算函数
5.模型相关函数
6.头寸函数。

麦语言函数手册

麦语言函数手册
L2_PRICE
取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量。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、指令指定对应组别,同时指定交易手数,
a.下面例 1 中,BK 后面的括号中“1”位置为下单手数。 b.下单手数为固定手数或者变量。 c.如下单手数为变量且结果包含小数,小数采用向下取整原则。 d.指定交易手数后,模组设置的手数无效。 例 1: CROSSUP(C,MA(C,5)),BK('A',1);//A 组做多指令,收盘价向上穿越 5 周期均线,下单手数为固定手数,1 手
例 2: CROSSUP(C,MA(C,5)),BK('A',MONEY*0.5/(C+0.5*FEE));//A 组做多指令,收盘价向上穿越 5 周期均线,买入数量为变量, 按照理论可用资金 50%买开仓
BK 指令使用说明:
1、用于期货、外盘合约上为买入开仓 2、用于股票合约上为买入,但和 STOCKT0 或 STOCKT0_PLUS 连用加载在股票合约上不出信号
//后为使用方法的文字解释
在期货、外盘合约中的应用
在过滤模型中的应用
1、指令不指定交易手数,下单手数为模组设置的固定手数。 例: CLOSE>MA(CLOSE,5),BK; //收盘价大于 5 周期均线,买开仓,下单手数为模组设置的固定手数
6、定义全局变量 VARIABLE:VAR1:=X,VAR2:=Y; IF 条件 1 THEN VAR1:=VAR1+1; IF 条件 2 THEN VAR2:=VAR2+1; VARIABLE 表示声明后面的变量名为全局变量
Байду номын сангаас
VAR1 VAR2 全局变量的名字 X Y 为全局变量的初始值 VAR1:=VAR1+1;表示给 VARI 赋值 如果当前 K 线条件满足条件 1,则给 VARI 赋值为 VAR1+1,否则仍旧取值为之前的 VAR1 的值
例: CLOSE>MA(CLOSE,5),BK(5);//收盘价大于 5 周期均线,买开 5 手。模组设置的手数无效
2、指令指定交易手数,下单手数为变量 a.BK 后面括号中的计算公式可任意编写,计算结果为下单手数。 b.小数采用向下取整原则。 c.指定交易手数后,模组设置的手数无效。 例: CLOSE>MA(CLOSE,5),BK(MONEY*0.5/(C*MARGIN*D));//收盘价大于 5 周期均线,按照理论可用资金 50%买开仓。模组 设置的手数无效
3、指令指定对应组别,同时指定交易数量,
a.下面例 1 中,BK 后面的括号中“100”位置为买入数量。 b.买入数量为固定数量或者变量。 c.如买入数量为变量且结果包含小数,小数采用向下取整原则。 d.指定交易数量后,设置的数量无效。 例 1: CROSSUP(C,MA(C,5)),BK('A',100);//A 组做多指令,收盘价向上穿越 5 周期均线,买入数量为固定数量,100 股
CLOSE>OPEN;当根 k 线的收盘价大于开盘价 (阳线)返回 1,否则返回 0。
CLOSE<OPEN;当根 k 线的收盘价小于开盘价(阴线) 返回 1,否则返回 0。
CLOSE>=2000;当根 k 线收盘价大于等于 2000 返回 1,否则返回 0。
CLOSE<=2000;当根 k 线收盘价小于等于 2000 返回 1,否则返回 0。
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、指令指定交易数量,买入数量为固定数量
a.BK 后面的括号中为买入数量,可为任意正整数。 b.指定交易数量后,设置的数量无效。
例 2: CROSSUP(C,MA(C,5)),BK('A',MONEY*0.5/(C*MARGIN*D));//A 组做多指令,收盘价向上穿越 5 周期均线,按照理论可用 资金 50%买开仓
在股票模型中的应用
在过滤模型中的应用
1、指令不指定交易数量,买入数量为设置的固定数量。 例: CLOSE>MA(CLOSE,500),BK; //收盘价大于开盘价,买入,买入数量为设置的固定数量
例: 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%买入。
DATE<>REF(DATE,1);当根 k 线的日期与前一 根 k 线的日期不等(当根 k 线为当日第一根 k 线) 返回 1,否则返回 0。
TIME=1459;当根 k 线的时间为 14 点 59 分返 回 1,否则返回 0。
AA:=(OPEN+CLOSE)/2;定义变量 AA,模型加
:=
定义变量(模型加载时不显示线)
AA..(OPEN+CLOSE)/2;//定义变量 AA,主图

定义变量(以独立坐标方式显示) 加载时,无论指标属性如何,AA 以独立坐标方式在
主图显示。
编辑平台的语法
1、编写规则 (1)请使用半角输入,不区分大小写; (2)每一行语句以“;”结束; (3)注释行前用“//”标识; 2、变量命名 “O”“H”“L”“C”为系统关键字,不可以用作变量名。 3、交易指令冲突 过滤模型不支持指令里定义手数,例如:BK(5)。 4、函数冲突 (1)"TRADE_OTHER"的基础数据是一分钟数据,与"CHECKSIG_MIN"、"MULTSIG_MIN"配套,但是不能与"CHECKSIG"、 "MULTSIG"函数一起使用。 (2)"CLOSEKLINE"/"CLOSEKLINE_MIN"只支持收盘价模型,不能再写"CHECKSIG"/"CHECKSIG_MIN"函数、 "MULTSIG"/"MULTSIG_MIN"函数。 (3)"CLOSEKLINE"和"CLOSEKLINE_MIN"函数有冲突,不能一起使用。 (4)"CHECKSIG"/"CHECKSIG_MIN"这类函数,"MULTSIG"/"MULTSIG_MIN"这类函数,二类函数是有冲突的,不能一 起使用。 (5)"CHECKSIG"和"CHECKSIG_MIN"函数有冲突,不能一起使用。 (6)"MULTSIG"和"MULTSIG_MIN"函数有冲突,不能一起使用。 (7)"MULTSIG"/"MULTSIG_MIN"表示一根 k 线多信号,和表示一根 k 线一个信号但是不同 k 线指令行重复生效的 "TRADE_AGAIN"函数有冲突,不能一起使用。 (8)"CLOSEMINUTE/CLOSESEC"只支持收盘价模型,不能再写 CHECK_MIN/CHECKSIG、MULTSIG_MIN/MULTSIG 函数。 (9)"CLOSEMINUTE1/CLOSESEC1"只支持指令价模型,不能与 CLOSEKLINE/CLOSEKLINE_MIN 一起使用。 5、IF ... THEN BEGIN ... END 语法
2、指令指定对应组别,不指定交易手数,下单手数为模组设置的固定手数。 例: CROSSUP(C,MA(C,5)),BK('A');//A 组做多指令,收盘价向上穿越 5 周期均线,买开仓,下单手数为模组设置的固定手数
在非过滤模型中的应用
1、指令指定交易手数,下单手数为固定手数
a.BK 后面的括号中为下单手数,可为任意正整数。 b.指定交易手数后,模组设置的手数无效。
载时 AA 在图表上不显示线。
: 定义变量(模型加载时显示线)
AA:(OPEN+CLOSE)/2;定义变量 AA,模型加载时 AA 在图表上显示线。
AA^^(OPEN+CLOSE)/2;//定义变量 AA,主图
定义变量(以主图附加坐标方式显
^^
加载时,无论指标属性如何,AA 都以主图附加坐标
示)
方式在主图显示。
语法 操作符
自编模型支持的操作符
操作符
意义
举例
+ 加法
- 减法
*
乘法
/
除法
&& 与(并且),也可简写为 AND
|| 或(或者),也可简写为 OR
>
大于
<
小于
>= 大于等于
<= 小于等于
<> 不等于
=
等于操作符
CLOSE+OPEN;返回收盘价与开盘价的和。
CLOSE-OPEN;返回收盘价与开盘价的差。
相关文档
最新文档