(完整版)MT4编程入门详解-有图表_第1页
(完整版)MT4编程入门详解-有图表_第2页
(完整版)MT4编程入门详解-有图表_第3页
(完整版)MT4编程入门详解-有图表_第4页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录MT4 编程入门(一) : MT4 自定义指标的基本操作MT4 编程入门(二):指标源码中的常用符号说明MT4 编程入门(三):自定义变量MT4 编程入门(四):自定义函数MT4 编程入门 (五 ):自定义数组MT4 编程入门 (六 ):市场数据取值MT4 编程入门 (七 ):判断语句MT4 编程入门 (八 ):循环MT4 编程入门 (九 ): MT4 自定义指标的结构MT4 编程入门 (十 ):画一条指标线MT4 编程入门 (十一 ): MT4 的报警MT4 编程入门(一) : MT4 自定义指标的基本操作MT4 自定义指标的保存目录、指标编缉器与指标调用一、 MT4 自定义指标保存在C

2、:Program FilesMetaTrader 4expertsindicators这个目录中,该目录中主要有二种类型的文件,一种是 mq4 文件,这是MT4 自定义指标的源码文件,是一种高级语言文件,可以人工编写修改,机器不能直接执行,但能在 MT4 启动时自动编译为ex4 可执行文件。另一种就是ex4 文件,这是MT4 自定义指标的可执行文件,由mq4 文件必须编译为ex4 文件才能被MT4 执行。但 ex4 文件是机器码文件,人工不可修改mq4文件编译得到。另外还有一个文件是mqlcache.dat ,它用来保存目录中的文件信息,如果MT4无法自动编译,只要删除此文件即可解决问题mq4

3、 文件编译为ex4 可执行文件有两种方法:1、 MT4 启动时,会自动把此目录中的mq4 文件编译为ex4 文件。2、用 MQ 语言编辑器打开mq4 文件,点一下“编写”按钮,即可生成ex4 文件二、下载保存mq4 文件、 ex4 文件在论坛上我们经常看到有mq4 文件、 ex4 文件可供下载,我们只要把它们保存到C:ProgramFilesMetaTrader4expertsindicators这个目录,也就是下面这个目录中,就可以了。如果下载的是ex4 文件,那可以直接调用;如果是 mq4 文件,则需要重启动 MT4 ,让系统自动编译生成 ex4 可执行文件。如果下载的是 rar、 zip

4、 等类型的压缩文件,还必须下载后解压到此目录才能使用。三、将源码保存为源码文件在论坛上,我们也经常能看到指标源码贴在网页上,但没有mq4 、 ex4 等文件可以下载,只能复制源码。此时需要我们自己动手将源码保存为源码文件,那也没关系,非常地简单,多点几下鼠标就搞定。1、打开 MQ 语言编辑器2、在 MQ 语言编辑器中新建一个文件,文件名一定要输,别的随便操作都没关系。3、删除新文件里面的所有内容,成为一个空文件,4、接着我们就可以将网页上源码复制粘贴进来试着点一下“编写” ,如果左下角出现“0 错误, 0 警告”,那说明源码没问题,编译通过了,成功生成了ex4 可执行文件5、还有很重要的一点,

