正规MT4外汇交易_MT4编程开发实战系列:画图系列

作者:MT4 发布时间:2021-09-22 15:03

第一节  若何绘程度线取垂曲线


那是MT4编程开辟真战系列的第一站,咱们先去教习一高若何正在MT4图表长进止根本的绘图操作。

正在起头入手以前,起首道一个很根本也很首要的观点:正在MT4体系中,图表的标的目的是从左到右的,举例说:正在一个记实有以后图表每一根K线地位的数组中,第一个数值暗示的是图表最右侧、也便是以后的K线的数值!

绘图最根本的操作是绘曲线。上面的二个例子将示范若何正在图表上绘一条曲线。

 

一、绘程度线:

起首,正在MetaEditor编纂器中创立一个客户指标文献,名字否以肆意,尔那面便把它定名为Lesson1_DrawLine。

而后,正在此中的start()函数中增加上面的代码:

  1. ObjectCreate("HLine",OBJ_HLINE,0,0,Bid);       //正在图表上绘一条曲线

复造代码

增加终了后,按F5编译代码,而后正在MT4中翻开肆意一弛图表,把编译佳的指标Lesson1_DrawLine增加到图表上,咱们否以望到图表上已经经绘没了一条竖线:

 

 

 

当初去诠释一高下面的代码。

下面的代码应用了ObjectCreate那个函数。

ObjectCreate是一个很是首要的函数,正在前面的绘图学程中会屡次应用到那个函数。

正在下面的例子中,ObjectCreate函数有5个参数,第1个”Hline”是对于您要绘的竖线起一个名字,那个名字是否以肆意的;

第2个OBJ_HLINE是MT4体系默许的一个变质,暗示竖线,意思是奉告体系您筹备绘一条竖线;

第3个参数是0,暗示正在主窗心停止绘图的操作,那面久时不合错误那个参数作具体的阐明,前面尔会博门用一个博题去将绘图窗心的常识;

第4个参数也是0,那个代表的是竖立标(X轴),

第5个参数是Bid,那个是MT4体系默许的一个变质,意义是以后的出卖价。

那面沉点说一高末了二个参数:

正在MT4中,图表的竖立标(X轴)代表时间,擒立标(Y轴)代表代价。

 

2、绘垂曲线:

正在下面的例子中,ObjectCreate函数的末了二个参数0以及Bid便别离代表X轴立标以及Y轴立标,意义是正在Y轴为以后出卖代价之处绘一条竖线(由于曲线为有限少,X立标不意思,以是那面便设成0了)。

大白了那点,再绘条横线便很复杂了。只需把X轴立标设为您念要的数值便可。

例如:尔念正在以后的K线地位上绘条横线,代码以下:

  1. ObjectCreate("VLine",OBJ_VLINE,0,Time[0],0);           //正在图表上绘一条横线

复造代码

Time[]数组是MT4体系默许的一个数组,数组中每一个数值对于应该前图表上每一根K线所处的时间。一样,由于曲线是有限的,Y轴立标此时也失来了意思,咱们便把它设为0佳了。

正在原节的末了,尔弥补阐明一高指标文献的各个构成部份:

当您创立了一个指标文献后,会发明体系已经经自动天生了init()、deinit()以及start()那3个函数。

Init函数是正在始初化的时辰挪用的,也便是增加到图表的共时会执止一次,之后便没有会再执止了;

deinit函数是正在敞开图表或者增除了指标的共时执止一次,次要影响是把该指标制造进去的工具增除了失落;

start函数是主函数,每一次代价变更的时辰,城市执止一次那个函数。


第两节  若何绘卵形取矩形

 

那是MT4编程开辟真战系列的第2站,

正在上一节中,咱们教习了若何行使ObjectCreate函数正在图表上绘曲线。正在那一节中,咱们将持续用ObjectCreate函数正在图表上绘没更多的图形。

有时辰咱们念对于某些时间段的图形用卵形标识进去,上面咱们一块儿去完成如许的一个指标。

 

1、绘卵形:

行使ObjectCreate函数否以不便的正在图表上绘没一个卵形,MQL言语中暗示椭方的常质是OBJ_ELLIPSE。绘一个椭方必要二个立标点,以是,绘一个椭方的根本语句以下:

  1. ObjectCreate(“ellipse”, OBJ_ELLIPSE, 0, x1, y1, x2, y2)

