mt4教程

MT4编程入门教程

字号+ 作者:admin 来源:未知 2022-07-23 12:30 我要评论( )

MT4编程入门教程 MT4 自界说目标的保管目次、目标编缉器与目标挪用 一、MT4 自界说目标保管正在 C:\Program Files\MetaTrader 4\experts\indicators 这个目次中, 该目次中闭键有二品种型的文献,一种是 mq4 文献,这是 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 无法主动编译, 只消删除此文献即可管理题目。 mq4 文献编译为 ex4 可推行文献 有两种举措: 1、MT4 启动时,会主动把此目 录中的 mq4 文献编译为 ex4 文献。

  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 发言编辑器

  2、正在 MQ 发言编辑器中新筑一个文献,文献名必然要输,其它自便操作都不要紧。

  4、接着咱们就可能将网页上源码复制粘贴进来 试着点一下“编写” ,若是左下角浮现“0 差错,0 警戒” ,那外明源码没题目,编译通过 了,得胜天生了 ex4 可推行文献

  保管后,再点一下编写。 到此,源码保管完毕。 当然,咱们也另有另的主张: 可能掀开一个原已存正在的 mq4 文献,然后另存为你需求的文献名,再删除文献中的完全 实质成为空文献,把网页上的源贴到文献中保管即可 也可能正在记事本中新筑一个文献,把网页上的源码贴进记事本,然后取个文献名保管到 上面提到的目次,但是文献后缀务必输入 mq4,保管类型遴选“因此文献” 四、mt4 法式挪用自界说目标 这特地简陋

  法式不推行诠释,诠释实质仅供阅读或保存不消的语句 正在 MQ 发言编辑器中,诠释实质以灰色显示 二、分号“; ” 外现一个语句下场 三、逗号“, ” 外现一个语句内部间隔,不下场语句。 四、等于号“=” 赋值语句,把等号后面的值赋给等号前的变量中 五、加号“” 整数或小数,则外现值相加;字符串,则外现前后贯穿。 六、加加“” 外现把符号前的变量值加 1,比方: “i;” 的值加 1 七、加等于“=”

  外现把符号后的值加到符号前的变量中。比方“i=2;” ,本质上即是“i=i2;”的简写, 外现 i 的值加 2 八、双等号“==” 等于号。用于逻辑判决,双等号前后值相当,则返回逻辑值“真 true” ;双等号前后值不 相当,则返回逻辑值“假 false” 九、叹号等号“!=” 不等于号。用于逻辑判决,不等号前后值不相当,则返回逻辑值“真 true” ;不等号前后 值相当,则返回逻辑值“假 false” 十、 “&&” 逻辑符“而且” 十一、 “” 逻辑符“或者” 十二、大括号“{}” 外现函数体。 {}内部为函数体语句。

  一、自界说变量正在利用前,务必先创筑(界说),设定变量的类型和名称。 创筑时可同时赋值,也可能不赋值。名称可能利用中文字符。 例: int mark; 创筑一个整型变量,变量名为“mark” 。

  bool 是否报警=true; 创筑一个逻辑型变量, 变量名为 “是否报警” 同时, , 赋初值 “true” 二、类型和类型界说词 自界说变量的根基类型有: 1、整形(int):即是整数,搜罗负整数 2、双精度小数(double):可能简陋地贯通为带小数位的数 3、字符串型(string)。 4、逻辑型(bool):其值辨别为“true、false” ,即“真、假” ,也可能写成“1、0” 线 假) 。 类型界说词仅正在创筑变量时利用,后面利用变量时,就不行再加类型界说词了 三、附加变量

  附加变量即是正在法式参加利用后,变量值应允用户自正在更改的变量,寻常用作法式参数。 寻常目标, 比方 MACD(12,26,9)参数输入即是通过附加变量完毕, (12,26,9)辨别为三个附 加变量的默认值。 界说附加变量只需正在变量界说语句前加“extern” 例: extern int 周期=9; 创筑一个整型附加变量,变量名为“周期” ,默认值为 9,应允用户 正在法式外部改正参数值

  自界说函数与数学函数正在性质上是一概的 比方:数学函数 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),返回结果 23 后延续 推行主法式。

  一、数组是一系列同类型变量的鸠集,可能同时存储众个数值。 例: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[]; int cc[8]; 创筑数组 bb,不设定命组元素个数 创筑数组 cc,设定命组元素为 8 个,不赋初值 创筑数组 dd,设定命组元素为 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 仍旧界说好的,可能直接利用) 开盘价、最高价、最低价、收盘价、成交量等史乘数据,每根 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 线烛炬的开盘价、最高价、最低价、收 盘价

  外现:求而今图外中,自界说目标 mymacd(12,26,9)的第 3 条款标线正在最新场所的值 扔砖引玉,这里只是有代外性地列了几个函数,周到请查阅《MT4 编程手册》

  这里,mark 是用作报警符号,mark 的初值是 0, 当上穿报警后,mark 的值就改为 1;当下穿报警后,mark 的值就改为 2; 当 mark=0 时,外明从未报过警,上、下穿都能报警; 当 mark=1 时,外明仍旧上穿报过警了,不行再上穿报警了,但仍可下穿报警; 当 mark=2 时,外明仍旧下穿报过警了,不行再下穿报警了,但仍可上穿报警。 二、if ... else 语句 法规:若是小括号中的条目创建,则推行 if 下大括号中的语句 1;若是不创建,则推行 else 下大括号中的语句 2。 if(条目) { 语句 1; } else { 语句 2; } 三、注视事项 1、唯有语句后面才用到语句下场符“; 条目、大、小括号后面都不消“; ” ” 2、语句用大括号括起来,但若是唯有一行语句,则大括号可能省略 if(条目) 语句 1;

  一幅 K 线图有几千上万条 K 线,每根 K 线又各有开收盘价、最坎坷价等数值,况且还 有许众挪动均匀线、MACD、RSI 等目标值。 面临海量数据,咱们务必用轮回来完毕数据的取值和赋值。 一、while 轮回 while(条目) { 语句 1 语句 2 。。 。

  } 与前面比拟,咱们注视到: “int i=0;”语句从“while(i1000)”上方移到轮回条目“i1000”的前面; “i;”语句从轮回体中移到了轮回条目“i1000”的后面; 轮回推行次第与 while 轮回一概: 第一步、先推行小括号中的第 1 句:int i=0; (此语句用来界说初始变量,正在轮回中仅推行一次,可认为没有任何外达式的空操作符 “; ”) 第二步、再判决小括号中的第 2 句是否创建:i1000; 若是不创建,则轮回下场;若是创建,则轮回延续运转,推行第三步 第三步、按次第推行大括号中的语句 第四步、推行小括号中的第 1 句:i (此语句即:每推行一次,i 的值添补 1) 然后回到第二步延续推行轮回。 再增补一点:若是轮回体中(大括号中)唯有一行语句,大括号可能省略

  MT4 自界说目标寻常由四个片面组成: (1)文献头部 (2)参数、变量和数组的界说 (3)初始化函数 init() (4)主函数 start()

  一、文献头部,也称为预经管法式 预经管法式以“#”开始,行尾无语句下场符“;” 常用的预经管法式有: 1、#property indicator_chart_window 把目标显示正在主图。如:均线、SRA 等类目标用到此语句 2、#property indicator_separate_window 把目标显示正在副图。如:MACD、RSI、威廉等类目标用到此语句

  3、#property indicator_buffers 3 显示 3 根目标线、#property indicator_color1 Red 第 1 根目标线、#property indicator_width1 第 1 根目标线、#property indicator_level1 正在 0.00 值场所横划 1 条虚线 二、参数、变量和数组的界说 全体性的参数、变量、数组正在此界说,部分变量可正在 start()函数中界说 三、初始化函数 init() init()正在自界说目标加载时运转一次。 初始化函数的成效是“配置” 。若是自界说目标需求划线,则势必用到此函数 四、主函数 start() 当数据有转变时,start()就被触发。数据转变一次,start()就运转一次。 自界说目标的编程闭键倚赖此函数实行。 start()函数的效率闭键是取值和给目标线赋值,报警也正在此函数内倡始。 其它,另有一个反初始化函数 deinit() deinit()正在自界说卸载时运转一次,可用以去除目标加载时 init()所做的初始化操作。 0.00 1

  要画目标线,只消正在法式中写明以下几点就可能了: 第一、真切目标线所正在窗口,是主图仍旧副图 第二、要筑设数组,用以保管目标线正在各个场所的值。 第三、要筑设目标线与数组的对应干系,哪个数组对应哪条款标线 第四、要真切目标线的线型,是弧线仍旧柱线或者是箭头 第五、若是目标线是箭头,还要外明是哪种箭头 第六、给数组赋值 个中: 第一、二条写正在文献头部中, 第三、四、五条写正在 init()函数中(init 函数仅正在目标加载时运转一次)

  第六条写正在 start()函数中(start 函数正在数据鼓动转变时运转,转变一次运转一次) 下面以 MACD 为例外明 咱们真切,MACD 目标由二条弧线和一组红绿柱线构成。 (下图一) 个中: 白线是二根均线的差; 紫线是白线的挪动均匀线; 红绿柱线则是白线和紫线的差,白线上穿紫线,浮现红柱,下穿则浮现绿柱。

  给数组 buf 赋值,其值辨别为相应场所上两条均线的差 i 是程度场所序号值,即烛柱从右到左的序号,右边第一个烛柱序号为 0 return(0); start 函数下场 }

  与目标画线比拟,报警句句显得特地简陋, 只消正在判决语句中加一个报警句句即可 报警方法有:弹出窗口报警、音乐报警、邮件报警等。 若是邮箱开通了手机短信通告,则邮件报警的实质会即时转发得手机上。 1、弹出窗口报警: 当(条目抵达)推行此语句时,以弹出窗口警戒。 样子:Alert(实质 1,实质 2,实质 3,实质 4); 报警实质为字符串型,实质之间加逗号

  再说一下自界说变量 mark 的效率: mark 的初值是 0,当上穿报警时给 mark 赋值 1,当下穿报警时给 mark 赋值 2。 如此当 mark 的值为 1 时,外明仍旧对上穿报过警了,就不行再次对上穿报警; 当 mark 的值为 2 时,外明仍旧对下穿报过警了,就不行再次对下穿报警。 如此就起到了湮灭反复报警的效率。

转载请注明出处。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 外汇天眼预测:VCFX、Yihui今易汇今年准备跑路!

    外汇天眼预测:VCFX、Yihui今易汇今年准备跑路!

    2022-07-23 10:11

  • 最尴尬的加息潮来了!全球股市将面临进一步压力!

    最尴尬的加息潮来了!全球股市将面临进一步压力!

    2022-07-23 08:02

  • MT4外汇软件操作使用手册

    MT4外汇软件操作使用手册

    2022-07-23 04:58

  • 哪位朋友知道mt4的画线怎么擦去?

    哪位朋友知道mt4的画线怎么擦去?

    2022-07-22 23:57

网友点评