5、就是要把源码文件保存到正确的目录中保存后,再点一下编写。到此,源码保存完成。当然,我们也还有另的办法:可以打开一个原已存在的 mq4 文件,然后另存为你需要的文件名,再删除文件中的所有内容成为空文件,把网页上的源贴到文件中保存即可也可以在记事本中新建一个文件,把网页上的源码贴进记事本,然后取个文件名保存到上面提到的目录,不过文件后缀必须输入 mq4 ,保存类型选择“所以文件”四、 mt4 程序调用自定义指标这非常简单MT4 编程入门(二):指标源码中的常用符号说明一、注释符:单行注释“/ ”、多行注释“/*/ ”程序不执行注释,注释内容仅供阅读或保留不用的语句在 MQ 语言编辑器中,注释内容以

6、灰色显示二、分号“; ”表示一个语句结束三、逗号“, ”表示一个语句内部间隔,不结束语句。四、等于号“ =”赋值语句,把等号后面的值赋给等号前的变量中五、加号“ +”整数或小数,则表示值相加;字符串,则表示前后连接。六、加加“ +”表示把符号前的变量值加1,例如:“ i+;”这实际上就是: “ i=i+1;”的简写,表示i 的值加 1七、加等于“ +=”表示把符号后的值加到符号前的变量中。例如“i+=2;”,实际上就是“i=i+2;”的简写,表示i 的值加 2八、双等号“ =”等于号。 用于逻辑判断, 双等号前后值相等,则返回逻辑值 “真 true ”;双等号前后值不相等,则返回逻辑值 “假

7、false”九、叹号等号“!=”不等于号。 用于逻辑判断, 不等号前后值不相等,则返回逻辑值 “真 true ”;不等号前后值相等,则返回逻辑值 “假 false”十、“ && ”逻辑符“并且”十一、“ | ”逻辑符“或者”十二、大括号“”表示函数体。内部为函数体语句。MT4 编程入门(三):自定义变量一、自定义变量在使用前,必须先创建(定义 ),设定变量的类型和名称。创建时可同时赋值,也可以不赋值。名称可以使用中文字符。例:intmark ;创建一个整型变量,变量名为“mark ”。bool是否报警 =true ;创建一个逻辑型变量,变量名为“是否报警”,同时,赋初值“ tr

8、ue ”二、类型和类型定义词自定义变量的基本类型有:1、整形 (int) :就是整数,包括负整数2、双精度小数 (double) :可以简单地理解为带小数位的数3、字符串型 (string) 。4、逻辑型 (bool) :其值分别为“ true 、 false”,即“真、假” ,也可以写成“1、 0”( 1 真, 0 假)。类型定义词仅在创建变量时使用,后面使用变量时,就不能再加类型定义词了三、附加变量附加变量就是在程序投入使用后,变量值允许用户自由更改的变量,一般用作程序参数。一般指标,例如MACD(12,26,9) 参数输入就是通过附加变量实现,(12,26,9) 分别为三个附加变量的默认

9、值。定义附加变量只需在变量定义语句前加“extern ”例:extern int周期 =9;创建一个整型附加变量,变量名为“周期”,默认值为9,允许用户在程序外部修改参数值MT4 编程入门(四):自定义函数自定义函数与数学函数在本质上是一致的例如:数学函数ft(x,y)=3x+2y (x,y 为正整数 ) 写成程序语句就是:int ft(int x,int y)int temp;temp=3*x+2*y;return(temp);一、和自定义变量一样,自定义函数在使用前,也必须先设立,以定义其类型、名称、参数和运算语句。函数类型、名称、参数位于函数头部 (参数间以逗号分隔 ),大括号中的是运算

10、语句,也就是函数体部分。return 语句为函数结束语句,return 后面括号中的值为函数返回值,即函数运算结果。上例中,int为函数类型,表示该函数的返回值(运算结果)是整数;(x,y) 为参数,由于自定义变量使用之前都必须先创建,所以要加上类型定义词ft 为函数名,有了函数名,我们就可以在别处用ft(2,1) 的形式来调用此函数;int函数体部分有三句:第一句,定义一个整形变量temp第二句,计算temp 的值第三句,函数结束,返回调用点,以此函数也可以简写为:int ft(int x,int y)temp 的值作为本函数返回值。return(3*x+2*y);二、函数类型与类型符函数类

11、型就是函数返回值 (运算结果 )的类型,与自定义变量类型差不多有整型 (int) 、双精度型 (double) 、字符串型 (string) 、逻辑型 (bool) 等,还有一种函数是以函数运行为目的,运行结束后不需要返回值也没有返回值的,则函数类型可以写成void( 无值型 )三、函数中如果定义了自定义变量,那么此变量仅在本函数内部存在,函数运行结束时,自定义变量也就自动注销。上例中,有 x、 y、 temp 三个自定义变量,在函数运行时创建,在函数运行结束时自动消失,仅在函数内部有效,与函数外部无关。四、函数的调用函数调用非常简单,只要函数名正确、参数个数一致、类型相同就能正确调用如我们前

12、面创建了ft(x,y) 函数,则别处我们可以用ft(4,5) 等样式来调用ft(x,y) 函数求值。调用时,传递参数值给 ft(x,y) 函数 (按顺序把 4 传给 x,把 5 传给 y),返回结果 22 后继续执行主程序。 MT4 编程入门 (五 ):自定义数组一、数组是一系列同类型变量的集合,可以同时存储多个数值。例: int aa4=4,3,2,1;这是一个数据名为aa、包含了4 个元素的整数型数组(即数组长度为4),可以同时存储4 个数值。二、自定义数组也必须“先建立,后使用”创建 (定义 )时,必须设定类型和名称。创建 (定义 )时,数组的元素个数也可以设定,也可以不设定数组中第一个

13、元素的编号为 0,第二个为 1,以此类推。编号使用方括号括起来在这上例中 aa0 的值为 4、 aa1 的值为 3、 aa2 的值为 2、 aa3 的值为 1创建 (定义 )数组的同时,可以赋初值,也可以不赋初值。例:int bb;创建数组bb,不设定数组元素个数int cc8;创建数组cc,设定数组元素为8 个,不赋初值int dd3=9,8,7;创建数组dd,设定数组元素为4 个,并赋初值赋值后, dd0 的值为 9、 dd1 的值为 8、 dd2 的值为 7int ee9=0,1,2,3;创建数组ee,设定数组元素为9 个,但只给前4 个元素赋初值三、数组使用时的赋值数组的赋值必须指定明

14、确的赋值对象,除了新建数组时可以批量赋值外,数组元素必须一个一个赋值例如: dd2=1 ;这是对数组dd 的第 3 个元素 dd2 ( 0 是第 1 个, 2 表示第 3 个)重新赋值为1在这里,没有整数型变量定义符int ,这样,数组dd 原有三个值 9,8,7 就变为 9,8,1四、数组的引用数组只是一系列变量的集合,所以每次只能使用数组中的一个元素。数组的引用必须指定明确的引用对象,一次只能引用一个。如果需要使用整列数组,则必须逐个使用。例如:数组aa4 的值为 4,3,2,1我们用 aa 来引用数组aa 中的值当 i=0 时, aai 的值为 4 当 i=1 时, aai 的值为 3

15、当 i=2 时, aai 的值为 2 当 i=3 时, aai 的值为 1MT4 编程入门 (六 ):市场数据取值一、预定义数组(MT4 已经定义好的,可以直接使用)开盘价、最高价、最低价、收盘价、成交量等历史数据,每根K 线蜡烛都各有一个,所以必须用数组来解决问题,有几个预定义数组:开盘价 Open 、最高价 High 、最低价Low 、收盘价close 、成交量Volume 、所属时间Time类型为双精度double 型(即精确小数)MT4这里有一个位置的问题,右边第一根K 线蜡烛(即最新的蜡烛)的编号为0,第二根蜡烛编号1,第三根蜡烛编号2,也就是说从右向左倒着数过去。Open0 、 H

16、igh0 、 Low0 、 Close0 ,表示最新的开盘价、最高价、最低价、收盘价Open1 、 High1 、 Low1 、 close1 ,表示第2 根 K 线蜡烛的开盘价、最高价、最低价、收盘价Open2 、 High2 、 Low2 、 close2 ,表示第3 根 K 线蜡烛的开盘价、最高价、最低价、收盘价Open3 、 High3 、 Low3 、 close3 ,表示第4 根 K 线蜡烛的开盘价、最高价、最低价、收盘价Open、 High、 Low、 close,表示第i+1 根 K 线蜡烛的开盘价、最高价、最低价、收盘价以此类推。注意:这些是数组,用的是方括号。二、预定义变量

17、买入价、卖出价是实时价格,MT4 用预定义变量Ask 和 Bid 表示,数值类型为double 双精度还有一些预定义变量,如:Bars 表示图表中的蜡烛数,类型为int 整数型Digits 表示当前货币对的小数位,类型为int 整数型,无日元币对为4,有日元币对为2,黄金石油等一般也为Point 表示当前货币对的点值,类型为双精度double 型,无日元币对为0.0001,有日元币对为0.01。与 Digits2正好相反。三、指标函数1、价格、成交量、时间它们都有三个参数:货币对名、K 线周期、位置序号开盘价: iOpen(symbol,timeframe,shift)双精度 double 型

18、收盘价: 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 线周期为: 1 分钟图 (PERIOD_M1)、 5 分钟图 (PERIOD_M5)、15 分钟图 (PERIOD_M15)、

19、30 分钟图 (PERIOD_M30)、1 小时图 (PERIOD_H1)、 4 小时图 (PERIOD_H4)、日线图 (PERIOD_D1)、周线图 (PERIOD_W1)、周线图 (PERIOD_W1)、月线图 (PERIOD_W1)例 :iOpen("USDJPY",PERIOD_H1,0)表示美元兑日元1 小时图最新 K 线蜡烛的开盘价iClose("EURUSD",PERIOD_H4,2)表示欧元兑美元4 小时图第3 根 K 线蜡烛的收盘价iClose("GBPUSD",PERIOD_H1,i)表示英磅兑美元1 小时图第i

20、+1 根 K 线蜡烛的收盘价iHigh(NULL,0,0)既不指定商品 ,也不指定 K 线周期 ,用在谁就是谁 ,用在哪就是哪2、移动平均值。双精度double型iMA(symbol, timeframe, period, ma_shift, ma_method, applied_price, shift)参数共 7 个,分别为:商品名称、K 线周期、均线周期、均线偏移、平均模式、价格种类、位置均线周期: 10 天平均线的均线周期为10, 20 天均线的均线周期为 20均线偏移:均线位置整体左右移动的位置偏移量平均模式:简单移动平均(MODE_SMA) 、指数移动平均 (MODE_EMA)、平

21、滑移动平均线(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 线所对应位置的值例 2: iMA(NULL,0,20,0,MO

22、DE_EMA,PRICE_CLOSE,2)表示:在当前商品、当前K 线周期图表上,以收盘价计算的,20(天 )指数移动平均线第 3 根 K 线所对应位置的值其他如MACD指标、威廉指标、RSI、 SAR、布林线等指标取值都与移动平均线指标相类似3、在数组中求元素的移动平均值。双精度double 型iMAOnArray( 数组名 , 总数 , 平均周期 , 均线偏移 , 平均模式 , 位置 )这也与 iMA 函数差不多,不过数据源变为数组从数组中不但可以求得移动平均值,还可以求得RSI等指标值4、求自定义指标的值我们经常自己编一些自定义指标,可用iCustom函数来取得自定义函数的值iCusto

23、m( 商品名 ,K 线周期 ,自定义指标名称,自定义指标参数1,参数2,参数3,自定义指标线编号,位置 )如果自定义指标只有一根指标线,则自定义指标线的编号为0。如果自定义指标有多根指标线,则第一条自定义指标线的编号为 0,第二条为 1,第三条为例如: iCustom(NULL,0,"mymacd",12,26,9,2,0) (12,26,9) 为自定义指标 mymacd 的三个参数表示:求当前图表中,自定义指标 mymacd(12,26,9) 的第 3 条指标线在最新位置的值2。抛砖引玉,这里只是有代表性地列了几个函数,详细请查阅 MT4 编程入门 (七 ):判断语句MT

24、4 编程手册一、 if 语句if 语句很常用,也比较简单。规则:如果小括号中的条件成立,则执行大括号中的语句;如果不成立,则跳过大括号。例如:if(a=1)b=c+1;我们在编写报警指标的时候,就经常用到这一语句:如果“价格向上达到指定价位”,则“报警”如果“ MACD 上穿”,则“报警”如果“均线金叉” ,则“报警” 。等等例 :int mark=0;if( High1<1.0000 && High0>=1.0000 && mark!=1)Alert(symbol()," 价格向上触及1.0000");mark=1;if( Lo

25、w1>1.0000 && Low0<=1.0000 && mark!=2)Alert(symbol()," 价格向下触及1.0000");mark=2;这是一个价格上、下穿1.0000 时报警的判断语句 :上穿报警条件:当第二根K 线最高价小于1.0000,并且最新K 线最高价大等于1.0000下穿报警条件:当第二根K 线最低价大于1.0000,并且最新K 线最低价小等于1.0000这里 ,mark 是用作报警标记,mark 的初值是0,当上穿报警后,mark 的值就改为1;当下穿报警后,mark 的值就改为2;当 mark=0

26、时 ,说明从未报过警,上、下穿都能报警;当 mark=1 时 ,说明已经上穿报过警了 ,不能再上穿报警了 ,但仍可下穿报警 ; 当 mark=2 时 ,说明已经下穿报过警了 ,不能再下穿报警了 ,但仍可上穿报警。二、 if . else 语句规则:如果小括号中的条件成立,则执行if 下大括号中的语句1;如果不成立,则执行else下大括号中的语句2。if( 条件 )语句1;else语句2;三、注意事项1、只有语句后面才用到语句结束符“;” 条件、大、小括号后面都不用“;”2、语句用大括号括起来,但如果只有一行语句,则大括号可以省略MT4 编程入门if(条件 ) (八 ):循环语句1;一幅 K 线

27、图有几千上万条K 线,每根 K 线又各有开收盘价、最高低价等数值,而且还有很多移动平均线、MACD、 RSI等指标值。面对海量数据,我们必须用循环来实现数据的取值和赋值。一、 while 循环while( 条件 )语句 1语句 2。规则:当小括号中的条件成立时,就执行大括号中的语句,执行完了再判断条件是否成立,如果条件成立就继续执行大括号中的语句。只要条件成立,程序就不停地运行大括号中的语句(循环体 ),直到小括号中的条件不再成立时结束循环。它与 if 语句的区别是:if语句是当条件为真时运行一次;而while语句则是只要条件为真,循环体语句就不停地运行,直到条件为假时结束循环。例:exter

28、n int快线 =12;extern int慢线 =26;double buffer;int i=0;while(i<1000)buffer=iMA(NULL,0, 快线 ,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0, 慢线 ,0,MODE_EMA,PRICE_CLOSE,i);i+;这里,循环执行条件是i<1000,循环体中有两个语句,一句是把两条均线的差值赋给数组buffer ,另一句“ i+;”是每运行一次, i 的值在原有基础上增加 1。这样,随着循环的不断运行,i 的值逐渐增加,循环1000次后, i 的值也就从 0变为 1000 ,此时“

29、i<1000”就不再成立,循环结束。这样,数组buffer 中也就有了1000 个值。二、 for 循环for 循环与 while 循环在原理上是一致的,只是书写格式上有所区别把上面的例子改成for 语句:extern int快线 =12;extern int慢线 =26;double buffer;for(int i=0; i<1000; i+)buffer=iMA(NULL,0, 快线 ,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0, 慢线 ,0,MODE_EMA,PRICE_CLOSE,i);与前面相比,我们注意到:“ int i=0; ”语句从“

30、 while(i<1000) ”上方移到循环条件“i<1000 ”的前面;“ i+;”语句从循环体中移到了循环条件“ i<1000”的后面;循环执行顺序与 while 循环一致:第一步、先执行小括号中的第1 句: int i=0;(此语句用来定义初始变量,在循环中仅执行一次,可以为没有任何表达式的空操作符“;” )第二步、再判断小括号中的第2 句是否成立:i<1000;如果不成立,则循环结束;如果成立,则循环继续运行,执行第三步第三步、按顺序执行大括号中的语句第四步、执行小括号中的第1 句: i+ (此语句即:每执行一次,i 的值增加1)然后回到第二步继续执行循环。再补

31、充一点:如果循环体中(大括号中)只有一行语句,大括号可以省略 MT4 编程入门 (九 ): MT4 自定义指标的结构MT4 自定义指标一般由四个部分构成:(1)文件头部(2)参数、变量和数组的定义(3)初始化函数init()(4)主函数 start()一、文件头部,也称为预处理程序预处理程序以“#”开头,行尾无语句结束符“; ”常用的预处理程序有:1、 #propertyindicator_chart_window把指标显示在主图。如:均线、SRA等类指标用到此语句2、 #property indicator_separate_window把指标显示在副图。如:MACD、 RSI、威廉等类指标

32、用到此语句3、 #property indicator_buffers 3显示 3 根指标线4、 #property indicator_color1 Red第 1 根指标线的颜色为Red5、 #propertyindicator_width11第 1 根指标线的粗细分别为16、 #property indicator_level10.00在 0.00 值位置横划1 条虚线二、参数、变量和数组的定义全局性的参数、变量、数组在此定义,局部变量可在start() 函数中定义三、初始化函数init()init() 在自定义指标加载时运行一次。初始化函数的功能是“设置”。如果自定义指标需要划线,则必然

33、用到此函数四、主函数start()当数据有变动时,start() 就被触发。数据变动一次,自定义指标的编程主要依靠此函数进行。start() 就运行一次。start() 函数的作用主要是取值和给指标线赋值,报警也在此函数内发起。另外,还有一个反初始化函数deinit()deinit() 在自定义卸载时运行一次,可用以去除指标加载时init() 所做的初始化操作。MT4 编程入门 (十 ):画一条指标线要画指标线,只要在程序中写明以下几点就可以了:第一、明确指标线所在窗口,是主图还是副图第二、要建立数组,用以保存指标线在各个位置的值。第三、要建立指标线与数组的对应关系,哪个数组对应哪条指标线第四

34、、要明确指标线的线型,是曲线还是柱线或者是箭头第五、如果指标线是箭头,还要说明是哪种箭头第六、给数组赋值其中:第一、二条写在文件头部中,第三、四、五条写在init() 函数中( init 函数仅在指标加载时运行一次)第六条写在start() 函数中( start 函数在数据发动变动时运行,变动一次运行一次)下面以 MACD 为例说明我们知道, MACD 指标由二条曲线和一组红绿柱线组成。其中:白线是二根均线的差;(下图一)紫线是白线的移动平均线;红绿柱线则是白线和紫线的差,白线上穿紫线,出现红柱,下穿则出现绿柱。我们从简单入手,先去除紫线和红绿柱线,仅保留其中的那根白线,来看白线是怎样画出来的

35、。下面是全部语句:#property indicator_separate_window#property indicator_color1White#property indicator_level10extern int FMA=12;extern int SMA=26;doublebuf;int init()SetIndexBuffer(0,buf);SetIndexStyle(0,DRAW_LINE);return(0);int start()int limit=Bars-IndicatorCounted();for(int i=0; i<limit; i+)buf=iMA(NU

36、LL,0,FMA,0,1,0,i)-iMA(NULL,0,SMA,0,1,0,i);return(0);说明如下:=以下为上述语句的简要说明#property indicator_separate_window指标放在副图#property indicator_color1White第一条指标线为白色#property indicator_level10在副图中零值位置上画一条水平横线,extern int FMA=12;extern int SMA=26;设立二个整数型变量,默认值为12 和 26,允许外部修改值doublebuf;设立一个数组int init()初始化函数。该函数在指标加载

37、时只运行一次。init是系统默认的函数名,但使用时仍需要进行创设,所以要加定义符 intSetIndexBuffer(0,buf);设置数组buf 为第一条指标线SetIndexStyle(0,DRAW_LINE);设置第一条指标线线型为连续曲线return(0);函数结束语句int start()指标触发函数。与init 函数不同,该函数在有数据变化时被触发,如果数据被不断更新,则该函数将不断执行。start也是系统默认的函数名,但使用时也仍然需要进行创设,所以也要加定义符intint limit=Bars-IndicatorCounted();自定义一个变量limit ,并赋值Bars 是

38、图表中的柱数IndicatorCounted() 缓存中的柱数,就是已经计算过的有值的柱数这样 limit 的值就是未经计算的柱数,这样就可以起到优化程序的作用。for(int i=0; i<limit; i+)循环语句。循环从 i=0 开始,每循环一次i 值增加 1,一直循环到i<limit 不满足时结束循环由于循环变量i 为一个新变量,所以要先定义,加上整型变量定义符int下面大括中为循环体,此例中只一条语句buf=iMA(NULL,0,FMA,0,1,0,i)-iMA(NULL,0,SMA,0,1,0,i);给数组 buf 赋值,其值分别为相应位置上两条均线的差i 是水平位置序号值,即烛柱从右到左的序号,右边第一个烛柱序号为0return(0);start 函数结束MT4 编程入门 (十一 ): MT4 的报警报警功能是MT4 的一大特色。它可以在预定的条件达到时,发出警报。与指标画线相比,报警语句显得非常简单,只要在判断语句中加一个报警语句即可报警方式有:弹出窗口报警、音乐报警、邮件报警等。如果邮箱开通了手机短信通知,则邮件报警的内容会即时转发到手机上。1、弹出窗口报警:当 (条件达到 )执行此语句时,以弹出窗口警告。格式: Alert( 内容 1,内容 2,内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论