复造代码

新修一个指标文献,定名为”Lesson2_DrawShape_ 1”,而后正在start函数中退出以下语句:

  1. ObjectCreate("ellipse",OBJ_ELLIPSE,0,Time[0],Bid,Time[10],Ask);          //正在图表上绘一个卵形

复造代码

保管文献,按F5编译指标文献,而后把正在MT4中新修一个图表,把Lesson2_DrawShape_1指标增加到图表上,否以望到咱们已经经正在图表上绘没了一个卵形:

 

 

 

诠释一高ObjectCreate函数中的各个参数,

第1个是图形的名字,否以肆意写(健忘了便转头望望第一节);

第2个是MT4体系默许的一个常质,意义是奉告MT4咱们要绘一个椭方;

第3个0是暗示咱们要正在主窗心长进止绘图;

第4个是立标点1的x立标,复杂起睹,尔那面写了Time[0],代表出发点是以后时间(借记患上MT4图表的标的目的是从左到右的吗?);

第5个参数是立标点1的y立标,为复杂起睹,那面尔写了Bid,暗示以后的出卖价;

第6个是立标点2的x立标,Time[10]暗示正在以后图表上从以后时间朝右第10根K线的地位;

第7个是立标点2的y立标,Ask暗示以后的购进价。

椭方已经经绘进去了,颜色似乎不敷醉纲,这咱们应当若何批改已经绘进去的图形的颜色呢?

用ObjectSet函数。例如尔当初念把椭方的颜色改成赤色,否以正在ObjectCreate函数上面增加如许一句:

  1. ObjectSet("ellipse",OBJPROP_COLOR,Red);      //把椭方的颜色改成赤色

复造代码

编译后把指标从新增加到图表上,否以望到椭方已经经变为赤色了:

 

 

 

ObjectSet的第一个参数是图形的名字,意义是奉告MT4尔将要对于”ellipse”那个图形停止批改;

OBJPROP_COLOR那个参数是MT4默许的体系常质,暗示Object的颜色属性,正在前面咱们将会望到,Object借会有不少各类各样的属性,那些属生命名的规定皆是OBJ_XXX如许的,只需把那个常质更改成咱们念要批改的属性就好了;

第3个参数Red是MT4默许的体系常质,暗示赤色,正在MQL言语中,各类颜色均可以间接用它们的英文名称去暗示,很是不便。

椭方的颜色已经经批改佳了,可是年夜小似乎借没有得意,咱们再把它改年夜一点,正在后面代码的根基上再增加一句:

  1. ObjectSet("ellipse",OBJPROP_SCALE,1);      //对于图形停止缩搁

复造代码

编译运转后从新增加到图表上,咱们发明椭方变年夜了:

 

 

 

OBJ_SCALE暗示对于图形停止缩搁,1是缩搁的数值,越小椭方便越年夜,详细效验否以本人批改望望。

 

2、绘矩形:

上面,尔念用一个矩形去替换下面咱们绘进去的椭方,该若何干呢?

很复杂,只需用OBJ_RECTANGLE取代OBJ_ELLIPSE就好了。

上面咱们一块儿入手干。

起首新创立一个指标文献,定名为Lesson2_DrawShape_2,

正在start函数退出以下语句:

  1. ObjectCreate("rectangle",OBJ_RECTANGLE,0,Time[0],iLow(Symbol(),1440,0),Time[10],iHigh(Symbol(),1440,0));

复造代码

编译后运转,而后正在MT4中新修一弛图表,把Lesson2_DrawShape_2指标增加到图表上,否以望到咱们已经经正在图表上绘了一个矩形:

 

 

 

诠释一高下面的代码:咱们用OBJ_RECTANGLE取代了后面的OBJ_ELLIPSE,意义是奉告MT4咱们将要正在图表上绘一个矩形;

Time[0]以及Time[10]别离是立标点1的x轴立标以及立标点2的x轴立标,那个咱们正在后面皆道过了,关头是iHigh以及iLow那二个函数。

iHigh以及iLow皆是MT4自戴的体系函数,iHigh的意义是猎取指定周期的最低价格,

iHigh函数外面有3个参数:Symbol()函数标明用以后图表上的货泉、1440暗示地图、0暗示与当地的最低价。

那面干个弥补,正在MT4编程中,暗示时间周期有二种方式:

