2022-11-14 13:16
Jkel

  MT4编程入门教程pdf超盘手俱乐部 QQ MT4 编程初学培训教程 MT4 编程初学教程目次 MT4 编程初学 1:MT4自界说目标的根本操作 MT4 编程初学 2:目标源码中的常用符号阐述 MT4 编程初学 3:自界说变量 MT4 编程初学 4:自界说函数 MT4 编程初学 5:自界说数组 MT4 编程初学 6:市集数据取值 MT4 编程初学 7:判别语句 MT4 编程初学 8:轮回 MT4 编程初学 9:MT4自界说目标的组织 MT4 编程初学 10:画一条件标线 自界说目标的根本操作 MT4 自界说目标的保留目次、目标编缉器与目标挪用 一、MT4 自界说目标保留正在 C:\Program Files\MetaTrader 4\experts\indicators 这个目 录中,该目次中首要有二品种型的文献,一种是 mq4 文献,这是 MT4自界说目标的源码文献, 是一种高级说话文献,可能人工编写篡改,呆板不行直接推广,但能正在 MT4 启动时自愿编译 为 ex4 可推广文献。另一种便是 ex4 文献,这是 MT4自界说目标的可推广文献,由 mq4文献 编译取得。mq4 文献必需编译为 ex4 文献才略被 MT4推广。但 ex4文献是呆板码文献,人工 弗成篡改 超盘手俱乐部 QQ 其它另有一个文献是 mqlcache.dat,它用来保留目次中的文献音信,假若 MT4 无法自愿编 译,只须删除此文献即可管理题目,mq4 文献编译为 ex4 可推广文献有两种要领: 1、MT4 启动时,会自愿把此目次中的 mq4 文献编译为 ex4 文献。 2、用 MQ 说话编辑器翻开 mq4文献,点一下“编写”按钮,即可天生 ex4文献 二、下载保留 mq4 文献、ex4文献 正在论坛上咱们每每看到有 mq4文献、ex4 文献可供下载,咱们只须把它们保留到 C:\Progra m Files\MetaTrader 4\experts\indicators 这个目次,也便是下面这个目次中,就可能了。 假若下载的是 ex4 文献,那可能直接挪用;假若是 mq4 文献,则须要重启动 MT4,让体例自 动编译天生 ex4 可推广文献。假若下载的是 rar、zip 等类型的压缩文献,还必需下载后解 压到此目次才略操纵。 三、将源码保留为源码文献 正在论坛上,咱们也每每能看到目标源码贴正在网页上,但没有 mq4、ex4 等文献可能下载,只 能复制源码。此时须要咱们本人下手将源码保留为源码文献,那也不要紧,异常地方便,众 点几下鼠标就搞定。 1、翻开 MQ说话编辑器 2、正在 MQ 说话编辑器中新筑一个文献,文献名必定要输,其余肆意操作都不要紧。 3、删除新文献内里的整个实质,成为一个空文献, 4、接着咱们就可能将网页上源码复制粘贴进来 试着点一下“编写”,假若左下角产生“0 舛讹,0申饬”,那阐述源码没题目,编译通过 了,胜利天生了 ex4可推广文献 5、另有很首要的一点,便是要把源码文献保留到确切的目次 超盘手俱乐部 QQ 保留后,再点一下编写。 到此,源码保留达成。 当然,咱们也另有另的门径: 可能翻开一个原已存正在的 mq4文献,然后另存为你须要的文献名,再删除文献中的整个实质 成为空文献,把网页上的源贴到文献中保留即可 也可能正在记事本中新筑一个文献,把网页上的源码贴进记事本,然后取个文献名保留到上面 提到的目次,只是文献后缀必需输入 mq4,保留类型采用“是以文献” 四、mt4 步骤挪用自界说目标 这异常方便 MT4 编程初学 2:目标源码中的常用符号阐述 一、评释符:单行评释“//”、众行评释“/* */” 步骤不推广评释,评释实质仅供阅读或保存不必的语句 正在 MQ 说话编辑器中,评释实质以灰色显示 二、分号“;” 暗示一个语句结尾 三、逗号“,” 暗示一个语句内部间隔,不结尾语句。 四、等于号“=” 赋值语句,把等号后面的值赋给等号前的变量中 五、加号“+” 整数或小数,则暗示值相加;字符串,则暗示前后邻接。 超盘手俱乐部 QQ 六、加加“++” 暗示把符号前的变量值加 1,比方:“i++;” 这实质上便是:“i=i+1;”的简写,暗示 i 的值加 1 七、加等于“+=” 暗示把符号后的值加到符号前的变量中。比方“i+=2;”,实质上便是“i=i+2;”的简写, 暗示 i 的值加 2 八、双等号“==” 等于号。用于逻辑判别,双等号前后值相当,则返回逻辑值“真 true”;双等号前后值不 相当,则返回逻辑值“假 false” 九、叹号等号“!=” 不等于号。用于逻辑判别,不等号前后值不相当,则返回逻辑值“真 true”;不等号前后 值相当,则返回逻辑值“假 false” 十、“&&” 逻辑符“而且” 十一、“” 逻辑符“或者” 十二、大括号“{}” 暗示函数体。 {}内部为函数体语句。 MT4 编程初学 3:自界说变量 一、自界说变量正在操纵前,必需先创筑(界说),设定变量的类型和名称。 超盘手俱乐部 QQ 创筑时可同时赋值,也可能不赋值。名称可能操纵中文字符。 例: int mark; 创筑一个整型变量,变量名为“mark”。 bool 是否报警=true; 创筑一个逻辑型变量,变量名为“是否报警”,同时,赋初值“t rue” 二、类型和类型界说词 自界说变量的根本类型有: 1、整形(int):便是整数,包含负整数 2、双精度小数(double):可能方便地明了为带小数位的数 3、字符串型(string)。 4、逻辑型(bool):其值折柳为“true、false”,即“线 线 假)。 类型界说词仅正在创筑变量时操纵,后面操纵变量时,就不行再加类型界说词了 三、附加变量 附加变量便是正在步骤参加操纵后,变量值许诺用户自正在更改的变量,日常用作步骤参数。 日常目标,比方 MACD(12,26,9)参数输入便是通过附加变量告终,(12,26,9)折柳为三个附 加变量的默认值。 界说附加变量只需正在变量界说语句前加“extern” 例: extern int 周期=9; 创筑一个整型附加变量,变量名为“周期”,默认值为 9,许诺用 超盘手俱乐部 QQ 户正在步骤外部篡改参数值 MT4 编程初学 4:自界说函数 自界说函数与数学函数正在性质上是类似的 比方:数学函数 ft(x,y)=3x+2y (x,y 为正整数) 写成步骤语句便是: int ft(int x,int y) { int temp; temp=3*x+2*y; return(temp); } 一、和自界说变量相通,自界说函数正在操纵前,也必需先设立,以界说其类型、名称、参数 和运算语句。 函数类型、名称、参数位于函数头部(参数间以逗号隔离), 大括号中的是运算语句,也便是函数体个别。 return 语句为函数结尾语句,return 后面括号中的值为函数返回值,即函数运算结果。 上例中,int为函数类型,暗示该函数的返回值(运算结果)是整数; (x,y)为参数,因为自界说变量操纵之前都必需先创筑,是以要加上类型界说词 int ft 为函数名,有了函数名,咱们就可能正在别处用 ft(2,1)的办法来挪用此函数; 函数体个别有三句: 第一句,界说一个整形变量 temp 超盘手俱乐部 QQ 第二句,阴谋 temp 的值 第三句,函数结尾,返回挪用点,以 temp 的值动作本函数返回值。 此函数也可能简写为:int ft(int x,int y) {return(3*x+2*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后连续 推广主步骤。 超盘手俱乐部 QQ MT4 编程初学 5:自界说数组 一、数组是一系列同类型变量的蚁合,可能同时存储众个数值。 例: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个元素赋初值 三、数组操纵时的赋值 超盘手俱乐部 QQ 数组的赋值必需指定精确的赋值对象,除了新筑数组时可能批量赋值外,数组元素必需一个 一个赋值 比方: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 编程初学 6:市集数据取值 一、预订义数组(MT4 依然界说好的,可能直接操纵) 开盘价、最高价、最低价、收盘价、成交量等史乘数据,每根 K 线烛炬都各有一个,是以必 须用数组来管理题目,MT4 有几个预订义数组: 超盘手俱乐部 QQ 开盘价 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,暗示第 i+1根 K 线烛炬的开盘价、最高价、最低价、收盘价 以此类推。。。。。。 提神:这些是数组,用的是方括号。 二、预订义变量 买入价、卖出价是及时价值,MT4 用预订义变量 Ask和 Bid 暗示,数值类型为 double 双精 度 另有少少预订义变量,如: Bars 暗示图外中的烛炬数,类型为 int整数型 Digits 暗示现在钱币对的小数位,类型为 int整数型,无日元币对为 4,有日元币对为 2, 黄金石油等日常也为 2 超盘手俱乐部 QQ Point 暗示现在钱币对的点值,类型为双精度 double 型,无日元币对为 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,shift) 双精度 double 型 所属时光:iTime(symbol,timeframe,shift) 日期时光 datetime 型 K 线 分钟图(PERIOD_M1)、5 分钟图(PERIOD_M5)、15分钟图(PERIOD_M15)、30分 钟图(PERIOD_M30)、 1 小时图(PERIOD_H1)、4 小时图(PERIOD_H4)、日线)、周线)、 周线)、月线) 例: 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 线周期,用正在谁便是谁,用正在哪 便是哪 超盘手俱乐部 QQ 2、搬动均匀值。双精度 double 型 iMA(symbol, timeframe, period, ma_shift, ma_method, applied_price, shift) 参数共 7 个,折柳为:商品名称、K 线周期、均线周期、均线偏移、均匀形式、价值品种、 职位 均线 天均匀线 天均线 均线偏移:均线职位整个足下搬动的职位偏移量 均匀形式:方便搬动均匀(MODE_SMA)、指数搬动均匀(MODE_EMA)、腻滑搬动均匀线(MODE_S MMA)、线性加权搬动均匀线(MODE_LWMA) 价值品种:收盘价(PRICE_CLOSE)、开盘价(PRICE_OPEN)、最高价(PRICE_HIGH)、最低价(P RICE_LOW)、中值(PRICE_MEDIAN)、5(PRICE_TYPICAL)、6(PRICE_WEIGHTED) 例 1:iMA(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(天)指数搬动均匀线 根 K 线所对应职位的值 其他如 MACD目标、威廉目标、RSI、SAR、布林线等目标取值都与搬动均匀线、正在数组中求元素的搬动均匀值。双精度 double 型 iMAOnArray(数组名, 总数, 均匀周期, 均线偏移, 均匀形式, 职位) 这也与 iMA函数差不众,只是数据源变为数组 超盘手俱乐部 QQ 从数组中不仅可能求得搬动均匀值,还可能求得 RSI等目标值 4、求自界说目标的值 咱们每每本人编少少自界说目标,可用 iCustom 函数来获得自界说函数的值 iCustom(商品名,K线周期,自界说目标名称,自界说目标参数1,参数2,参数3,,,自界说目标 线编号,职位) 假若自界说目标只要一根目标线,则自界说目标线。 假若自界说目标有众根目标线,则第一条自界说目标线。。。 比方:iCustom(NULL,0,mymacd,12,26,9,2,0) (12,26,9)为自界说目标 mymacd 的三个参 数 暗示:求现在图外中,自界说目标 mymacd(12,26,9)的第 3 条件标线正在最新职位的值 掷砖引玉,这里只是有代外性地列了几个函数,详明请查阅体例助助。 MT4 编程初学 7:判别语句 一、if 语句 if 语句很常用,也对比方便。 端正:假若小括号中的条款缔造,则推广大括号中的语句;假若不缔造,则跳过大括号。 比方: if(a==1) { b=c+1; } 超盘手俱乐部 QQ 咱们正在编写报警目标的时期,就每每用到这一语句: 假若“价值向上到达指订价位”,则“报警” 假若“MACD上穿”,则“报警” 假若“均线金叉”,则“报警”。等等 例: int mark=0; if( High[1]

  =1.0000 && mark!=1) { Alert(symbol(),价值向上触及 1.0000); mark=1; } if( Low[1]

  =1.0000 && mark!=2) { alert(symbol(),价值向下触及 1.0000); mark=2; } 这是一个价值上、下穿 1.0000 时报警的判别语句: 上穿报警条款:当第二根 k 线,而且最新 k 线 下穿报警条款:当第二根 k 线,而且最新 k 线 这里,mark 是用作报警标识,mark 的初值是 0, 当上穿报警后,mark的值就改为 1;当下穿报警后,mark 的值就改为 2; 超盘手俱乐部 qq 当 mark=0 时,阐述从未报过警,上、下穿都能报警; 当 mark=1 时,阐述依然上穿报过警了,不行再上穿报警了,但仍可下穿报警; 当 mark=2 时,阐述依然下穿报过警了,不行再下穿报警了,但仍可上穿报警。 二、if ... else 语句 端正:假若小括号中的条款缔造,则推广 if 下大括号中的语句 1;假若不缔造,则推广 el se 下大括号中的语句 2。 if(条款) { 语句 1; } else { 语句 2; } 三、提神事项 1、只要语句后面才用到语句结尾符“;” 条款、大、小括号后面都不必“;” 2、语句用大括号括起来,但假若只要一行语句,则大括号可能省略 if(条款) 语句 1; mt4 编程初学 8:轮回 一幅 k 线图有几千上万条 k 线,每根 k 线又各有开收盘价、最上下价等数值,并且另有许众 搬动均匀线、macd、rsi 等目标值。 超盘手俱乐部 qq 面临海量数据,咱们必需用轮回来告终数据的取值和赋值。 一、while 轮回 while(条款) { 语句 1 语句 2 。。。 } 端正:当小括号中的条款缔造时,就推广大括号中的语句,推广完了再判别条款是否缔造, 假若条款缔造就连续推广大括号中的语句。 只须条款缔造,步骤就不休地运转大括号中的语句(轮回体),直到小括号中的条款不再缔造 时结尾轮回。 它与 if 语句的区别是:if语句是当条款为真时运转一次;而 while 语句则是只须条款为真, 轮回体语句就不休地运转,直到条款为假时结尾轮回。 例: extern int 疾线; extern int 慢线; double buffer[]; int i=0; while(i

  1000) { 超盘手俱乐部 qq buffer= ima(null,0,疾线,mode_ema,price_close,i) -ima(null,0,慢线,mode_ema,price_close,i); i++; } 这里,轮回推广条款是 i

  1000,轮回体中有两个语句,一句是把两条均线的差值赋给数组 b uffer,另一句“i++;”是每运转一次,i 的值正在原有根基上扩大 1。如此,跟着轮回的一向 运转,i 的值逐步扩大,轮回 1000 次后,i 的值也就从 0 变为 1000,此时“i

  1000”就不 再缔造,轮回结尾。如此,数组 buffer[]中也就有了 1000 个值。 二、for 轮回 for 轮回与 while 轮回正在道理上是类似的,只是书写式子上有所区别 把上面的例子改成 for 语句: extern int 疾线; extern int 慢线; double buffer[]; for(int i=0; i

  1000; i++) { buffer= ima(null,0,疾线,mode_ema,price_close,i) -ima(null,0,慢线,mode_ema,price_close,i); } 与前面比拟,咱们提神到: “int i=0;”语句从“while(i

  1000”的后面; 超盘手俱乐部 qq 轮回推广纪律与 while 轮回类似: 第一步、先推广小括号中的第 1 句:int i=0; (此语句用来界说初始变量,正在轮回中仅推广一次,可认为没有任何外达式的空操作符“;”) 第二步、再判别小括号中的第 2 句是否缔造:i

  1000; 假若不缔造,则轮回结尾;假若缔造,则轮回连续运转,推广第三步 第三步、按纪律推广大括号中的语句 第四步、推广小括号中的第 1句:i++ (此语句即:每推广一次,i 的值扩大 1) 然后回到第二步连续推广轮回。 再填充一点:假若轮回体中(大括号中)只要一行语句,大括号可能省略 mt4 编程初学 9:mt4 自界说目标的组织 mt4 自界说目标日常由四个个别组成: (1)文献头部 (2)参数、变量和数组的界说 (3)初始化函数 init() (4)主函数 start() 一、文献头部,也称为预解决步骤 预解决步骤以“#”起原,行尾无语句结尾符“;” 常用的预解决步骤有: 1、#property indicator_chart_window 把目标显示正在主图。如:均线、sra 等类目标用到此语句 超盘手俱乐部 qq 2、#property indicator_separate_window 把目标显示正在副图。如:macd、rsi、威廉等类目标用到此语句 3、#property indicator_buffers 3 显示 3 根目标线、#property indicator_color1 red 第 1 根目标线、#property indicator_width1 1 第 1 根目标线、#property indicator_level1 0.00 正在 0.00 值职位横划 1条虚线 二、参数、变量和数组的界说 全体性的参数、变量、数组正在此界说,个人变量可正在 start()函数中界说 三、初始化函数 init() init()正在自界说目标加载时运转一次。 初始化函数的成效是“配置”。假若自界说目标须要划线,则肯定用到此函数 四、主函数 start() 当数据有变更时,start()就被触发。数据变更一次,start()就运转一次。 自界说目标的编程首要仰赖此函数举行。 start()函数的用意首要是取值和给目标线赋值,报警也正在此函数内首倡。 超盘手俱乐部 qq 其它,另有一个反初始化函数 deinit() deinit()正在自界说卸载时运转一次,可用以去除目标加载时 init()所做的初始化操作。 mt4 编程初学 10:画一条件标线 要画目标线,只须正在步骤中写明以下几点就可能了: 第一、精确目标线所正在窗口,是主图照旧副图 第二、要设立数组,用以保留目标线正在各个职位的值。 第三、要设立目标线与数组的对应合联,哪个数组对应哪条件标线 第四、要精确目标线的线型,是弧线照旧柱线或者是箭头 第五、假若目标线是箭头,还要阐述是哪种箭头 第六、给数组赋值 个中: 第一、二条写正在文献头部中, 第三、四、五条写正在 init()函数中(init 函数仅正在目标加载时运转一次) 第六条写正在 start()函数中(start 函数正在数据策动变更时运转,变更一次运转一次) 下面以 macd为例阐述 咱们分明,macd 目标由二条弧线和一组红绿柱线构成。(下图一) 个中: 白线是二根均线的差; 紫线是白线的搬动均匀线; 红绿柱线则是白线和紫线的差,白线上穿紫线,产生红柱,下穿则产生绿柱。 超盘手俱乐部 qq 咱们从方便入手,先去除紫线和红绿柱线,仅保存个中的那根白线,来看白线是怎么画出来 的。 下面是统统语句: #property indicator_separate_window #property indicator_color1 white #property indicator_level1 0 extern int fma=12; extern int sma=26; double buf[]; int init() { setindexbuffer(0,buf); setindexstyle(0,draw_line); return(0); } int start() { int limit=bars-indicatorcounted(); for(int i=0; i

  GB T 32610-2016_平素防护型口罩技能典范_高清版_可检索.pdf

FXCG 相关资讯

我叫MT4:一款让我心力憔
《个人所得税专项附加扣
【揭秘】HiiFX海汇国际外
外汇天眼:交易生涯的第
汇通财经Pro
手机版mt4下载后怎么操作
正规应急借款APP
外汇交易MT4是什么软件?
mt4软件怎么样?你了解
为什么外汇市场喜欢使用