资料内容仅供您学习参考?免费mt4原料实质仅供您研习参考,如有欠妥或者侵权,请干系修改或者删除。 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 ” 例 : extern int 周期=9 ; 创立一个整型附加变量 , 变量名为 ”周期 ” , 默认值为9 , 原料实质仅供您研习参考,如有欠妥或者侵权,请干系修改或者删除。 许可用户正在标准外部改正参数值 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 第二句 , 打算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) 、 日线) 、 周线) 、 周线) 、 月线) 例: 原料实质仅供您研习参考,如有欠妥或者侵权,请干系修改或者删除。 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 小时简便转移均匀线 , 最新K线 : iMA(NULL,0,20,0,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]
转载请注明出处。