




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MT4 编程初级手册 (2): 指标源码中常用符号得说明一、注释符 : 行注释 :单行得注释使用“ /” ;块注释 :多行得注释使用“ /*/ ”程序不执行注释 ,注释内容仅供阅读或保留不用得语句 ,编译时不进行编译。 在 MQ 语言编辑器中 ,注释内容以灰色显示。二、分号“ ;”语句结束符 ,表示一个语句结束。三、逗号“ ,”分隔符 ,表示一个语句内部间隔 ,不结束语句 ,通常用于变量与变量之间 ,参数之间。四、等于号“ = ”赋值运算符 ,作用为把等号后面得值赋给等号前得变量中。五、加号“ + ”运算符。对于整数或小数 ,则表示值相加 ;对于字符串 ,则表示前后连接。六、加加“ + ”自增
2、运算符,表示把符号前得变量值加1,例如:“ i+; ”实际上进行得运算就就是:“ i=i+1; ”得简写 ,表示把 i 得值加 1。七、加等于“ +=”表示把符号后得值加到符号前得变量中。例如“ i+=2; ” ,实际进行得运算就就是“ i=i+2; ”得 简写 ,表示 i 得值加 2。八、双等号“ =”逻辑判断符,等于号。用于逻辑判断,双等号两边值相等,则返回布尔值“真-true ”;双等号两边 值不相等 ,则返回布尔值“假 -false”。,不等于号。用于逻辑判断,不等号两边值不相等,则返回布尔值“真-true” ;不等号 ,则返回布尔值“假 -false ” 。,“并且”。与”a 4”或
3、者” 。 ”九、叹号等号“ !=” 逻辑判断符 两边值相等 十、“ && ” 逻辑判断符 十一、“ |” 逻辑判断符十二、大括号 用以表示函数体 ,在其中写函数得语句。 内部为函数体语句。MT4 编程初级手册 (3): 自定义变量一、自定义变量在使用前,必须先声明 (定义 ),向系统声明变量得类型与名称。创建时可同时进行赋值 (赋默认值 ),也可以不赋值。 MQ 语法中自定义变量得名称可以使用 中文字符。例子:int flag;创建一个整型变量 ,变量名为“ flag ” 。bool就是否报警=flase;创建一个布尔型变量,变量名为“就是否报警”,同时,赋初值“flase”二
4、、变量类型与类型定义关键词自定义变量得基本类型有 :1、整形 (int): 就就是整数 ,包括负整数 ;2、 双精度浮点数 (double): 可以简单地理解为带小数位得数;3、字符串型 (string);4、布尔型(bool):其值分别为“true、false” ,即“真、假”,也可以写成“1、0” (1真,0假)。 类型定义词仅在创建与声明变量时时候使用,后面使用再变量时 ,如进行运算时 ,就不能再加这些类型定义词了。三、附加变量 (参数 )附加变量就就是在程序完善后投入使用时,变量值允许用户自由更改得变量,一般用作程序参数。一般指标 ,例如 MACD(12,26,9) 参数输入就就是通过
5、附加变量实现得 ,(12,26,9)分别为三个附 加变量值。定义附加变量只需在变量定义语句前加“extern”例:extern int 时间框架 =9; 创建一个整型附加变量 ,变量名为“时间框架”,默认值为 9,允许用户在程序外部修改参数值,或进行参数优化。,在程序中需要用到得地方MT4 编程初级手册 (4): 自定义函数 大家可以将自定义函数与数学函数在本质上瞧作就是就是一致得 直接以函数名来调用。例如 :数学函数 fuc(x,y)=5x+6y (x,y 为正整数 ) 写成程序语句就就是 : double fuc(double x,double y)double temp; temp=5*
6、x+6*y; return(temp);一、同自定义变量一样 ,自定义函数在付诸使用前,也必须先声明设立 ,应定义其返回值类型、名称、参数与函数体 (运算处理语句 )。函数返回值类型、名称、参数位于得函数头部(参数间以逗号分隔 ),大括号中得就是运算语句或者处理语句 ,也就就是函数体部分。return 语句为函数结束语句 ,return 后面得括号中得值为函数返回值 ,即函数运算处理结果。 在上面例子中 ,double 为函数类型 ,表示该函数得返回值 (运算结果 )就是小数 ;x,y 为参数 ,由于自定义变量使用之前都必须先声明,否则函数不知道参数得类型,所以要加上类型定义关键词 doubl
7、e;fa 为函数名 ,有了函数名 ,我们就可以在需要使用得地方用fa (2 , 1 )得格式来调用此函数 ;函数体部分有三个语句 :第一句,定义一个整形变量temP(函数内部使用得变量);第二句 ,用我们设定得规则计算 temp 得值;第三句,函数结束,返回调用点,以 temp得值作为本函数返回值。 此函数也可以简写为 :double fa(double x,double y) return(5*x+6*y);二、函数得类型与类型符函数得类型就就是函数返回值 (运算结果 )得类型 ,与自定义变量类型一致。包括整型(int)、双精度浮点型(double)、字符串型(string)、布尔型(boo
8、l)等, 还有一种函数就是以函数运行或进行一定得处理为目得,运行结束后不需要返回值也没有返回值得 则函数类型可以在声明中写成void(无值型)三、函数中如果需要定义自定义变量,那么此变量作用域仅在本函数内部,函数运行结束时 ,这个自定义变量也就自动注销了。上例中,有x、y、temp三个自定义变量,在函数运行时被声明创建,在函数运行结束得时侯自 动消失 ,仅在函数内部有效 ,与函数外部无关 ,外部不可使用这些变量,需要注意得就是外部可以使用与内部同名得变量但不影响内部得变量,不过为了程序得清晰性 ,不建议大家这么做。四、函数得调用函数调用非常便捷 ,只要函数名正确 ,参数个数一致 ,类型相同就能
9、够正确得调用。如我们前面创建了一个fa(x,y)函数,在程序得别处我们可以用ft(4,5)等样式来调用fa(x,y)函数运算求值。调用时,传递参数值给fa(x,y)函数(按次序把4传给X,把5传给y),返回结果22后继续向下执 行主程序。MT4 编程初级手册 (5): 自定义数组一、数组就是一组同类型变量得集合,可以以一个名称同时存储多个数值,由索引来调用 ,在实现我们 EA 得算法时就是一个非常重要得工具。例:int arrai5=5,4,3,2,1;这就是一个数组名为arrai、包含了 5个元素得整数型数组时存储 5 个数据。二、自定义数组也必须遵循“先声明,后使用”原则声明(创建)时,必
10、须设置类型与名称 ; 声明(创建)时,数组得数据元素个数可以设定也可以不设定 数组中第一个元素得索引编号为0,第二个为 1,以此类推。在这上例中arrai0得值为5、aa1得值为4、aa2得值为 声明(创建)数组得同时 ,可以赋初始值 ,也可以不赋初始值。例:int aa;创建数组aa,不指定数据元素得个数;int bb10;创建数组bb,设定数据元素为10个,不赋给这些数据元素初始值int cc3=3,4,5; 创建数组cc,设定数组元素为2个,并赋给初始值; 赋值后,cc0得值为3、cc1 得值为4、cc2得值为5;int dd7=5,6,7; 创建数组dd,设定数组元素为三、数组使用时得
11、赋值数组得赋值必须指定明确得将要赋值对象得索引 素必须一个一个地赋值。例如 :cc1=5;这个就是对数组 cc 得第 2 个元素 cc1(0 就是第 在这里 ,不需要整数型变量定义符 int, 这样,数组cc原有三个值3,4,5就变为3,5,5四、数组得引用 数组就是一系列相同类型得变量得集合 ,所以每次只能使用数组中得一个元素。 数组得引用必须指定明确得引用对象索引值 ,一次只能引用一个。如果需要使用整列数组则必须逐个使用。在程序中经常使用循环与数组相互配合来完成相应得功能。例如 :数组 arrai5 得值为 5,4,3,2,1我们用数组名称 arrai当当当当(即数组长度 length 为
12、 5),可以同编号使用方括号跟在数组得后面 ;3、aa3得值为2、aa4得值为1、7个,但只给前 3 个元素赋初始值。,除新建数组时可以批量赋值以外 ,数组元1 个,1表示第 2 个)重新赋值为 5。i=0i=1i=2i=3时,aai:时 ,aai 时,aai 时,aai:得值为 得值为 得值为 得值为加索引值来引用数组 arrai 中得值 : 5;4;3;2;当i=4时,aai 得值为1;MT4 编程初级手册 (6): 市场数据取值 一、预定义数组 (MT4 已经预先定义好了得 ,可直接调用 )开盘价、最高价、最低价、收盘价、成交量等市场历史数据 所以必须使用数组来调用 ,MT4 有几个预定
13、义数组 准备好了得 ,EA 得开发者可以直接使用 :预定义数组 :开盘价 Open 、最高价 High 、最低价K 线所属时间 Time 类型为双精度浮点 double 型 (即精确小数 ) 这里有一个引用顺序或位置得问题,从右边起第一根,每根 K 线实体都各自有一个 , ,预定义得意思就就是这些数据都就是被Low 、收盘价 close 、成交量 Volume 、K 线实体 (即最新得 K 线)得索引为 0,第,最近得数值小 ,二根 K 线索引 1,第三根 K 线索引 3,以此类推 ,也就就是说从右向左倒着数过去 而越远得数值越大。Open0 、 High0 、Low0 、Close0, 表示
14、最新得开盘价、最高价、最低价、收盘价Open1、High1、Low1、close1,表示第盘价 (也就就是昨天 );Open2 、 High2 、 Low2 、 close2, 表示第盘价 ;Open3 、 High3 、 Low3 、 close3, 表示第盘价 ;2根 K 线蜡烛得开盘价、3根 K 线蜡烛得开盘价、4根 K 线蜡烛得开盘价、最高价、最高价、最高价、最低价、最低价、最低价、收盘价Open、High、Low、close,表示第i+1根K线蜡烛得开盘价、最高价、最低价、以此类推说明 :这些就是数组 ,用得就是方括号来制定索引值。二、预定义变量买入价、卖出价就是行情数据,MT4用预
15、定义变量Ask与Bid表示,数值类型为double双精度浮点类型。还有一些预定义变量 ,如 :Bars表示图表中得K线数,类型为int整数型;Digits 表示当前货币对得小数位数 ,类型为 int 整数型 ,无日元币对为4(位),有日元币对为2(位),黄金石油等一般也为 2(位);Point 表示当前货币对得点值 (相当于最小变动价位 ),类型为双精度浮点 double 型,无日元币 对为 0、 0001,有日元币对为 0、 01。与 Digits 正好相反。三、指标函数双精度浮点 双精度浮点 双精度浮点 双精度浮点 双精度浮点double 型 ; double 型 ; double 型 ;
16、 double 型 ; double 型 ;日期时间 datetime 型 ; K 线时间框架为 :1 分钟图 (PERIOD_M1) 、5分钟图 (PERIOD_M5) 、15 分钟图 (PERIOD_M15) 、 30 分钟图 (PERIOD_M30) 、1 小时图 (PERIOD_H1) 、4 小时图 (PERIOD_H4) 、日线图 (PERIOD_D1) 、周线图 (PERIOD_W1) 、周线图 (PERIOD_W1) 、月线图 (PERIOD_W1) 。 例: iOpen("EURUSD",PERIOD_H1,0) iClose("USDJPY&qu
17、ot;,PERIOD_H4,2) iClose("GBPUSD",PERIOD_H1,i)1 、价格、成交量、时间 它们都有三个参数 :货币对名 (相当于品种名 )、 K 线时间框架、位置序号。 开盘价 :iOpen(symbol,timeframe,shift) 收盘价 :iClose(symbol,timeframe,shift) 最高价 :iHigh(symbol,timeframe,shift) 最低价 :iLow(symbol,timeframe,shift) 成交量 :iVolume(symbol,timeframe,shift) 所属时间 :iTime(sym
18、bol,timeframe,shift)表示欧元兑美元 1 小时图最新 K 线实体得开盘价 ;表示美元兑日元4小时图第3根K线实体得收盘价; 表示英磅兑美元 1 小时图第 i+1 根 K 线实体得收盘价 ;iHigh(NULL,0,0) 哪就就是哪 ; MT4 编程初级手册 (7): 条件判断语句 一、 if 判断语句if 判断语句很常用 ,使用起来也比较简单。规则 :如果小括号中得条件成立则执行大括号中得语句 得语句。例如 :if(condition=1)a=b+1; 我们在编写报警指标得时候 ,就经常要使用到这一语句 如果“价格向上达到指定价位” ,则“报警” ; 如果“ MACD 指标上
19、穿” ,则“报警” ; 如果“均线指标金叉” ,则“报警” 例:既不指定商品 ,也不指定 K 线周期 ,用在谁就就是谁 ,用在;如果不成立则跳过大括号,执行后面。等等int flag=0;if( Low1>1 、0000 && Low0<=1 Alert(symbol()," 价格向下触及 flag=1;if( High1<1 、0000 && High0>=1 、0000 && flag!=2)Alert(symbol()," 价格向上触及 1、 0000"); flag=2; 这就是一个价
20、格上、下穿 上穿报警条件 :当第二根 下穿报警条件 :当第二根、0000 && flag!=1)1、0000!");1、0000 时进行报警得判断语句 :K 线最高价小于 1、 0000,并且最新 K 线最高价大等于K 线最低价大于 1、 0000,并且最新 K 线最低价小等于1、0000;1、0000。这里 ,flag 就是用作报警标记 ,flag 得初始值就是 0;当上穿报警后 ,flag 得值就变为 1;当下穿报警后 ,flag 得值就改为 2; 当 flag=0 时 ,说明从未报过警 ,上、下穿都能报警 ;,不能再上穿报警 ,但仍可下穿报警 ;,不能再下穿报警
21、 ,但仍可上穿报警。当 flag=1 时 ,说明已经上穿报过警了当 flag=2 时 ,说明已经下穿报过警了 二、 if 、 else 语句if 下大括号中得第一部分语句 ;如果不成立则执行规则 : 如果小括号中得条件成立则执行 else 下大括号中得第二部分语句。if( 判断条件 ) 第一部分语句 ; else 第二部分语句 ; 三、注意事项小括号后面都不用语句结束符“ ;”。),但如果只有一行语句 ,则大括号可以1 、只有语句后面才用到语句结束符“;” 条件、大、2、语句用大括号括起来 (大括号得作用为界定语句块 省略:例如 :if(条件) 语句1;MT4 编程初级手册 (8): 循环语句
22、),每根K线Bar又各有开收盘价、收MACD 、 RSI 等技术指标数值。一幅K线图有几千上万条 K线(Bar,根据设定得样本数盘价、最高低价等数值 ,而且还有很多移动平均线、面对大量得数据 ,我们经常采用循环来实现数据得取值与赋值。下面我们简单来介绍一下 MT4 中主要用到得循环语句。一、 while 循环 while( 判断条件 )语句 1;语句 2;。规则 :当小括号中得判断条件成立时,就执行大括号中得语句,执行完毕后再判断条件就是否成立,如果条件成立就再继续执行大括号中得语句。只要条件成立 ,程序就不停地执行大括号中得语句(循环体 ),直到小括号中得条件不再成立时结束循环 ,while
23、 循环又叫做“当循环” ,意思为当 XX 条件时执行循环。它与 if 语句得区别就是 :if 语句就是当条件为真时只运行一次;而 while 语句则就是只要条件为真 ,循环体语句就不断地运行 ,直到条件为假时结束循环。 所以为了避免造成死循环 ,循环体 内应当对判断得条件进行修改,如进行数值得累加等。例:extern int fast=12;extern int slow=26; double buffered ;int i=0; while(i<1000)buffered= iMA(NULL,0,fast,0,MODE_EMA,PRICE_CLOSE,i) -iMA(NULL,0slo
24、w,0,MODE_EMA,PRICE_CLOSE,i);i+;这里 ,循环执行条件就是i<1000, 循环体中有两条语句 ,一句就是把两条均线得差值赋给数组buffer,另一句“ i+; ”,我们知道“ + ”就是自增运算符,那么每运行一次,i得值在原有基础上 增加1。这样,随着循环得不断地运行,i得值逐渐增加,循环到1000次后,i得值也就从0变为 了 1000,此时“i<1000”就不再成立,循环结束。这样擞组buffered中也就存储了 1000个值。 MT4 编程初级手册 (9):MT4 自定义指标得结构MT4 自定义指标一般由四个部分所组成 :一、文件头部 ,也称为预处理
25、程序预处理程序以“ #”开头 ,行尾无语句结束符“ ;”、 常用得预处理程序有 :1、 #property indicator_chart_window 把指标显示在主图。如 :均线、 SRA 等类指标用到此语句、2、 #property indicator_separate_window 把指标显示在副图。如 :MACD 、RSI 、威廉等类指标用到此语句、3、#property indicator_buffers 3显示 3 根指标线、4、#property indicator_color1 Red 第 1 根指标线得颜色为 Red、1、0、 005、#property indicator
26、_width1 1 第 1 根指标线得粗细分别为6、#property indicator_level1在 0、 00值位置横划 1 条虚线、 二、参数、变量与数组得定义全局性得参数、变量、数组在此定义,局部变量可在startO函数中定义、三、初始化函数 init()init() 在自定义指标加载时运行一次。 、 初始化函数得功能就是“设置” 。如果自定义指标需要划线,则必然用到此函数、四、主函数 start() 当数据有变动时,start()就被触发。数据变动一次,start()就运行一次。自定义指标得编程主要依靠此函数进行。start()函数得作用主要就是取值与给指标线赋值,报警也在此函数内发起。另外 ,还有一个反初始化函数deinit()deinit()在自定义卸载时运行一次,可用以去除指标加载时init()所做得初始化操作。EA 得开发。要画指标线 ,只要在程序中定义指标线所在窗口 ,就是主图还就是副图。 创建数组 ,用以保存指标线在各个位置上得值。 要建立指标线与数组得对应关系(函数关系 ,运算关系 ),哪个数组中得数据对应哪条指MT4 编程初级手册 (10): 一条指标线得实例 我们现在以一个简单得实例来给大家讲述如何进行 写明以下几点就可以了 :第一、第二、第三、标线。第四、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江职业学院《聚合物加工原理与设备》2024-2025学年第一学期期末试卷
- 西安海棠职业学院《道路桥梁工程施工技术》2024-2025学年第一学期期末试卷
- 贵州电子商务职业技术学院《初等数论B》2024-2025学年第一学期期末试卷
- 贵州财经职业学院《第二次世界大战史》2024-2025学年第一学期期末试卷
- 哈尔滨师范大学《线路勘测设计》2024-2025学年第一学期期末试卷
- 辽宁广告职业学院《社会体育指导员基础课程》2024-2025学年第一学期期末试卷
- 重庆工程学院《施工图实训》2024-2025学年第一学期期末试卷
- 喀什理工职业技术学院《数字化建筑环境设计软件基础》2024-2025学年第一学期期末试卷
- 安徽警官职业学院《协议分析及应用》2024-2025学年第一学期期末试卷
- 湖北水利水电职业技术学院《人工智能与机器学习基础》2024-2025学年第一学期期末试卷
- 温硝化制硝基苯装置的改进
- 保教知识与能力幼儿园课件
- 财务部半年度述职汇报PPT模板
- 药品种类清单
- 公共基础知识(社区工作者基础知识)试题(附答案)
- GB/T 37915-2019社区商业设施设置与功能要求
- GB/T 31298-2014TC4钛合金厚板
- 《电业安全工作规程》
- 卡西欧gw5600说明书
- 中兴NGN培训教材 MSG9000结构原理介绍课件
- 穿湖隧道施工组织设计
评论
0/150
提交评论