一是间接用数字暗示,MT4中的时间单元是分钟,以是您要指定哪一个时间周期,便间接填几多分钟止了,正在下面的例子中,由于1地是1440分钟,以是间接填1440就好了,若是要与1小时图的最下值便填60,30分钟图便填30,如斯类拉。

两是用MT4默许的体系变质,像下面的语句,咱们也能够如许写:

  1. ObjectCreate("rectangle",OBJ_RECTANGLE,0,Time[0],iLow(Symbol(),PERIOD_D1,0),Time[10],iHigh(Symbol(),PERIOD_D1,0));

复造代码

编译进去的指标是同样的,PERIOD_D1是MT4默许的体系变质,暗示周期为地,若是1小时图便是PERIOD_H1,30分钟图便是PERIOD_M30,如斯类拉。

共理,iLow便是与指定周期的最高价;末了一个参数是0,那面暗示与最地图最右侧的K线的最低价以及最高价,即当地的最低价以及最高价;若是改成1,下面的例子便是与昨地的最低价以及最高价了(借记患上MT4图表的标的目的是由左朝右吧?)。

一样,咱们否以用ObjectSet函数把下面绘进去的矩形变为赤色:

  1. ObjectSet("rectangle",OBJPROP_COLOR,Red);

复造代码

3、增除了图形:

当初,咱们把指标Lesson2_DrawShape_2从图表上增除了失落,发明已经经绘进去的矩形并无从图表上增除了,为何呢?

正在MT4中,已经经绘进去的图形默许是没有会随指标一块儿被增除了的,这时候咱们便要用到deinit以及ObjectDelete函数了。

后面说过,deinit函数是正在指标被增除了的时辰挪用的,次要用去干一些清算性的任务,ObjectDelete函数是增除了一个指定的图形对于象,是以,咱们否以正在deinit函数中退出以下代码:

  1. int deinit()
  2.   {
  3. //----
  4.   ObjectDelete("rectangle");
  5. //----
  6.   return(0);
  7.   }

复造代码

ObjectDelete函数中的参数暗示奉告MT4咱们要增除了哪一个图形。



 

第三节  若何创立符号及文字

 

那是MT4编程开辟真战系列的第3站。正在后面二节中,咱们已经经教会了若何行使ObjectCreate函数去绘曲线、椭方以及矩形。但那些皆是很根本的图形,咱们常常能望到一些MT4指标正在图表上绘没了各类各样的符号,很是乏味!

 

1、绘符号:

那末那些符号是若何绘进去的呢?

谜底仍是ObjectCreate函数!由此瞥见ObjectCreate函数正在MT4绘图编程中是何等的首要了吧,便如制物主通常缔造没各类美妙的图形!

上面,咱们一块儿去教习一高,若何用ObjectCreate函数缔造没更多的图形。

起首创立一个指标文献,定名为Lesson3_DrawSymbol_1,而后正在start函数中输出以下代码:

  1. ObjectCreate("arrow",OBJ_ARROW,0,Time[0],Low[0]);

复造代码

编译后增加到图表,会发明咱们已经正在图表上绘了一个向上的箭头:

 

 

 

畴前里二节的教习中,咱们晓得”arrow”是图形的名字,OBJ_ARROW是奉告MT4咱们要绘一个箭头,Time[0]是x轴立标,Low[0]是暗示以后K线的最高价。

那面对于Low[]以及iLow()干一个诠释。Low[]是一个数组,外面贮存了以后周期图表上每一根K线的最高价,

注重了:仅贮存了以后周期的!若是念猎取其它周期的图表上的某根K线的最高价,便要用到iLow函数了。共理,High[]以及iHigh()也是如许区别的,如许诠释,应当很分明了吧?

若是尔念让箭头指向高圆,该怎样干呢?当初,便起头了原节最精美的部份了!

正在方才的代码前面增加以下一句:

  1. ObjectSet("arrow",OBJPROP_ARROWCODE,242);

复造代码

编译后,会发明图表上的箭头已经经指向高圆了。

弥补一高,教到那面咱们否以发明一个纪律:

创立一个图形,用ObjectCreate,批改一个图形,用ObjectSet。便那么复杂!

