MT4编程进门详解(图表).doc
《MT4编程进门详解(图表).doc》由会员分享,可在线阅读,更多相关《MT4编程进门详解(图表).doc(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、目录MT4编程入门一:MT4自定义指标的根本操作MT4编程入门二):指标源码中的常用符号说明MT4编程入门三):自定义变量MT4编程入门四):自定义函数MT4编程入门(五):自定义数组MT4编程入门(六):市场数据取值 MT4编程入门(七):判断语句 MT4编程入门(八):循环MT4编程入门(九):MT4自定义指标的结构 MT4编程入门(十):画一条指标线MT4编程入门(十一):MT4的报警MT4编程入门一:MT4自定义指标的根本操作 MT4自定义指标的保存目录、指标编缉器与指标调用一、MT4自定义指标保存在C:Program FilesMetaTrader 4expertsindicator
2、s这个目录中,该目录中主要有二种类型的文件,一种是mq4文件,这是MT4自定义指标的源码文件,是一种高级语言文件,可以人工编写修改,机器不能直接执行,但能在MT4启动时自动编译为ex4可执行文件。另一种就是ex4文件,这是MT4自定义指标的可执行文件,由mq4文件编译得到。mq4文件必须编译为ex4文件才能被MT4执行。但ex4文件是机器码文件,人工不可修改另外还有一个文件是mqlcache.dat,它用来保存目录中的文件信息,如果MT4无法自动编译,只要删除此文件即可解决问题mq4文件编译为ex4可执行文件有两种方法:1、MT4启动时,会自动把此目录中的mq4文件编译为ex4文件。2、用MQ
3、语言编辑器翻开mq4文件,点一下“编写按钮,即可生成ex4文件二、下载保存mq4文件、ex4文件在论坛上我们经常看到有mq4文件、ex4文件可供下载,我们只要把它们保存到C:Program FilesMetaTrader 4expertsindicators这个目录,也就是下面这个目录中,就可以了。如果下载的是ex4文件,那可以直接调用;如果是mq4文件,那么需要重启动MT4,让系统自动编译生成ex4可执行文件。如果下载的是rar、zip等类型的压缩文件,还必须下载后解压到此目录才能使用。三、将源码保存为源码文件在论坛上,我们也经常能看到指标源码贴在网页上,但没有mq4、ex4等文件可以下载,
4、只能复制源码。此时需要我们自己动手将源码保存为源码文件,那也没关系,非常地简单,多点几下鼠标就搞定。1、翻开MQ语言编辑器2、在MQ语言编辑器中新建一个文件,文件名一定要输,别的随便操作都没关系。3、删除新文件里面的所有内容,成为一个空文件,4、接着我们就可以将网页上源码复制粘贴进来试着点一下“编写,如果左下角出现“0错误,0警告,那说明源码没问题,编译通过了,成功生成了ex4可执行文件5、还有很重要的一点,就是要把源码文件保存到正确的目录中保存后,再点一下编写。到此,源码保存完成。当然,我们也还有另的方法:可以翻开一个原已存在的mq4文件,然后另存为你需要的文件名,再删除文件中的所有内容成为
5、空文件,把网页上的源贴到文件中保存即可也可以在记事本中新建一个文件,把网页上的源码贴进记事本,然后取个文件名保存到上面提到的目录,不过文件后缀必须输入mq4,保存类型选择“所以文件四、mt4程序调用自定义指标这非常简单MT4编程入门二):指标源码中的常用符号说明 一、注释符:单行注释“/、多行注释“/* */程序不执行注释,注释内容仅供阅读或保存不用的语句在MQ语言编辑器中,注释内容以灰色显示二、分号“;表示一个语句结束三、逗号“,表示一个语句内部间隔,不结束语句。四、等于号“=赋值语句,把等号后面的值赋给等号前的变量中五、加号“+整数或小数,那么表示值相加;字符串,那么表示前后连接。六、加加
6、“+表示把符号前的变量值加1,例如:“i+; 这实际上就是:“i=i+1;的简写,表示i的值加1七、加等于“+=表示把符号后的值加到符号前的变量中。例如“i+=2;,实际上就是“i=i+2;的简写,表示i的值加2八、双等号“=等于号。用于逻辑判断,双等号前后值相等,那么返回逻辑值“真true;双等号前后值不相等,那么返回逻辑值“假false九、叹号等号“!=不等于号。用于逻辑判断,不等号前后值不相等,那么返回逻辑值“真true;不等号前后值相等,那么返回逻辑值“假false十、“&逻辑符“并且十一、“|逻辑符“或者十二、大括号“表示函数体。内部为函数体语句。MT4编程入门三):自定义变量 一、
7、自定义变量在使用前,必须先创立(定义),设定变量的类型和名称。创立时可同时赋值,也可以不赋值。名称可以使用中文字符。例:int mark; 创立一个整型变量,变量名为“mark。bool 是否报警=true; 创立一个逻辑型变量,变量名为“是否报警,同时,赋初值“true 二、类型和类型定义词自定义变量的根本类型有:1、整形(int):就是整数,包括负整数2、双精度小数(double):可以简单地理解为带小数位的数3、字符串型(string)。4、逻辑型(bool):其值分别为“true、false,即“真、假,也可以写成“1、01真,0假。类型定义词仅在创立变量时使用,后面使用变量时,就不能
8、再加类型定义词了三、附加变量附加变量就是在程序投入使用后,变量值允许用户自由更改的变量,一般用作程序参数。一般指标,例如MACD(12,26,9)参数输入就是通过附加变量实现,(12,26,9)分别为三个附加变量的默认值。定义附加变量只需在变量定义语句前加“extern例:extern int 周期=9; 创立一个整型附加变量,变量名为“周期,默认值为9,允许用户在程序外部修改参数值MT4编程入门四):自定义函数 自定义函数与数学函数在本质上是一致的例如:数学函数ft(x,y)=3x+2y (x,y为正整数) 写成程序语句就是:int ft(int x,int y) int temp; tem
9、p=3*x+2*y; return(temp); 一、和自定义变量一样,自定义函数在使用前,也必须先设立,以定义其类型、名称、参数和运算语句。函数类型、名称、参数位于函数头部(参数间以逗号分隔),大括号中的是运算语句,也就是函数体局部。return语句为函数结束语句,return后面括号中的值为函数返回值,即函数运算结果。上例中,int为函数类型,表示该函数的返回值(运算结果)是整数;(x,y)为参数,由于自定义变量使用之前都必须先创立,所以要加上类型定义词intft为函数名,有了函数名,我们就可以在别处用ft(2,1)的形式来调用此函数;函数体局部有三句:第一句,定义一个整形变量temp第二
10、句,计算temp的值第三句,函数结束,返回调用点,以temp的值作为本函数返回值。此函数也可以简写为:int ft(int x,int y) return(3*x+2*y);二、函数类型与类型符函数类型就是函数返回值(运算结果)的类型,与自定义变量类型差不多有整型(int)、双精度型(double)、字符串型(string)、逻辑型(bool)等,还有一种函数是以函数运行为目的,运行结束后不需要返回值也没有返回值的,那么函数类型可以写成void(无值型)三、函数中如果定义了自定义变量,那么此变量仅在本函数内部存在,函数运行结束时,自定义变量也就自动注销。上例中,有x、y、temp三个自定义变量
11、,在函数运行时创立,在函数运行结束时自动消失,仅在函数内部有效,与函数外部无关。四、函数的调用函数调用非常简单,只要函数名正确、参数个数一致、类型相同就能正确调用如我们前面创立了ft(x,y)函数,那么别处我们可以用ft(4,5)等样式来调用ft(x,y)函数求值。调用时,传递参数值给ft(x,y)函数(按顺序把4传给x,把5传给y),返回结果22后继续执行主程序。MT4编程入门(五):自定义数组 一、数组是一系列同类型变量的集合,可以同时存储多个数值。例:int aa4=4,3,2,1;这是一个数据名为aa、包含了4个元素的整数型数组(即数组长度为4),可以同时存储4个数值。二、自定义数组也
12、必须“先建立,后使用创立(定义)时,必须设定类型和名称。创立(定义)时,数组的元素个数也可以设定,也可以不设定数组中第一个元素的编号为0,第二个为1,以此类推。编号使用方括号括起来在这上例中aa0的值为4、aa1的值为3、aa2的值为2、aa3的值为1创立(定义)数组的同时,可以赋初值,也可以不赋初值。例:int bb; 创立数组bb,不设定数组元素个数int cc8; 创立数组cc,设定数组元素为8个,不赋初值int dd3=9,8,7; 创立数组dd,设定数组元素为4个,并赋初值赋值后,dd0的值为9、dd1的值为8、dd2的值为7int ee9=0,1,2,3; 创立数组ee,设定数组元
13、素为9个,但只给前4个元素赋初值三、数组使用时的赋值数组的赋值必须指定明确的赋值对象,除了新建数组时可以批量赋值外,数组元素必须一个一个赋值例如:dd2=1;这是对数组dd的第3个元素dd20是第1个,2表示第3个重新赋值为1在这里,没有整数型变量定义符int,这样,数组dd原有三个值9,8,7就变为9,8,1四、数组的引用数组只是一系列变量的集合,所以每次只能使用数组中的一个元素。数组的引用必须指定明确的引用对象,一次只能引用一个。如果需要使用整列数组,那么必须逐个使用。例如:数组aa4的值为4,3,2,1我们用aa来引用数组aa中的值当i=0时,aai的值为4当i=1时,aai的值为3当i
14、=2时,aai的值为2当i=3时,aai的值为1MT4编程入门(六):市场数据取值 一、预定义数组MT4已经定义好的,可以直接使用开盘价、最高价、最低价、收盘价、成交量等历史数据,每根K线蜡烛都各有一个,所以必须用数组来解决问题,MT4有几个预定义数组:开盘价Open、最高价High、最低价Low、收盘价close、成交量Volume、所属时间Time类型为双精度double型即精确小数这里有一个位置的问题,右边第一根K线蜡烛(即最新的蜡烛)的编号为0,第二根蜡烛编号1,第三根蜡烛编号2,也就是说从右向左倒着数过去。Open0、High0、Low0、Close0,表示最新的开盘价、最高价、最低
15、价、收盘价Open1、High1、Low1、close1,表示第2根K线蜡烛的开盘价、最高价、最低价、收盘价Open2、High2、Low2、close2,表示第3根K线蜡烛的开盘价、最高价、最低价、收盘价Open3、High3、Low3、close3,表示第4根K线蜡烛的开盘价、最高价、最低价、收盘价Open、High、Low、close,表示第i+1根K线蜡烛的开盘价、最高价、最低价、收盘价以此类推。注意:这些是数组,用的是方括号。二、预定义变量买入价、卖出价是实时价格,MT4用预定义变量Ask和Bid表示,数值类型为double双精度还有一些预定义变量,如:Bars 表示图表中的蜡烛数,
16、类型为int整数型Digits 表示当前货币对的小数位,类型为int整数型,无日元币对为4,有日元币对为2,黄金石油等一般也为2Point 表示当前货币对的点值,类型为双精度double型,无日元币对为0.0001,有日元币对为0.01。与Digits正好相反。三、指标函数1、价格、成交量、时间它们都有三个参数:货币对名、K线周期、位置序号开盘价:iOpen(symbol,timeframe,shift) 双精度double型收盘价:iClose(symbol,timeframe,shift) 双精度double型最高价:iHigh(symbol,timeframe,shift) 双精度dou
17、ble型最低价:iLow(symbol,timeframe,shift) 双精度double型成交量:iVolume(symbol,timeframe,shift) 双精度double型所属时间:iTime(symbol,timeframe,shift) 日期时间datetime型K线周期为:1分钟图(PERIOD_M1)、5分钟图(PERIOD_M5)、15分钟图(PERIOD_M15)、30分钟图(PERIOD_M30)、1小时图(PERIOD_H1)、4小时图(PERIOD_H4)、日线图(PERIOD_D1)、周线图(PERIOD_W1)、周线图(PERIOD_W1)、月线图(PERI
18、OD_W1)例:iOpen(USDJPY,PERIOD_H1,0) 表示美元兑日元1小时图最新K线蜡烛的开盘价iClose(EURUSD,PERIOD_H4,2) 表示欧元兑美元4小时图第3根K线蜡烛的收盘价iClose(GBPUSD,PERIOD_H1,i) 表示英磅兑美元1小时图第i+1根K线蜡烛的收盘价iHigh(NULL,0,0) 既不指定商品,也不指定K线周期,用在谁就是谁,用在哪就是哪2、移动平均值。双精度double型iMA(symbol, timeframe, period, ma_shift, ma_method, applied_price, shift)参数共7个,分别为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MT4 编程 进门 详解 图表
限制150内