资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
mt4mt4 编程代码讲解编程代码讲解mt4 编程代码讲解 2009-03-26 09:24:01| 分类: 股市心得 |字号 订阅http:/www.onefx.net/bbs/thread-31749-1-1.html1、打开 MetaEditor (如何打开自己想办法)呵呵,如果这个都打不开,拜托下面的也不用看了。也许你不适合研究这个。2、选择文件新文件 打开文件创建页面。3、选择第二项 客户指标 然后点下一步。注:这个页面可以创建 6 种文件。我们常用的有 客户指标 ,脚本 , 智能交易系统三种。我们先从指标开始。4、输入名字,作者等等。 (支持中文)暂时不添加参数。注:这个位置可以添加用户变量以后讲解。5、下一步 我们先建一个主窗口指标 所以这个页面什么都不用操作注:这个位置可以添加指标“线” 。以后提及。6、点击完成。ok 新的指标文件生成了。但还没有任何有用的代码。初始化代码齐全。/+-+/| MT4指标编辑.mq4 |/| ldj |/| http:/www.metaquotes.net |/+-+#property copyright “ldj“#property link “http:/www.metaquotes.net“#property indicator_chart_window/+-+/| Custom indicator initialization function |/+-+int init()/- indicators/-return(0);/+-+/| Custom indicator deinitialization function |/+-+int deinit()/-/-return(0);/+-+/| Custom indicator iteration function |/+-+int start()int counted_bars=IndicatorCounted();/-/-return(0);/+-+第一部分 指标注释 只是一个说明,有没有都不影响指标运行。这部分中前面的 “/” 两个斜线 说明后面的是注释语句,不参与实际运行。第二部分 预处理语句 这部分规定了指标的窗口性质。#号表示后面是预处理语句。property 的意思是定义 mt4 内部变量的性质。变量名是 mt4 定义好的只能用固定的变量名。例如:版权变量 copyright 链接变量 link 以及指标窗口类型变量indicator_chart_window 等等。其中窗口类型变量有 indicator_chart_window(主窗口)indicator_separate_window(副窗口)两个这里只能用一个不能两个同时用这部分内容一般不需要修改。第三部分 初始化函数(加载函数),这个函数中的代码只在只在指标(EA)加载的时候执行一次。用于对一些变量的初始化。去初注释函数体为/+-+/| Custom indicator initialization function |/+-+int init()/- indicators/-return(0);第四部分 主函数,每当价格变化时就调用执行一次。主要执行代码都在这里。/+-+/| Custom indicator iteration function |/+-+int start()int counted_bars=IndicatorCounted();/-/-return(0);第五部分 子函数。有些指标和 EA 含有子函数。以 MACD 指标为例说明:IndicatorBuffers(3);/定义缓冲区的数量最多八个。因为这个指标只需要三个主缓冲区。所有这个有无都可以。有些需要辅助数组就需要定义这个。以后用到的时候再提起。SetIndexStyle(0,DRAW_LINE,0,1);/定义指标的显示形式。DRAW_LINE 标示画线指标。看下这个内置函数的定义SetIndexStyle( int index, int type, int EMPTY, int width=EMPTY, color clr=CLR_NONE)index:索引号。0 就是第一个指标线 1 就是第二个指标线。type: 指标类型 下面是可选参数都是 MT4 的标准常量。DRAW_LINE = 0 画线DRAW_SECTION = 1 画线段DRAW_HISTOGRAM = 2 画柱状图DRAW_ARROW = 3 画箭头符号(需要设置符号代码)DRAW_ZIGZAG = 4 画锯齿图DRAW_NONE = 12 不画图style:指标线型 04 的选择。也可以不要,默认为 0。Width:指标线宽 15 的选择。也可以不要,默认为 1。clr: 指标颜色 一般用#property indicator_color1 White 语句定义。前面定义了所以我们这里没有定义。SetIndexBuffer(0,Buffer1);/为定义的指标变量数组标记索引号。就是使他们一一对应。0 号索引对应 Buffer1变量。依此类推IndicatorShortName(“MACD(“+Fast+“,“+Slow+“,“+Signal+“)“);/设置指标显示的名称,内容是用+号连接的字符串。就是当鼠标放在指标上所看到的指标名称。与文件名不相关。SetIndexLabel(0,“MACD_MAIN“);/设置指标的标记。就是当鼠标放在指标线上显示的第三行的名称。这条语句的意思是 0 号索引对应的指标变量标记是 MACD_MAIN。其他类推。IndicatorDigits(Digits+2);/定义指标的小数点位数数值是整数。这里 Digits 是 MT4 的预定义变量。其值为当前货币兑的小数位。1、int limit,counted_bars=IndicatorCounted();/定义两个整形变量,并给 counted_bars 变量负值。这里面 IndicatorCounted()函数是 mt4 内置函数不需要参数,其返回值为已经计算过的指标数组数量。如果指标错误则这个函数会返回一个负数。2、if(counted_bars0) counted_bars-;/从已经计算的指标中去除最后一条。这条语句用来修正 counted_bars 使得已经计算的最后一个数值可以在接下来的运算中重新计算一次。4、limit=Bars-counted_bars;/计算需要计算的指标数据的柱数。这里需要说明。在 mt4 中指标数组的索引和 K 线的索引标记相同,是从后向前递增的从 0 开使的整数。也就是说,最后一条 K 线的索引是 0 同时 K 线所对应的指标索引也是 0。那么倒数第 2 条的索引标记为 1。倒数第三条的索引标记为 2。这一点一定要理解清楚。不然写程序的时候就会发生错误。语句中的 Bars 是 mt4 预定义变量,其值是当前图表中 K 线的条数。这里详细说下为什么有个 counted_bars-;的语句,这个语句的意思是对变量 counted_bars 进行自减一操作。因为主函数是每次价格变动就会运行一次。当运行完成后。IndicatorCounted()值应该等于 Bars 也就是 K 线的条数如果没有上面的自减一操作,那么当价格变动有了新的收盘价但并没有生成新的 K 线。这时候计算 limit 的值将=0.那么下面的 for 循环体将不会再计算最后一条 k 线相对应的指标数值。实际上这个是需要计算的(因为有了新的收盘价) 。而有了自减一的操作就可以对最有一个,也就是当前 K 线对应的指标值进行运算。(不知道能看明白不自己慢慢捉摸捉摸) 。这个自减一是必需的。5、for(int i=0; iBuffer2 if (Buffer1Buffer2
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号