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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(mt4编程入门4.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

mt4编程入门4.docx

1、mt4编程入门4dfd34343434343MT4编程入门教程MT4编程入门教程目录MT4编程入门1:MT4自定义指标的基本操作MT4编程入门2:指标源码中的常用符号说明MT4编程入门3:自定义变量MT4编程入门4:自定义函数dfdfsfMT4编程入门5:自定义数组MT4编程入门6:市场数据取值dfdfdfMT4编程入门7:判断语句dfdMT4编程入门8:循环MT4编程入门9:MT4自定义指标的结构MT4编程入门10:画一条指标线MT4编程入门11:MT4的报警Fxsol环亚汇市、Alpari艾福瑞客户每标准手返56美金。详询QQMT4编程入门1:MT4自定义指标的基本操作MT4自定义指标的保

2、存目录、指标编缉器与指标调用一、MT4自定义指标保存在C:Program FilesMetaTrader 4expertsindicators这个目录中,dfdfdsfds该目录中主要有二种类型的文件,一种是mq4文件,这是MT4自定义指标的源码文件,是一种高级语言文件,可以人工编写修改,机器不能直接执行,但能在MT4启动时自动编译为ex4可执行文件。另一种就是ex4文件,这是MT4自定义指标的可执行文件,由mq4文件编译得到。mq4文件必须编译为ex4文件才能被MT4执行。三、将源码保存为源码文件在论坛上,我们也经常能看到指标源码贴在网页上,但没有mq4、ex4等文件可以下载,只能复制源码。

3、此时需要我们自己动手将源码保存为源码文件,那也没关系,非常地简单,多点几下鼠标就搞定。1、打开MQ语言编辑器2、在MQ语言编辑器中新建一个文件,文件名一定要输,别的随便操作都没关系。3、删除新文件里面的所有内容,成为一个空文件,4、接着我们就可以将网页上源码复制粘贴进来试着点一下“编写”,如果左下角出现“0错误,0警告”,那说明源码没问题,编译通过了,成功生成了ex4可执行文件5、还有很重要的一点,就是要把源码文件保存到正确的目录中保存后,再点一下编写。到此,源码保存完成。当然,我们也还有另的办法:可以打开一个原已存在的mq4文件,然后另存为你需要的文件名,再删除文件中的所有内容成为空文件,把

4、网页上的源贴到文件中保存即可也可以在记事本中新建一个文件,把网页上的源码贴进记事本,然后取个文件名保存到上面提到的目录,不过文件后缀必须输入mq4,保存类型选择“所以文件”四、mt4程序调用自定义指标这非常简单dfdsfdsfdsfdsfdfd五、加号“+”整数或小数,则表示值相加;字符串,则表示前后连接。六、加加“+”表示把符号前的变量值加1,例如:“i+;” 这实际上就是:“i=i+1;”的简写,表示i的值加1七、加等于“+=”表示把符号后的值加到符号前的变量中。例如“i+=2;”,实际上就是“i=i+2;”的简写,表示i的值加2八、双等号“=”等于号。用于逻辑判断,双等号前后值相等,则返

5、回逻辑值“真true”;双等号前后值不相等,则返回逻辑值“假false”九、叹号等号“!=”不等于号。用于逻辑判断,不等号前后值不相等,则返回逻辑值“真true”;不等号前后值相等,则返回逻辑值“假false”十、“&”逻辑符“并且”十一、“|”逻辑符“或者”十二、大括号“”fdsfdsfdsfreturn语句为函数结束语句,return后面括号中的值为函数返回值,即函数运算结果。上例中,int为函数类型,表示该函数的返回值(运算结果)是整数;(x,y)为参数,由于自定义变量使用之前都必须先创建,所以要加上类型定义词intft为函数名,有了函数名,我们就可以在别处用ft(2,1)的形式来调用此

6、函数;函数体部分有三句:第一句,定义一个整形变量temp第二句,计算temp的值第三句,函数结束,返回调用点,以temp的值作为本函数返回值。此函数也可以简写为:int ft(int x,int y) return(3*x+2*y);二、函数类型与类型符函数类型就是函数返回值(运算结果)的类型,与自定义变量类型差不多有整型(int)、双精度型(double)、字符串型(string)、逻辑型(bool)等,还有一种函数是以函数运行为目的,运行结束后不需要返回值也没有返回值的,则函数类型可以写成void(无值型)三、函数中如果定义了自定义变量,那么此变量仅在本函数内部存在,函数运行结束时,自定义

7、变量也就自动注销。上例中,有x、y、temp三个自定义变量,在函数运行时创建,在函数运行结束时自动消失,仅在函数内部有效,与函数外部无关。四、函数的调用函数调用非常简单,只要函数名正确、参数个数一致、类型相同就能正确调用如我们前面创建了ft(x,y)函数,则别处我们可以用ft(4,5)等样式来调用ft(x,y)函数求值。调用时,传递参数值给ft(x,y)函数(按顺序把4传给x,把5传给y),返回结果23后继续执行主程序。MT4编程入门5:自定义数组一、数组是一系列同类型变量的集合,可以同时存储多个数值。例:int aa4=4,3,2,1;这是一个数据名为aa、包含了4个元素的整数型数组(即数组

8、长度为4),可以同时存储4个数值。fdsfsdfs三、数组使用时的赋值数组的赋值必须指定明确的赋值对象,除了新建数组时可以批量赋值外,数组元素必须一个一个赋值例如:dd2=1;这是对数组dd的第3个元素dd2(0是第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时

9、,aai的值为3当i=2时,aai的值为2当i=3时,aai的值为1MT4编程入门6:市场数据取值一、预定义数组(MT4已经定义好的,可以直接使用)开盘价、最高价、最低价、收盘价、成交量等历史数据,每根K线蜡烛都各有一个,所以必须用数组来解决问题,MT4有几个预定义数组:开盘价Open、最高价High、最低价Low、收盘价close、成交量Volume、所属时间Time类型为双精度double型(即精确小数)这里有一个位置的问题,右边第一根K线蜡烛(即最新的蜡烛)的编号为0,第二根蜡烛编号1,第三根蜡烛编号2,也就是说从右向左倒着数过去。Open0、High0、Low0、Close0,表示最新

10、的开盘价、最高价、最低价、收盘价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

11、 表示图表中的蜡烛数,类型为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,sh

12、ift) 双精度double型最低价: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_W

13、1)、月线图(PERIOD_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, shif

14、t)参数共7个,分别为:商品名称、K线周期、均线周期、均线偏移、平均模式、价格种类、位置均线周期: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:i

