您好,欢迎访问三七文档
1第一篇创建新文件1、打开MetaEditor(如何打开自己想办法)呵呵,如果这个都打不开,拜托下面的也不用看了。也许你不适合研究这个。:lol2、选择文件--新文件打开文件创建页面。3、选择第二项客户指标然后点下一步。注:这个页面可以创建6种文件。我们常用的有《客户指标》,《脚本》,《智能交易系统》三种。我们先从指标开始。4、输入名字,作者等等。(支持中文)暂时不添加参数。注:这个位置可以添加用户变量以后讲解。5、下一步我们先建一个主窗口指标所以这个页面什么都不用操作注:这个位置可以添加指标“线”。以后提及。6、点击完成。ok新的指标文件生成了。但还没有任何有用的代码。初始化代码齐全。呵呵!下一篇继续。新建文件的样子和各功能区。1.//+------------------------------------------------------------------+2.//|MT4指标编辑.mq4|3.//|ldj|4.//||5.//+------------------------------------------------------------------+6.#propertycopyrightldj7.#propertylink|Customindicatorinitializationfunction|12.//+------------------------------------------------------------------+13.intinit()14.{15.//----indicators16.//----217.return(0);18.}19.//+------------------------------------------------------------------+20.//|Customindicatordeinitializationfunction|21.//+------------------------------------------------------------------+22.intdeinit()23.{24.//----25.26.//----27.return(0);28.}29.//+------------------------------------------------------------------+30.//|Customindicatoriterationfunction|31.//+------------------------------------------------------------------+32.intstart()33.{34.intcounted_bars=IndicatorCounted();35.//----36.37.//----38.return(0);39.}40.//+------------------------------------------------------------------+复制代码上面的就是刚刚新建的一个指标文件。第一部分指标注释只是一个说明,有没有都不影响指标运行。1.//+------------------------------------------------------------------+2.//|MT4指标编辑.mq4|3.//|ldj|4.//||35.//+------------------------------------------------------------------+复制代码这部分中前面的“//”两个斜线说明后面的是注释语句,不参与实际运行。第二部分预处理语句这部分规定了指标的窗口性质。如下:1.#propertycopyrightldj2.#propertylink复制代码#号表示后面是预处理语句。property的意思是定义mt4内部变量的性质。变量名是mt4定义好的只能用固定的变量名。例如:版权变量copyright链接变量link以及指标窗口类型变量indicator_chart_window等等。其中窗口类型变量有indicator_chart_window(主窗口)indicator_separate_window(副窗口)两个这里只能用一个不能两个同时用这部分内容一般不需要修改。第三部分初始化函数(加载函数)1.//+------------------------------------------------------------------+2.//|Customindicatorinitializationfunction|3.//+------------------------------------------------------------------+4.intinit()5.{6.//----indicators7.//----8.return(0);9.}复制代码这个函数中的代码只在只在指标(EA)加载的时候执行一次。用于对一些变量的初始化。去初注释函数体为1.intinit()42.{3.return(0);4.}复制代码第三部分卸载函数1.//+------------------------------------------------------------------+2.//|Customindicatordeinitializationfunction|3.//+------------------------------------------------------------------+4.intdeinit()5.{6.//----7.8.//----9.return(0);10.}复制代码当去初指标(EA)的时候执行一次。用于去除一些控件。去除注释函数体为1.intdeinit()2.{3.return(0);4.}复制代码第四部分主函数,每当价格变化时就调用执行一次。主要执行代码都在这里。1.//+------------------------------------------------------------------+2.//|Customindicatoriterationfunction|3.//+------------------------------------------------------------------+4.intstart()5.{56.intcounted_bars=IndicatorCounted();7.//----8.9.//----10.return(0);11.}复制代码第五部分子函数。有些指标和EA含有子函数。我习惯写在后面。不知道我说得清楚不。今天我们做一个双线MACD(带柱线)代码部分!后面的帖子逐条语句分析1.//+------------------------------------------------------------------+2.//|macdvsmacd[1]|3.//+------------------------------------------------------------------+4.#propertyindicator_buffers35.#propertyindicator_separate_window6.#propertyindicator_color1White7.#propertyindicator_color2Red8.#propertyindicator_color3Silver9.//----buffers10.doubleBuffer1[];11.doubleBuffer2[];12.doubleBuffer3[];13.externintFast=10;14.externintSlow=22;15.externintSignal=7;16.//+------------------------------------------------------------------+17.//|Customindicatorinitializationfunction|18.//+------------------------------------------------------------------+619.intinit()20.{21.//----indicators22.//IndicatorBuffers(3);23.SetIndexStyle(0,DRAW_LINE,0,1);24.SetIndexStyle(1,DRAW_LINE,0,1);25.SetIndexStyle(2,DRAW_HISTOGRAM,0,1);26.SetIndexBuffer(0,Buffer1);27.SetIndexBuffer(1,Buffer2);28.SetIndexBuffer(2,Buffer3);29.IndicatorShortName(MACD(+Fast+,+Slow+,+Signal+));30.SetIndexLabel(0,MACD_MAIN);31.SetIndexLabel(1,MACD_SIGNAL);32.SetIndexLabel(2,MAIN-SIGNAL);33.IndicatorDigits(Digits+2);34.//----35.return(0);36.}37.//+------------------------------------------------------------------+38.//|Custorindicatordeinitializationfunction|39.//+------------------------------------------------------------------+40.intdeinit()41.{42.return(0);43.}44.//+------------------------------------------------------------------+45.//|Customindicatoriterationfunction|46.//+------------------------------------------------------------------+47.intstart()48.{49.intlimit,counted_bars=IndicatorCounted();50.//----checkforpossibleerrors751.if(counted_bars0)return(-1);52.//----lastcountedbarwillberecounted53.if(counted_bars0)counted_bars--;54.limit=Bars-counted_bars;55.//----mainloop56.for(inti=0;ilimit;i++)57.{58.Buffer1[i]=iMACD(NULL,0,Fast,Slow,Signal,PRICE_CLOSE,MODE_MAIN,i);5
本文标题:实用MT4编程教学
链接地址:https://www.777doc.com/doc-3266570 .html