正在下面的例子中,最关头的是ObjectSet的第三个参数:242。咱们把242改为67,而后再编译,望望图浮现正在的图形是甚么?是一个年夜拇指向上的手势。改为6八,再编译望望,是一个年夜拇指向高的手势。望到那面,信任年夜野皆晓得怎样归事了吧,出错!只需更改那个参数,便能绘没各类咱们念要的符号了。尔曾经正在前线领过一个中文的MT4编程文档,年夜野否如下载去审查一高,外面有个图形符号代码表,只需将第3个参数改为代码内外里的数值,就能够绘没响应的符号了。上面咱们去干个乏味的测验考试:把MT4外面的各类符号皆推进去校阅阅兵一遍!

起首新修一个指标文献,定名为Lesson3_DrawSymbol_2,而后正在start函数中输出以下的代码:

  1. int start()
  2.   {
  3.   int counted_bars=IndicatorCounted();
  4.   int i;
  5. //----
  6.   for(i=0;i<257;i++)
  7.   {
  8.     ObjectCreate("arrow"+i,OBJ_ARROW,Time[i],Low[i]);
  9.     ObjectSet("arrow"+i,OBJPROP_ARROWCODE,i);
  10.   }
  11. //----
  12.   return(0);
  13.   }

复造代码

编译后把Lesson3_DrawSymbol_2指标增加到图表上,望到了甚么?出错,一切MT4收持的图形符号皆跑进去了!

 

 

 

正在下面的代码中,尔用了一个轮回,从以后K线朝右数257根K线,正在每一根K线的最高价地位绘一个符号。为何是257呢?您否以把那个数字改年夜一点,会发明之后一切的图形符号皆是同样的了,那阐明MT4收持的图形符号便是到257为行了。

 

2、写文字:

教完了后面的例子后,尔信任不少敌人皆能正在图表上随便绘没本人念要的各类图形以及符号了,那末假设念正在图表上退出一些文字呢?那个答题是入门MT4编程的敌人常常提没的一个答题,谜底仍是用ObjectCreate以及ObjectSet那对于合营患上浑然一体的函数去完成!

正在MT4图表上增加文字,有二种方式,一种是用Co妹妹ent函数,错误谬误是只可正在图表的右上角增加,且不克不及对于文字的各类个性整合,如年夜小、颜色等;另一种便是咱们上面将要教到的方式,用ObjectCreate函数去创立。ObjectCreate函数否以创立二品种型的文字,一种是OBJ_TEXT,一种是OBJ_LABEL。那二品种型的区分:OBJ_TEXT因此时间以及代价作为立标的,且否以设置隐示角度;OBJ_LABEL因此以后图表否视区域的绝对地位作为立标的,且不克不及整合隐示角度。上面咱们用例子去添深懂得。

新修一个指标文献,定名为Lesson3_DrawText_1,正在start函数输出以下代码:

  1.   ObjectCreate("text",OBJ_TEXT,0,Time[0],High[0]);
  2.   ObjectSetText("text","Hello World!",10,"Arial",Red);

复造代码

编译后增加Lesson3_DrawText_1指标到图表:

 

 

 

若是尔念让”Hello World!”以取程度线成30度的角度隐示,该若何干呢?正在下面的代码前面增加一句:

  1. ObjectSet("text",OBJPROP_ANGLE,30);

复造代码

从新编译后效验以下:

 

 

 

行使ObjectSet函数去整合隐示文字的角度属性:OBJPROP_ANGLE,30暗示30度。

既然已经经有OBJ_TEXT了,为何MT4中借要再多一个OBJ_LABEL呢?

关头便是二者的立标性子差别。OBJ_TEXT的立标是时间以及代价,而OBJ_LABEL的立标因此以后否视区域的绝对地位作为立标。

当您挪动图表的时辰,会发明用OBJ_TEXT创立的文字的地位会跟着图表的挪动而变革,但用OBJ_LABEL创立的文字则一直没有变,除了非您更改了屏幕辨别率它才会变革,当您念创立一些一直隐示正在某个牢固地位的文字时,用OBJ_LABEL;若是念正在某个牢固的代价或者时间地位隐示文字,用OBJ_TEXT。

因为精神所限,尔便再也不示范OBJ_LABEL的应用方式了,年夜野否以参考扶助文档去应用,记住立标的性子差别就好了。


第四节  若何绘直线

 

那是MT4编程开辟真战系列的第4站。正在后面3节咱们别离教习了曲线、椭方以及矩形、文字及符号的创立方式,此次咱们要教习一高若何正在图表上创立直线。

