ImageVerifierCode 换一换
格式:DOC , 页数:23 ,大小:602.50KB ,
资源ID:2563106      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2563106.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MT4简单三线交叉智能交易系统EA.doc)为本站会员(dreamzhangning)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

MT4简单三线交叉智能交易系统EA.doc

1、 MT4 简单三线交叉智能交易系统 EA MT4 编程入门教程目录MT4 编程入门 1:MT4 自定义指标的基本操作MT4 编程入门 2:指标源码中的常用符号说明MT4 编程入门 3:自定义变量MT4 编程入门 4:自定义函数MT4 编程入门 5:自定义数组MT4 编程入门 6:市场数据取值MT4 编程入门 7:判断语句MT4 编程入门 8:循环MT4 编程入门 9:MT4 自定义指标的结构MT4 编程入门 10:画一条指标线MT4 编程入门 11:MT4 的报警MT4 编程入门 1:MT4 自定义指标的基本操作MT4 自定义指标的保存目录、指标编缉器与指标调用一、MT4 自定义指标保存在 C

2、:Program FilesMetaTrader 4expertsindicators 这个目录中,该目录中主要有二种类型的文件,一种是 mq4 文件,这是 MT4 自定义指标的源码文件,是一种高级语言文件,可以人工编写修改,机器不能直接执行,但能在 MT4 启动时自动编译为 ex4 可执行文件。另一种就是 ex4 文件,这是 MT4 自定义指标的可执行文件,由 mq4 文件编译得到。mq4 文件必须编译为 ex4 文件才能被 MT4 执行。但 ex4 文件是机器码文件,人工不可修改另外还有一个文件是 mqlcache.dat,它用来保存目录中的文件信息,如果 MT4 无法自动编译,只要删除此

3、文件即可解决问题mq4 文件编译为 ex4 可执行文件有两种方法:1、MT4 启动时,会自动把此目录中的 mq4 文件编译为 ex4 文件。2、用 MQ 语言编辑器打开 mq4 文件,点一下“编写”按钮,即可生成ex4 文件二、下载保存 mq4 文件、ex4 文件在论坛上我们经常看到有 mq4 文件、ex4 文件可供下载,我们只要把它们保存到 C:rogram FilesMetaTrader 4expertsindicators 这个目录,也就是下面这个目录中,就可以了。如果下载的是 ex4 文件,那可以直接调用;如果是 mq4 文件,则需要重启动 MT4,让系统自动编译生成 ex4 可执行文

4、件。如果下载的是 rar、zip 等类型的压缩文件,还必须下载后解压到此目录才能使用。三、将源码保存为源码文件在论坛上,我们也经常能看到指标源码贴在网页上,但没有 mq4、ex4 等文件可以下载,只能复制源码。此时需要我们自己动手将源码保存为源码文件,那也没关系,非常地简单,多点几下鼠标就搞定。1、打开 MQ 语言编辑器2、在 MQ 语言编辑器中新建一个文件,文件名一定要输,别的随便操作都没关系。3、删除新文件里面的所有内容,成为一个空文件,4、接着我们就可以将网页上源码复制粘贴进来试着点一下“编写”,如果左下角出现“0 错误,0 警告”,那说明源码没问题,编译通过了,成功生成了 ex4 可执

5、行文件5、还有很重要的一点,就是要把源码文件保存到正确的目录中保存后,再点一下编写。到此,源码保存完成。当然,我们也还有另的办法:可以打开一个原已存在的 mq4 文件,然后另存为你需要的文件名,再删除文件中的所有内容成为空文件,把网页上的源贴到文件中保存即可也可以在记事本中新建一个文件,把网页上的源码贴进记事本,然后取个文件名保存到上面提到的目录,不过文件后缀必须输入 mq4,保存类型选择“所以文件”四、mt4 程序调用自定义指标这非常简单MT4 编程入门 2:指标源码中的常用符号说明一、注释符:单行注释“/”、多行注释“/* */”程序不执行注释,注释内容仅供阅读或保留不用的语句在 MQ 语

6、言编辑器中,注释内容以灰色显示二、分号“;”表示一个语句结束三、逗号“,”表示一个语句内部间隔,不结束语句。四、等于号“=”赋值语句,把等号后面的值赋给等号前的变量中五、加号“+”整数或小数,则表示值相加;字符串,则表示前后连接。六、加加“+”表示把符号前的变量值加 1,例如:“i+;” 这实际上就是:“i=i+1;”的简写,表示 i 的值加 1七、加等于“+=”表示把符号后的值加到符号前的变量中。例如“i+=2;”,实际上就是“i=i+2;”的简写,表示 i 的值加 2八、双等号“=”等于号。用于逻辑判断,双等号前后值相等,则返回逻辑值“真 true”;双等号前后值不相等,则返回逻辑值“假

