麦语言基本语法与指令说明
- 格式:pdf
- 大小:324.13 KB
- 文档页数:4
文华财经“麦语言”函数手册(2011年10月更新)
文华财经资讯有限公司
“麦语言”源于2004年文华推出的国内第一套程序化函数库,经过6年的发展,吸收几十万用户的意见反馈,一点一点完善起来的,是一套成熟稳定的模型开发平台。
麦语言,是国内使用人数最多的程序化模型开发平台。
麦语言倡导的是积木式的编程理念,把复杂算法封装到一个个的函数里,采用“小语法,大函数”的构建模式。
语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。
麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用
一、自编策略模型支持的函数
1.历史数据引用
2.日内高频数据引用
3.行情数据引用
4.金融统计
5.数理统计
6.逻辑判断
7.数学运算
8.时间函数
9.绘图
10.颜色常数
11.头寸函数
二、自编下单组件支持的函数
1.引用数据函数
2.逻辑判断函数
3.辅助函数
4.数学运算函数
5.模型相关函数
6.头寸函数。
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)拷贝变量树。
“麦语言”的学习步骤和方法(一)为什么要学习编程语言: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.头寸函数。
特别符号{ }大括号多条命令集的结合[ ]中括号设备,通道号[DEVICE,CHANNEL];数组的定义,如:INTEGER VOL[NUMBER];SYSTEM_CALL系统调用,如:SYSTEM_CALL[1] 'COSX'(45) ( )小括号IF条件语句;定义互锁语句(* *)或/* */注释对程序的必要说明,在程序中不起任何作用//注释单句注释运算符号常用关键字ON[DEVICE,CHANNEL] // 开OFF[DEVICE,CHANNEL] // 关PULSE[DEVICE,CHANNEL] // 发送脉冲TO [DEVICE,CHANNEL]// 按住多长时间执行多长SEND_COMMAND DEV, '<command string>'SEND_STRING DEV, '<string>'事件处理:BUTTON_EVENT这个关键字规定了一个按钮事件的处理。
它包括按下、释放、持续三个事件,在一个指定的设备通道上,这三个事件与按下和释放按钮是紧密相连的,按钮事件包含一个可选择的反馈信息处理,它在事件处理完成之后立即运行。
在任何时候主线运行了,这个反馈信息处理也被执行。
定义格式如下:BUTTON_EVENT [<device>,<channel>]{PUSH:{/* 当按钮按下去时执行的动作*/}RELEASE:{/* 当按钮松手时执行的动作*/}HOLD [<time>,[REPEAT]]:{/* 当按钮按住时过了多长时间/或每隔多长时间重复执行的动作*/}}Example:BUTTON_EVENT[TP,1]{PUSH: /* 按下触摸屏第一个通道时执行的动作*/{ON[RELAY,1]}}BUTTON_EVENT特性描述表:DATA_EVENT这个关键字规定了一个数据事件的处理。
麦语言编写基础操作符
麦语言是一种用于编写智能合约的编程语言,它具有丰富的基
础操作符,用于实现各种功能和逻辑。
以下是一些常见的基础操作符:
1. 赋值操作符,用于将数值或变量赋给一个变量。
例如,使用“=”进行赋值操作。
2. 算术操作符,包括加法“+”、减法“-”、乘法“”、除法“/”等,用于进行基本的数学运算。
3. 比较操作符,包括等于“==”、不等于“!=”、大于“>”、小于“<”、大于等于“>=”、小于等于“<=”等,用于比较两个值
的大小关系。
4. 逻辑操作符,包括与“&&”、或“||”、非“!”等,用于
实现逻辑运算,例如逻辑与、逻辑或、逻辑非等。
5. 位操作符,包括按位与“&”、按位或“|”、按位取反“~”等,用于对二进制数进行位运算。
6. 条件操作符,即三元操作符“condition ? expr1 :
expr2”,根据条件的真假返回不同的表达式结果。
7. 逗号操作符,用于连接表达式,多个表达式用逗号“,”分隔,整个表达式的值为最后一个表达式的值。
以上是一些麦语言中常见的基础操作符,它们可以用于实现各种复杂的逻辑和功能。
当然,麦语言还有其他更多的操作符,这些操作符可以帮助开发者更加灵活地编写智能合约。
希望这些信息能够帮助你更好地理解麦语言的基础操作符。