mt5交易商分别为:商品名称、K 线周期、均线周期、均线偏移、平均模式、价 格种类、位置 均线 天平均线 天均线 均线偏移:均线位置整体左右移动的位置偏移量 平均模式:简单移动平均(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(EURUSDMT4精讲MT4编程初学全集1111pdf
MT4编程初学1:MT4自界说目标的根本操作 MT4自界说目标的留存目次、目标编缉器与目标移用 一、MT4自界说目标留存正在C:\ProgramFiles\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:\ProgramFiles\MetaTrader4\experts\indicators这个目次,也即是下面 这个目次中,就能够了。假设下载的是ex4文献,那能够直接移用;假设是mq4 文献,则须要重启动MT4,让体系主动编译天生ex4可推广文献。假设下载的是 rar、zip等类型的压缩文献,还务必下载后解压到此目次才具利用。 三、将源码留存为源码文献 正在论坛上,咱们也时常能看到目标源码贴正在网页上,但没有mq4、ex4等文献可 以下载,只可复制源码。此时须要咱们我方出手将源码留存为源码文献,那也没 合连,万分地简便,众点几下鼠标就搞定。 1、掀开MQ说话编辑器 2、正在MQ说话编辑器中新修一个文献,文献名肯定要输,此外随意操作都没合 系。 . . 3、删除新文献内里的全面实质,成为一个空文献, 4、接着咱们就能够将网页上源码复制粘贴进来 试着点一下“编写”,假设左下角涌现“0舛误,0警卫”,那证实源码没问 题,编译通过了,获胜天生了ex4可推广文献 . 5、再有很苛重的一点,即是要把源码文献留存到准确的目次中 . 留存后,再点一下编写。 到此,源码留存告终。 当然,咱们也再有另的手腕: 能够掀开一个原已存正在的mq4文献,然后另存为你须要的文献名,再删除文献中 的全面实质成为空文献,把网页上的源贴到文献中留存即可 也能够正在记事本中新修一个文献,把网页上的源码贴进记事本,然后取个文献名 留存到上面提到的目次,不外文献后缀务必输入mq4,留存类型挑选“以是文 件” 四、mt4轨范移用自界说目标 这万分简便 . MT4编程初学2:目标源码中的常用符号证实 一、诠释符:单行诠释“//”、众行诠释“” 轨范不推广诠释,诠释实质仅供阅读或保存无须的语句 正在MQ说话编辑器中,诠释实质以灰色显示 二、分号“;” 默示一个语句完了 三、逗号“,” 默示一个语句内部间隔,不完了语句。 四、等于号“=” 赋值语句,把等号后面的值赋给等号前的变量中 五、加号“+” 整数或小数,则默示值相加;字符串,则默示前后连合。 . 六、加加“++” 默示把符号前的变量值加1,比方:“i++;”这实践上即是:“i=i+1;”的简 写,默示i的值加1 七、加等于“+=” 默示把符号后的值加到符号前的变量中。比方“i+=2;”,实践上即是“i=i+2;” 的简写,默示i的值加2 八、双等号“==” 等于号。用于逻辑剖断,双等号前后值相称,则返回逻辑值“真true”;双等号 前后值不相称,则返回逻辑值“假false” 九、叹号等号“!=” 不等于号。用于逻辑剖断,不等号前后值不相称,则返回逻辑值“真true”;不 等号前后值相称,则返回逻辑值“假false” 十、“&&” 逻辑符“而且” 十一、“” 逻辑符“或者” 十二、大括号“{}” 默示函数体。 {}内部为函数体语句。 MT4编程初学3:自界说变量 MT4编程初学3:自界说变量 一、自界说变量正在利用前,务必先创修(界说),设定变量的类型和名称。 创修时可同时赋值,也能够不赋值。名称能够利用中文字符。 例: intmark;创修一个整型变量,变量名为“mark”。 bool是否报警=true;创修一个逻辑型变量,变量名为“是否报警”,同时, 赋初值“true” . 二、类型和类型界说词 自界说变量的根本类型有: 1、整形(int):即是整数,囊括负整数 2、双精度小数(double):能够简便地判辨为带小数位的数 3、字符串型(string)。 4、逻辑型(bool):其值划分为“true、false”,即“真、假”,也能够写成 “1、0”(1线假)。 类型界说词仅正在创修变量时利用,后面利用变量时,就不行再加类型界说词了 三、附加变量 附加变量即是正在轨范参加利用后,变量值同意用户自正在更改的变量,普通用作轨范 参数。 普通目标,比方MACD(12,26,9)参数输入即是通过附加变量告终,(12,26,9)划分 为三个附加变量的默认值。 界说附加变量只需正在变量界说语句前加“extern” 例: externint周期=9;创修一个整型附加变量,变量名为“周期”,默认值为 9,同意用户正在轨范外部篡改参数值 MT4编程初学4:自界说函数 自界说函数与数学函数正在实质上是划一的 比方:数学函数ft(x,y)=3x+2y(x,y为正整数)写成轨范语句即是: intft(intx,inty) { inttemp; temp=3*x+2*y; return(temp); } 一、和自界说变量相似,自界说函数正在利用前,也务必先设立,以界说其类型、名 称、参数和运算语句。 函数类型、名称、参数位于函数头部(参数间以逗号隔离), 大括号中的是运算语句,也即是函数体部门。 return 语句为函数完了语句,return 后面括号中的值为函数返回值,即函数运算 结果。 上例中,int 为函数类型,默示该函数的返回值(运算结果)是整数; (x,y)为参数,因为自界说变量利用之前都务必先创修,以是要加上类型界说词 int . ft 为 函 数 名 , 有 了 函 数 名 , 我 们 就 可 以 正在 别 处 用 ft(2,1)的 形 式 来 调 用 此 函 数 ; 函 数 体 部 分 有 三 句 : 第 一 句 , 定 义 一 个 整 形 变 量 temp 第 二 句 , 计 算 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 后 继 续 推广 主轨范 。 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 个元 素赋初值 三、数组利用时的赋值 数组的赋值务必指定明了的赋值对象,除了新修数组时能够批量赋值外,数组元素 务必一个一个赋值 比方: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 有几个预订义数组: 开盘价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 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)、日线)、周线图 (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, shift) 参数共7 个,划分为:商品名称、K 线周期、均线周期、均线偏移、均匀形式、价 格品种、地方 均线 天均匀线 天均线 均线偏移:均线地方合座足下搬动的地方偏移量 均匀形式:简便搬动均匀(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_CLOSE,0) 默示:欧元1 小时图上,以收盘价估量的,20 小时简便搬动均匀线,MODE_EMA,PRICE_CLOSE,2) 默示:正在目下商品、目下K 线周期图外上,以收盘价估量的,20(天)指数搬动均匀 . 线 根K 线所对应地方的值 其他如MACD 目标、威廉目标、RSI、SAR、布林线等目标取值都与搬动均匀线、正在数组中求元素的搬动均匀值。双精度double 型 iMAOnArray(数组名, 总数, 均匀周期, 均线偏移, 均匀形式, 地方) 这也与iMA 函数差不众,不外数据源变为数组 从数组中不单能够求得搬动均匀值,还能够求得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 编程手册》 MT4 编程初学7:剖断语句 一、if 语句 if 语句很常用,也较量简便。 准则:假设小括号中的条款建立,则推广大括号中的语句;假设不建立,则跳过大 括号。 比方: if(a==1) { . b=c+1; } 咱们正在编写报警目标的时刻,就时常用到这一语句: 假设“价值向上抵达指订价位”,则“报警” 假设“MACD 上穿”,则“报警” 假设“均线金叉”,则“报警”。等等 例: int mark=0; if( High[1]
=1.0000 && mark!=1) { Alert(symbol(),价值向上触及1.0000); mark=1; } if( Low[1]
转载请注明出处。