7、false”九、叹号等号“!=”不等于号。用于逻辑判断,不等号前后值不相等,则返回逻辑值“真true”;不等号前后值相等,则返回逻辑值“假 false”十、“temp=3*x+2*y;return(temp);一、和自定义变量一样,自定义函数在使用前,也必须先设立,以定义其类型、名称、参数和运算语句。函数类型、名称、参数位于函数头部(参数间以逗号分隔),大括号中的是运算语句,也就是函数体部分。return 语句为函数结束语句,return 后面括号中的值为函数返回值,即函数运算结果。上例中,int 为函数类型,表示该函数的返回值(运算结果)是整数;(x,y)为参数,由于自定义变量使用之前都必须

8、先创建,所以要加上类型定义词 intft 为函数名,有了函数名,我们就可以在别处用 ft(2,1)的形式来调用此函数;函数体部分有三句:第一句,定义一个整形变量 temp第二句,计算 temp 的值第三句,函数结束,返回调用点,以 temp 的值作为本函数返回值。此函数也可以简写为:int ft(int x,int y) return(3*x+2*y);二、函数类型与类型符函数类型就是函数返回值(运算结果)的类型,与自定义变量类型差不多有整型(int)、双精度型(double)、字符串型(string)、逻辑型(bool)等,还有一种函数是以函数运行为目的,运行结束后不需要返回值也没有返回值的

9、,则函数类型可以写成 void(无值型)三、函数中如果定义了自定义变量,那么此变量仅在本函数内部存在,函数运行结束时,自定义变量也就自动注销。上例中,有 x、y、temp 三个自定义变量,在函数运行时创建,在函数运行结束时自动消失,仅在函数内部有效,与函数外部无关。四、函数的调用函数调用非常简单,只要函数名正确、参数个数一致、类型相同就能正确调用如我们前面创建了 ft(x,y)函数,则别处我们可以用 ft(4,5)等样式来调用 ft(x,y)函数求值。调用时,传递参数值给 ft(x,y)函数(按顺序把 4 传给 x,把 5 传给 y),返回结果 23 后继续执行主程序。MT4 编程入门 5:自

10、定义数组一、数组是一系列同类型变量的集合,可以同时存储多个数值。例:int aa4=4,3,2,1;这是一个数据名为 aa、包含了 4 个元素的整数型数组(即数组长度为 4),可以同时存储 4 个数值。二、自定义数组也必须“先建立,后使用”创建(定义)时,必须设定类型和名称。创建(定义)时,数组的元素个数也可以设定,也可以不设定数组中第一个元素的编号为 0,第二个为 1,以此类推。编号使用方括号括起来在这上例中 aa0的值为 4、aa1的值为 3、aa2的值为 2、aa3的值为 1创建(定义)数组的同时,可以赋初值,也可以不赋初值。例:int bb; 创建数组 bb,不设定数组元素个数int

11、cc8; 创建数组 cc,设定数组元素为 8 个,不赋初值int dd3=9,8,7; 创建数组 dd,设定数组元素为 4 个,并赋初值赋值后,dd0的值为 9、dd1的值为 8、dd2的值为 7int ee9=0,1,2,3; 创建数组 ee,设定数组元素为 9 个,但只给前4 个元素赋初值三、数组使用时的赋值数组的赋值必须指定明确的赋值对象,除了新建数组时可以批量赋值外,数组元素必须一个一个赋值例如:dd2=1;这是对数组 dd 的第 3 个元素 dd2(0是第 1 个,2表示第 3 个)重新赋值为 1在这里,没有整数型变量定义符 int,这样,数组 dd 原有三个值9,8,7就变为9,8

12、,1四、数组的引用数组只是一系列变量的集合,所以每次只能使用数组中的一个元素。数组的引用必须指定明确的引用对象,一次只能引用一个。如果需要使用整列数组,则必须逐个使用。例如:数组 aa4的值为4,3,2,1我们用 aa 来引用数组 aa 中的值当 i=0 时,aai的值为 4当 i=1 时,aai的值为 3当 i=2 时,aai的值为 2当 i=3 时,aai的值为 1MT4 编程入门 6:市场数据取值一、预定义数组(MT4 已经定义好的,可以直接使用)开盘价、最高价、最低价、收盘价、成交量等历史数据,每根 K 线蜡烛都各有一个,所以必须用数组来解决问题,MT4 有几个预定义数组:开盘价 Op

13、en、最高价 High、最低价 Low、收盘价 close、成交量 Volume、所属时间 Time类型为双精度 double 型(即精确小数)这里有一个位置的问题,右边第一根 K 线蜡烛(即最新的蜡烛)的编号为0,第二根蜡烛编号 1,第三根蜡烛编号 2,也就是说从右向左倒着数过去。Open0、High0、Low0、Close0,表示最新的开盘价、最高价、最低价、收盘价Open1、High1、Low1、close1,表示第 2 根 K 线蜡烛的开盘价、最高价、最低价、收盘价Open2、High2、Low2、close2,表示第 3 根 K 线蜡烛的开盘价、最高价、最低价、收盘价Open3、Hi