15、MA(EURUSD,PERIOD_H1,20,0,MODE_SMA,PRICE_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

16、函数差不多,不过数据源变为数组从数组中不但可以求得移动平均值,还可以求得RSI等指标值4、求自定义指标的值我们经常自己编一些自定义指标,可用iCustom函数来取得自定义函数的值iCustom(商品名,K线周期,自定义指标名称,自定义指标参数1,参数2,参数3,自定义指标线编号,位置)如果自定义指标只有一根指标线,则自定义指标线的编号为0。=以下为上述语句的简要说明#property indicator_separate_window指标放在副图#property indicator_color1 White第一条指标线为白色#property indicator_level1 0在副图中零值

17、位置上画一条水平横线,extern int FMA=12;extern int SMA=26;设立二个整数型变量,默认值为12和26,允许外部修改值double buf;设立一个数组int init()初始化函数。该函数在指标加载时只运行一次。init是系统默认的函数名,但使用时仍需要进行创设,所以要加定义符int SetIndexBuffer(0,buf); 设置数组buf为第一条指标线 SetIndexStyle(0,DRAW_LINE); 设置第一条指标线线型为连续曲线 return(0); 函数结束语句 int start()指标触发函数。与init函数不同,该函数在有数据变化时被触发

18、,如果数据被不断更新,则该函数将不断执行。start也是系统默认的函数名,但使用时也仍然需要进行创设,所以也要加定义符int int limit=Bars-IndicatorCounted(); 自定义一个变量limit,并赋值 Bars是图表中的柱数 IndicatorCounted()缓存中的柱数,就是已经计算过的有值的柱数 这样limit的值就是未经计算的柱数,这样就可以起到优化程序的作用。 for(int i=0; ilimit; i+) 循环语句。 循环从i=0开始,每循环一次i值增加1,一直循环到i= iMA(0,0,警戒均线,0,MODE_SMA,PRICE_CLOSE,0) &

19、 iHigh(0,0,1) iMA(0,0,警戒均线,0,MODE_SMA,PRICE_CLOSE,1) & mark != 1 ) Alert(Symbol(),向上触及30均线); mark = 1; if( iLow(0,0,0) iMA(0,0,警戒均线,0,MODE_SMA,PRICE_CLOSE,1) & mark != 2 ) Alert(Symbol(),向下触及,警戒均线,均线); mark = 2; return(0);+-部分语句说明:#property indicator_chart_window此句是把程序放在主图,当然这此例中放在副图也一样extern int 定义

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1