尽管MT4中已经经自戴了不少直线类型的指标,如各类差别的均线、布林戴等等,但常常有些敌人借必要创立一些本人独占的直线,体系自戴的指标已经经没法知足需供,这时候咱们便必要经由过程MT4编程去开辟本人的直线指标了。

上面咱们一块儿经由过程真例去教习若何绘直线。假如尔当初念把图表上每一根K线的中心部份(即最低价取最高价之以及的均值)用一条直线连贯起去。

起首创立一个新的指标文献,定名为Lesson4_DrawCurve_1。正在指标文献的起头部份,增加以下语句:

  1. #property indicator_chart_window
  2. #property indicator_buffers 1
  3. #property indicator_color1 Red
  4. Double ExtMapBuffer[ ];

复造代码

下面代码的末了里三举动咱们增加的语句。而后正在init函数内增加以下语句:

  1. int init()
  2. {
  3. //-----indicators
  4. SetIndexStyle(0,DRAW_LINE);
  5. SetIndexBuffer(0,ExtMapBuffer);
  6. //-----
  7. return(0);
  8. }

复造代码

正在start函数内增加以下语句:

  1. int start()
  2. {
  3. int counted_bars=IndicatorCounted();
  4. int cnt;
  5. //----
  6. if(counted_bars>0) counted_bars--;
  7. int limit=Bars-counted_bars-1;
  8. for(cnt=0;cnt<limit;cnt++)
  9. {
  10. ExtMapBuffer[cnt]=(High[cnt]+Low[cnt])/2;
  11. }
  12. //-----
  13. return(0);
  14. }

复造代码

编译后,将Lesson4_DrawCurve_1指标增加到图表上,会望到咱们已经创立了一条赤色的直线,将图表上每一根K线的中心部份连贯了起去:

 

 

 

上面去诠释一高下面代码的意义。起首咱们正在指标文献的起头部份拔出了3条语句,后面二条别离是:

#property indicator_buffer 1的意义是原指标将应用一个指标慢存(最多只可有八个指标,编码是从0至7);

#property indicator_color Red的意义是创立的指标将用赤色隐示。#property的意义是给指标文献增加一个编译参数(注:因为那些工具波及到步伐开辟中比力业余的部份了,原学程的大旨是“真用为主”,以是尔将没有会对于一些太甚业余的部份停止深化讨论,只要晓得应当如许干就好了。

假设您念创立二条直线,则否以写成:#property indicator_buffer 2;假设念改动直线的颜色,则否以把Red数值改成其它颜色,如Yellow、Green等。

正在增加了二个编译参数后,咱们借创立了一个double类型的数组ExtMapBuffer[],那个数组的影响是贮存每一根K线中心部份的数值,绘图的时辰便凭据那个数组外面的数值去绘。

正在init函数中,咱们用到了SetIndexStyle以及SetIndexBuffer那二个MT4中的体系函数。SetIndexStyle的意义是设置咱们要绘的图形的类型,SetIndexStyle中的第一个参数0,暗示咱们要对于第一个指标的样式停止设置,正在MT4中,最多只可设置八个指标,编码是从0起头至7竣事;第两个参数DRAW_LINE是MT4默许的体系变质,意义是奉告MT4咱们将要正在图表上绘线。若是咱们当初念正在每一根K线的中心部份绘个箭头,该若何干呢?用DRAW_ARROW替代DRAW_LINE就好了,替代后的效验以下:

 

 

 

方才咱们绘进去的直线是一条间断的直线,若是尔念绘一条虚线该若何干呢?给SetIndexStyle添加一个参数就好了,当初咱们把SetIndexStyle函数改写为以下如许:

  1. SetIndexStyle(0,DRAW_LINE,STYLE_DASH);

复造代码

编译后从新增加到图表上,会发明当初的直线已经经是一条虚线了。

 

 

 

共理,若是用STYLE_DOT替代STYLE_DASH,就能够绘外汇启户勾当没一条由点构成的直线了,更多的类型年夜野否以经由过程查找编程文档得到。

当初,假设咱们感觉直线太细了,念添精该怎样干呢?这时候便必要给SetIndexStyle函数添加第4个参数了:

  1. SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,4);

复造代码

SetIndexStyle的第4个参数4,意义是把直线的严度设置为4(从1起头,最年夜为5)。