14、gh3、Low3、close3,表示第 4 根 K 线蜡烛的开盘价、最高价、最低价、收盘价Open、High、Low、close,表示第 i+1 根 K 线蜡烛的开盘价、最高价、最低价、收盘价以此类推。注意:这些是数组,用的是方括号。二、预定义变量买入价、卖出价是实时价格,MT4 用预定义变量 Ask 和 Bid 表示,数值类型为 double 双精度还有一些预定义变量,如:Bars 表示图表中的蜡烛数,类型为 int 整数型Digits 表示当前货币对的小数位,类型为 int 整数型,无日元币对为4,有日元币对为 2,黄金石油等一般也为 2Point 表示当前货币对的点值,类型为双精度 do

15、uble 型,无日元币对为0.0001,有日元币对为 0.01。与 Digits 正好相反。三、指标函数1、价格、成交量、时间它们都有三个参数:货币对名、K 线周期、位置序号开盘价:iOpen(symbol,timeframe,shift) 双精度 double 型收盘价:iClose(symbol,timeframe,shift) 双精度 double 型最高价:iHigh(symbol,timeframe,shift) 双精度 double 型最低价:iLow(symbol,timeframe,shift) 双精度 double 型成交量:iVolume(symbol,timeframe,

16、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)、月线图(PERIOD_W1)例:iOpen(“USDJPY“,PERIOD_H1,0) 表示美元兑日元 1 小时图最新 K 线蜡烛的开盘价iClo

17、se(“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 个,分别为:商品名称、K 线周期、均线周期、均线偏移、平均模式、价格种类、位置均线周

18、期:10 天平均线的均线周期为 10,20 天均线的均线周期为 20均线偏移:均线位置整体左右移动的位置偏移量平均模式:简单移动平均(MODE_SMA)、指数移动平均(MODE_EMA)、平滑移动平均线(MODE_SMMA)、线性加权移动平均线(MODE_LWMA)价格种类:收盘价(PRICE_CLOSE)、开盘价(PRICE_OPEN)、最高价(PRICE_HIGH)、最低价(PRICE_LOW)、中值(PRICE_MEDIAN)、5(PRICE_TYPICAL)、6(PRICE_WEIGHTED)例 1:iMA(“EURUSD“,PERIOD_H1,20,0,MODE_SMA,PRICE_

19、CLOSE,0)表示:欧元 1 小时图上,以收盘价计算的,20 小时简单移动平均线,最新 K 线所对应位置的值例 2:iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,2)表示:在当前商品、当前 K 线周期图表上,以收盘价计算的,20(天)指数移动平均线 第 3 根 K 线所对应位置的值其他如 MACD 指标、威廉指标、RSI、SAR、布林线等指标取值都与移动平均线指标相类似3、在数组中求元素的移动平均值。双精度 double 型iMAOnArray(数组名, 总数, 平均周期, 均线偏移, 平均模式, 位置)这也与 iMA 函数差不多,不过数据源变为数组从数组中不但可

20、以求得移动平均值,还可以求得 RSI 等指标值4、求自定义指标的值我们经常自己编一些自定义指标,可用 iCustom 函数来取得自定义函数的值iCustom(商品名,K 线周期,自定义指标名称,自定义指标参数 1,参数 2,参数 3,自定义指标线编号,位置)如果自定义指标只有一根指标线,则自定义指标线的编号为 0。如果自定义指标有多根指标线,则第一条自定义指标线的编号为 0,第二条为 1,第三条为 2。例如:iCustom(NULL,0,“mymacd“,12,26,9,2,0) (12,26,9)为自定义指标 mymacd 的三个参数表示:求当前图表中,自定义指标 mymacd(12,26,

21、9)的第 3 条指标线在最新位置的值抛砖引玉,这里只是有代表性地列了几个函数,详细请查阅MT4 编程手册MT4 编程入门 7:判断语句一、if 语句if 语句很常用,也比较简单。规则:如果小括号中的条件成立,则执行大括号中的语句;如果不成立,则跳过大括号。例如:if(a=1)b=c+1;我们在编写报警指标的时候,就经常用到这一语句:如果“价格向上达到指定价位”,则“报警”如果“MACD 上穿”,则“报警”如果“均线金叉”,则“报警”。等等例:int mark=0;if( High1=1.0000 mark=1;if( Low11.0000 mark = 2;return(0);+-部分语句说明

22、:#property indicator_chart_window此句是把程序放在主图,当然这此例中放在副图也一样extern int 定义一个外部参数变量,整数型,允许外部值修改int 定义一个整数型变量int start() 定义触发函数if() 判断iHigh() 最高价值函数iLow() 最低价值函数iMA() 移动平均线值函数Alert() 报警函数Symbol() 商品名称函数& 逻辑运算符“并且”!= 逻辑运算符“不等于”MODE_SMA 简单移动平均模式PRICE_CLOSE 以收盘价计算再说一下自定义变量 mark 的作用:mark 的初值是 0,当上穿报警时给 mark 赋值 1,当下穿报警时给 mark赋值 2。这样当 mark 的值为 1 时,说明已经对上穿报过警了,就不能再次对上穿报警;当 mark 的值为 2 时,说明已经对下穿报过警了,就不能再次对下穿报警。这样就起到了消除重复报警的作用。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报