2022-08-18 19:39
Jkel

  完整版)MT4编程入门详解-有图表目次 MT4编程初学(一):MT4自界说目标的基础操作 MT4编程初学(二):目标源码中的常用符号评释 MT4编程初学(三):自界说变量 MT4编程初学(四):自界说函数 MT4编程初学(五):自界说数组 MT4编程初学(六):市集数据取值 MT4编程初学(七):决断语句 MT4编程初学(八):轮回 MT4编程初学(九):MT4自界说目标的布局 MT4编程初学(十):画一条款标线编程初学(十一):MT4的报警 MT4编程初学(一):MT4自界说目标的基础操作

  MT4自界说目标的生存目次、目标编缉器与目标挪用 一、MT4自界说目标生存正在C:\Program Files\MetaTrader 4\experts\indicators这个目次中, 该目次中闭键有二品种型的文献, 一种是mq4文献,这是MT4自界说目标的源码文献,是一种高级发言文献,能够人工编写篡改,机械不行直接实施,但能正在 MT4启动时主动编译为ex4可实施文献。 另一种即是ex4文献,这是MT4自界说目标的可实施文献,由mq4文献编译取得。 mq4文献务必编译为ex4文献才气被MT4实施。 但ex4文献是机械码文献,人工不行篡改 别的尚有一个文献是mqlcache.dat,它用来生存目次中的文献音讯,假如MT4无法主动编译,只消删除此文献即可治理题目

  2、用MQ发言编辑器掀开mq4文献,点一下“编写”按钮,即可天生ex4文献 二、下载生存mq4文献、ex4文献 正在论坛上咱们常常看到有mq4文献、ex4文献可供下载,咱们只消把它们生存到C:\Program Files\MetaTrader 4\experts\indicators这个目次,也即是下面这个目次中,就能够了。假如下载的是ex4文献,那能够直接挪用;假如是mq4文 件,则需求重启动MT4,让编制主动编译天生ex4可实施文献。假如下载的是rar、zip等类型的压缩文献,还务必下载后解压到 此目次才气行使。

  三、将源码生存为源码文献 正在论坛上,咱们也常常能看到目标源码贴正在网页上,但没有mq4、ex4等文献能够下载,只可复制源码。此时需求咱们我方动 手将源码生存为源码文献,那也不要紧,非凡地浅易,众点几下鼠标就搞定。 1、掀开MQ发言编辑器

  4、接着咱们就能够将网页上源码复制粘贴进来 试着点一下“编写”,假如左下角显露“0毛病,0正告”,那评释源码没题目,编译通过了,告成天生了ex4可实施文献

  生存后,再点一下编写。 能够掀开一个原已存正在的mq4文献,然后另存为你需求的文献名,再删除文献中的全部实质成为空文献,把网页上的源贴到文 件中生存即可 也能够正在记事本中新筑一个文献,把网页上的源码贴进记事本,然后取个文献名生存到上面提到的目次,然而文献后缀务必输 入mq4,生存类型挑选“于是文献” 四、mt4圭臬挪用自界说目标 这非凡浅易

  MT4编程初学(二):目标源码中的常用符号评释 一、诠释符:单行诠释“//”、众行诠释“/* */”

  圭臬不实施诠释,诠释实质仅供阅读或保存不必的语句 正在MQ发言编辑器中,诠释实质以灰色显示 二、分号“;” 显露一个语句中断 三、逗号“,” 显露一个语句内部间隔,不中断语句。 四、等于号“=” 赋值语句,把等号后面的值赋给等号前的变量中 六、加加“” 显露把符号前的变量值加1,比方:“i;”这本质上即是:“i=i1;”的简写,显露i的值加1 七、加等于“=” 显露把符号后的值加到符号前的变量中。比方“i=2;”,本质上即是“i=i2;”的简写,显露i的值加2 八、双等号“==” 等于号。用于逻辑决断,双等号前后值相称,则返回逻辑值“真true”;双等号前后值不相称,则返回逻辑值“假false” 九、叹号等号“!=” 不等于号。用于逻辑决断,不等号前后值不相称,则返回逻辑值“真true”;不等号前后值相称,则返回逻辑值“假false” 十、“&&” 逻辑符“而且” 十一、“” 逻辑符“或者” 十二、大括号“{}” 显露函数体。 {}内部为函数体语句。 MT4编程初学(三):自界说变量 一、自界说变量正在行使前,务必先创筑(界说),设定变量的类型和名称。 创筑时可同时赋值,也能够不赋值。名称能够行使中文字符。 例: int mark;创筑一个整型变量,变量名为“mark”。 bool 是否报警=true;创筑一个逻辑型变量,变量名为“是否报警”,同时,赋初值“true” 二、类型和类型界说词 自界说变量的基础类型有: 1、整形(int):即是整数,包含负整数 2、双精度小数(double):能够浅易地了解为带小数位的数 3、字符串型(string)。 4、逻辑型(bool):其值分散为“true、false”,即“线线假)。

  类型界说词仅正在创筑变量时行使,后面行使变量时,就不行再加类型界说词了 三、附加变量 附加变量即是正在圭臬加入行使后,变量值应许用户自正在更改的变量,凡是用作圭臬参数。 凡是目标,比方MACD(12,26,9)参数输入即是通过附加变量达成,(12,26,9)分散为三个附加变量的默认值。 界说附加变量只需正在变量界说语句前加“extern” 例: extern int 周期=9;创筑一个整型附加变量,变量名为“周期”,默认值为9,应许用户正在圭臬外部篡改参数值 MT4编程初学(四):自界说函数 比方:数学函数ft(x,y)=3x2y (x,y为正整数) 写成圭臬语句即是: int ft(int x,int y) { int temp; temp=3*x2*y; return(temp); } 一、和自界说变量相似,自界说函数正在行使前,也务必先设立,以界说其类型、名称、参数和运算语句。 函数类型、名称、参数位于函数头部(参数间以逗号分开), 大括号中的是运算语句,也即是函数体一面。 return语句为函数中断语句,return后面括号中的值为函数返回值,即函数运算结果。 上例中,int为函数类型,显露该函数的返回值(运算结果)是整数; (x,y)为参数,因为自界说变量行使之前都务必先创筑,于是要加上类型界说词int ft为函数名,有了函数名,咱们就能够正在别处用ft(2,1)的事势来挪用此函数; 函数体一面有三句: 第一句,界说一个整形变量temp 第二句,策画temp的值 第三句,函数中断,返回挪用点,以temp的值行为本函数返回值。 此函数也能够简写为:int ft(int x,int y) {return(3*x2*y);} 二、函数类型与类型符 函数类型即是函数返回值(运算结果)的类型,与自界说变量类型差不众 有整型(int)、双精度型(double)、字符串型(string)、逻辑型(bool)等, 尚有一种函数是以函数运转为宗旨,运转中断后不需求返回值也没有返回值的,则函数类型能够写成void(无值型) 三、函数中假如界说了自界说变量,那么此变量仅正在本函数内部存正在,函数运转中断时,自界说变量也就主动刊出。上例中, 有x、y、temp三个自界说变量,正在函数运转时创筑,正在函数运转中断时主动消灭,仅正在函数内部有用,与函数外部无闭。 四、函数的挪用 函数挪用非凡浅易,只消函数名无误、参数个数相似、类型一致就能无误挪用 如咱们前面创筑了ft(x,y)函数,则别处咱们能够用ft(4,5)等样式来挪用ft(x,y)函数求值。

  挪用时,通报参数值给ft(x,y)函数(按规律把4传给x,把5传给y),返回结果22后持续实施主圭臬。 MT4编程初学(五):自界说数组 一、数组是一系列同类型变量的聚会,能够同时存储众个数值。 例:int aa[4]={4,3,2,1}; 这是一个数据名为aa、包蕴了4个元素的整数型数组(即数组长度为4),能够同时存储4个数值。 二、自界说数组也务必“先确立,后行使” 创筑(界说)时,务必设定类型和名称。 创筑(界说)时,数组的元素个数也能够设定,也能够不设定 数组中第一个元素的编号为0,第二个为1,以此类推。编号行使方括号括起来 正在这上例中aa[0]的值为4、aa[1]的值为3、aa[2]的值为2、aa[3]的值为1 int bb[]; 创筑数组bb,不设定命组元素个数 int cc[8]; 创筑数组cc,设定命组元素为8个,不赋初值 int dd[3]={9,8,7}; 创筑数组dd,设定命组元素为4个,并赋初值 赋值后,dd[0]的值为9、dd[1]的值为8、dd[2]的值为7 int ee[9]={0,1,2,3}; 创筑数组ee,设定命组元素为9个,但只给前4个元素赋初值 三、数组行使时的赋值 数组的赋值务必指定昭彰的赋值对象,除了新筑数组时能够批量赋值外,数组元素务必一个一个赋值 比方:dd[2]=1; 这是对数组dd的第3个元素dd[2]([0]是第1个,[2]显露第3个)从新赋值为1 正在这里,没有整数型变量界说符int, 如此,数组dd原有三个值{9,8,7}就变为{9,8,1} 四、数组的援用 数组只是一系列变量的聚会,于是每次只可行使数组中的一个元素。 数组的援用务必指定昭彰的援用对象,一次只可援用一个。假如需求行使整列数组,则务必逐一行使。 比方:数组aa[4]的值为{4,3,2,1} 咱们用aa来援用数组aa中的值 当i=0时,aa[i]的值为4 当i=1时,aa[i]的值为3 当i=2时,aa[i]的值为2 当i=3时,aa[i]的值为1 MT4编程初学(六):市集数据取值 一、预订义数组(MT4仍然界说好的,能够直接行使) 开盘价、最高价、最低价、收盘价、成交量等史籍数据,每根K线烛炬都各有一个,于是务必用数组来治理题目,MT4有几个 预订义数组: 开盘价Open[]、最高价High[]、最低价Low[]、收盘价close[]、成交量Volume[]、所属时光Time[] 类型为双精度double型(即精准小数)

  这里有一个场所的题目,右边第一根K线烛炬(即最新的烛炬)的编号为0,第二根烛炬编号1,第三根烛炬编号2,也即是说从右 向左倒着数过去。 Open[0]、High[0]、Low[0]、Close[0],显露最新的开盘价、最高价、最低价、收盘价 Open[1]、High[1]、Low[1]、close[1],显露第2根K线烛炬的开盘价、最高价、最低价、收盘价 Open[2]、High[2]、Low[2]、close[2],显露第3根K线烛炬的开盘价、最高价、最低价、收盘价 Open[3]、High[3]、Low[3]、close[3],显露第4根K线烛炬的开盘价、最高价、最低价、收盘价 Open、High、Low、close,显露第i1根K线烛炬的开盘价、最高价、最低价、收盘价 以此类推。。。。。。

  价钱品种:收盘价(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_CLOSE,0) 显露:欧元1小时图上,以收盘价策画的,20小时浅易搬动均匀线,MODE_EMA,PRICE_CLOSE,2) 显露:正在目前商品、目前K线周期图外上,以收盘价策画的,20(天)指数搬动均匀线根K线所对应场所的值 其他如MACD目标、威廉目标、RSI、SAR、布林线等目标取值都与搬动均匀线、正在数组中求元素的搬动均匀值。双精度double型 iMAOnArray(数组名, 总数, 均匀周期, 均线偏移, 均匀形式, 场所) 这也与iMA函数差不众,然而数据源变为数组 从数组中不仅能够求得搬动均匀值,还能够求得RSI等目标值 4、求自界说目标的值 假如自界说目标有众根目标线,则第一条自界说目标线。。。比方: iCustom(NULL,0,mymacd,12,26,9,2,0) (12,26,9)为自界说目标mymacd的三个参数 显露:求目前图外中,自界说目标mymacd(12,26,9)的第3条款标线正在最新场所的值 扔砖引玉,这里只是有代外性地列了几个函数,周到请查阅《MT4编程手册》 MT4编程初学(七):决断语句 一、if语句 if语句很常用,也斗劲浅易。 准则:假如小括号中的条款设置,则实施大括号中的语句;假如不设置,则跳过大括号。

  if( Low[1]1.0000 && Low[0]=1.0000 && mark!=2) { Alert(symbol(),价钱向下触及1.0000); mark=2; } 这是一个价钱上、下穿1.0000时报警的决断语句: 上穿报警条款:当第二根K线,而且最新K线 下穿报警条款:当第二根K线,而且最新K线 这里,mark是用作报警象征,mark的初值是0, 当上穿报警后,mark的值就改为1;当下穿报警后,mark的值就改为2; 二、if ... else语句 准则:假如小括号中的条款设置,则实施if下大括号中的语句1;假如不设置,则实施else下大括号中的语句2。 if(条款) { 语句1; } else { 语句2; } 三、注意事项 1、唯有语句后面才用到语句中断符“;”条款、大、小括号后面都不必“;” 2、语句用大括号括起来,但假如唯有一行语句,则大括号能够省略 if(条款) 语句1; MT4编程初学(八):轮回 一幅K线图有几千上万条K线,每根K线又各有开收盘价、最坎坷价等数值,况且尚有许众搬动均匀线、MACD、RSI 等目标 值。 面临海量数据,咱们务必用轮回来达成数据的取值和赋值。 一、while轮回 while(条款) { 语句1 语句2 。。。 } 准则:当小括号中的条款设置时,就实施大括号中的语句,实施完了再决断条款是否设置,假如条款设置就持续实施大括号中

  的语句。 只消条款设置,圭臬就连续地运转大括号中的语句(轮回体),直到小括号中的条款不再设置时中断轮回。 它与if语句的区别是:if语句是当条款为真时运转一次;而while语句则是只消条款为真,轮回体语句就连续地运转,直到条款 为假时中断轮回。

  第三步、按规律实施大括号中的语句 第四步、实施小括号中的第1句:i (此语句即:每实施一次,i的值添补1) 然后回到第二步持续实施轮回。

  再添补一点:假如轮回体中(大括号中)唯有一行语句,大括号能够省略 MT4编程初学(九):MT4自界说目标的布局 MT4自界说目标凡是由四个一面组成: (1)文献头部

  一、文献头部,也称为预措置圭臬 预措置圭臬以“#”动手,行尾无语句中断符“;” 常用的预措置圭臬有: 1、#property indicator_chart_window 把目标显示正在主图。如:均线、SRA等类目标用到此语句 2、#property indicator_separate_window 把目标显示正在副图。如:MACD、RSI、威廉等类目标用到此语句 3、#property indicator_buffers 3 显示3根目标线、#property indicator_width1 1 第1根目标线、#property indicator_level1 0.00 正在0.00值场所横划1条虚线 二、参数、变量和数组的界说 整体性的参数、变量、数组正在此界说,个人变量可正在start()函数中界说 三、初始化函数init() init()正在自界说目标加载时运转一次。 初始化函数的效用是“筑树”。假如自界说目标需求划线,则肯定用到此函数 四、主函数start() 当数据有变化时,start()就被触发。数据变化一次,start()就运转一次。 自界说目标的编程闭键凭借此函数举行。 start()函数的感化闭键是取值和给目标线赋值,报警也正在此函数内倡导。 别的,尚有一个反初始化函数deinit() deinit()正在自界说卸载时运转一次,可用以去除目标加载时init()所做的初始化操作。MT4编程初学(十):画一条款标线 要画目标线,只消正在圭臬中写明以下几点就能够了: 第一、昭彰目标线所正在窗口,是主图仍旧副图 第二、要确立数组,用以生存目标线正在各个场所的值。 第三、要确立目标线与数组的对应相闭,哪个数组对应哪条款标线 第四、要昭彰目标线的线型,是弧线仍旧柱线或者是箭头 第五、假如目标线是箭头,还要评释是哪种箭头 第六、给数组赋值 个中: 第一、二条写正在文献头部中, 第三、四、五条写正在init()函数中(init函数仅正在目标加载时运转一次) 第六条写正在start()函数中(start函数正在数据策划变化时运转,变化一次运转一次)下面以MACD为例评释 紫线是白线的搬动均匀线; 红绿柱线则是白线和紫线的差,白线上穿紫线,显露红柱,下穿则显露绿柱。

  与目标画线比拟,报警句句显得非凡浅易, 只消正在决断语句中加一个报警句句即可 报警式样有:弹出窗口报警、音乐报警、邮件报警等。 假如邮箱开通了手机短信报告,则邮件报警的实质会即时转发得手机上。 1、弹出窗口报警: 当(条款抵达)实施此语句时,以弹出窗口正告。 款式:Alert(实质1,实质2,实质3,实质4); 报警实质为字符串型,实质之间加逗号 比方: Alert( Symbol(),4小时图MACD上穿零轴); 2、音乐报警: 当(条款抵达)实施此语句时,播放一段音乐。 款式:PlaySound(音乐文献名.wav); 文献类型为wav款式,而且生存正在C:\Program Files\MetaTrader4\sounds目次中 文献名加引号 3、邮件报警: 当(条款抵达)实施此语句时,发送一个邮件。 (收发件人地点正在MT4编制中筑树详睹《MT4编程实例1:一个浅易的小圭臬,让你的手机摇身形成外汇行情回收机》) 下面是《价钱穿越某均线;--------------------------------#property indicator_chart_window extern int 警卫均线; int mark=0;

FXCG 相关资讯

MT4编程→简明教程+速成
MT4编程入门教程_mt4教程
手机版mt4软件下载_正版
USGFX联准国际:如何合理
新手指南-Metatrader 4(M
MT4外汇交易平台用户指南
同花顺获得沪深交易所
缠论说:和我学MT4指标
mt4交易平台使用教程:交
mt4软件怎么样?用mt4来进