末了,假设念把方才绘的线更改一高颜色,否以用到SetIndexStyle的第5个参数,像上面那句:

  1. SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,4,Blue);

复造代码

末了一个参数Blue的意义是把直线的颜色改成蓝色。



 

第五节  若何创立警报

 

正在后面几节,咱们教习了MT4编程开辟中绘图圆里的一些根基常识,此次咱们去教习一高若何正在MT4编程中使用报警功用。

年夜野皆晓得,外汇市场是24小时没有连续的,而人的精神是无限的,那末,正在劳动的时辰若是价位达到了本人的方针价位,这时候候该怎样办呢?谜底是行使MT4的警报功用。正在MT4仄台上若何设置警报那面便没有胪陈了,详细否参照扶助文档,那面说一高若何经由过程编程去完成。

起首,咱们去完成一个最复杂的指标:当代价达到指订价位时,停止报警。

新创立一个指标文献,定名为:Lesson5_Alert_1。

正在步伐头部退出以下一句:

  1. #property indicator_chart_window
  2. Extern double Price;

复造代码

第两句为咱们增加的语句。Extern的意义是Price为一个内部变质,否以正在指标运转时代动静停止批改。

而后正在start函数中退出以下语句:

  1. int start()
  2. {
  3. int counted_bars=IndicatorCounted();
  4. //----
  5. if(Bid==Price)
  6. Alert(“达到指订价位!”);
  7. //----
  8. return(0);
  9. }
  10.  

复造代码

编译后运转,而后把Lesson5_Alert_1指标增加到图表上,并设置佳Price变质,铛铛前的出卖价等于设定的Price代价时,则会弹没以下的报警窗心:

 

 

 

Alert函数的意义是当知足if内设定的前提时,弹没一个警报窗心,把Alert函数内设定的内容隐示进去,共时会收回警报声。

 

若是尔把Lesson5_Alert_1指标共时增加到不少个货泉对于上,那末当指标弹没报警窗心时,尔怎样能力晓得是哪一个货泉对于正在报警呢?这时候便必需为报警内容加上货泉对于的名称了。当初咱们把方才的语句改写以下:

  1. if(Bid==Price)
  2. Alert(Symbol()+“达到指订价位!”);
  3.  

复造代码

从新编译并增加到图表上,铛铛前出卖代价等于Price指定的代价时,将会弹没以下的报警窗心:

 

 

 

否以望到报警窗心内已经经隐示没是哪一个货泉对于正在报警了,那皆是Symbol()函数的功绩,Symbol函数的影响是得到以后指标所正在图表的货泉对于的名称。取Alert函数雷同的另有MessageBox函数,有趣味的敌人否以本人审查扶助文档。

 

当初假想一高,假设一样是EURUSD货泉对于,共时翻开了5分钟图、30分钟图、1小时图,并正在每一弛图上皆增加了Lesson5_Alert_1指标,那末,指标报警韶光着名称借缺乏够了,这时候否把语句改写以下:

  1. if(Bid==Price)
  2. Alert(Symbol()+“正在”+Period()+“分钟图上达到指订价位!”);
  3.  

复造代码

此时,当出卖价达到指订价位后,弹没的报警窗心以下图所示:

 

 

 

Period函数的影响是猎取指标所正在图表的时间周期。



 

附:《MT4》编程的输入方法

 

一、绘图:

MT4言语编程的根本输入方法便是“绘”(动词)。那个“绘“否以绘没最多见的线图,也能够绘没提示用的箭头、柱状图、趋向线等。

决议“绘”的输入样式的函数是: SetIndexStyle

它使用正在咱们后面说过的体系函数init()的内容外面,通常经由过程正在函数init()外面的SetIndexStyle设定,去决议哪一个要绘成线图、哪一个要绘成箭头。

举例:

int init()

  {

IndicatorBuffers(2); //那个函数暗示有二个数组的数值用于绘图

SetIndexBuffer(0,MAUp) ;//暗示后面界说的数组MAUp的数值用于绘第一个指标的图

SetIndexBuffer(1,MADown); //暗示后面界说的数组MADown的数值用于绘第两个指标的图

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2); //参数外面:0暗示设定第一个数组,参数DRAW_HISTOGRAM暗示绘柱状图,参数STYLE_SOLID暗示绘图的样式为真口图,参数2暗示绘徒的线严度为2。

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,1);//参照下面

提示:但凡您没有懂意义的参数或者者函数,将光标挪动到它下面,按F1,则MetaEditor便会给您隐示函数或者者参数的意义以及用法。

 

二、 标识表记标帜文字:

函数为Co妹妹ent(),

应用那个函数否以输入文字到屏幕K线图的右上角。咱们通常用它隐示一些影象性的内容。由于右上好的字体比力小,文字内容的变革不易被发觉到,以是通常不必她去干提示性的功用。

 

三、 弹没窗心报警:

函数为Alert(),

应用那个函数,当运他的时辰,将弹没一个报警窗心,并收回一个急促的警报声响。应用它否以正在知足前提的首要时刻,弹没报警窗心,实时发觉这类变革。
注重:那个函数通常搁正在前提语句知足之后运转,没有要将知足前提设患上很频仍,不然报警窗心常常弹进去比力烦人。另有若是您是对于以后K线入性果断,要注重到一个编成答题,以后K线的代价借正在不绝变更中,每一变更一次皆将执止一次体系函数Start(),是以你的Alert()前提若是是以及以后K线的Close瓜葛紧密亲密的话,正在知足前提后,将会去一个代价便报一次窗心,也很厌恶。

 

四、 文献输入:

MT4否以读与以及写进通常文原文献,是以您否以将一些运转中的首要动静数据经由过程MT4的文献函数写进详细文献中。那些功用使用较长。有趣味的敌人否以间接审查MetaEditor右边扶助栏的File Functions函数分类。

 

五、 对于象:

MT4可使用步伐去缔造很品种型的“对于象”搁正在图表下面,这类功用次要用于将图表服装的加倍大度和标示没更多首要的步伐计较进去的数据,详细用法前面再缓缓说。MT4否以缔造的“对于象”类型以下:

OBJ_VLINE  0  垂曲线,应用第一立标部份时间

OBJ_HLINE  1  程度线,应用第一立标部份代价

OBJ_TREND  2  趋向线,使用2个立标

OBJ_TRENDBYANGLE  3  趋向角度,使用1个立标。使用ObjectSet()功用设置线的角度(角度的趋向线)

OBJ_REGRESSION  4  归回线,使用前2个立标的时间部份

OBJ_CHANNEL  5  通讲,使用3个立标

OBJ_STDDEVCHANNEL  6  尺度偏离通讲,使用前2个立标的时间部份

OBJ_GANNLINE  7  甘氏线,使用2个立标,但第2个立标的代价部份

OBJ_GANNFAN  八  甘氏扇形,使用2个立标,但第两个立标代价部份

OBJ_GANNGRID  9  甘氏网格线,使用2个立标,但第2个立标的代价部份

OBJ_FIBO  10  费波缴切弄通撤归,使用2个立标

OBJ_FIBOTIMES  11  费波缴切周期线,使用2个立标

OBJ_FIBOFAN  12  费波缴切扇形图,使用2个立标

OBJ_FIBOARC  13  费波缴切弧线,使用2个立标

OBJ_EXPANSION  14  费波缴切延铺线,使用3个立标

OBJ_FIBOCHANNEL  15  费波缴切波通讲,使用3个立标

OBJ_RECTANGLE  16  少圆形,使用2个立标

OBJ_TRIANGLE  17  三角形,使用3个立标

OBJ_ELLIPSE  1八  卵形,使用2个立标

OBJ_PITCHFORK  19   安德鲁分叉线,使用3个立标

OBJ_CYCLES  20  方形,使用2个立标

OBJ_TEXT  21  文原,使用1个立标

OBJ_ARROW  22  箭头,使用1个立标

OBJ_LABEL  23  文字标签,使用1个立标



 

杨氏补:若何绘射线取线段

 

一、绘射线:

ObjectCreate("射线名",OBJ_TREND,0,X1,Y1,X2,Y2);

以下语句:

ObjectCreate("X1LINE",OBJ_TREND,0,Time[20],High[20],Time[5],Low[5]);

编译后以下图所示:

 

 


二、绘线段:

方式:正在射线根基上,添以限定“射线=假”添以完成。

以下语句:

外汇赠金开户

ObjectCreate("X1LINE",OBJ_TREND,0,Time[20],High[20],Time[5],Low[5]);

ObjectSet("X1LINE", OBJPROP_RAY, false);//限定射线方法,即线段方法

编译后,以下图所示。