所以我将不会对一些太过专业的部分进行深入探讨2023/5/27使用mt4MT4编程拓荒实战系列----绘图系列1:怎样画直线编程拓荒实战系列的第一站,咱们先来研习一下怎样正在MT4图外前进行根基的绘图操作。
正在初阶起头之前,起初讲一个很根基也很紧要的观点:正在MT4编制中,图外的偏向是从右到左的,举例说:正在一个记载有如今图外每根K线地位的数组中,第一个数值外现的是图外最右边、也便是如今的K线的数值!
绘图最根基的操作是画直线。下面的两个例子将演示怎样正在图外上画一条直线。起初正在MetaEditor编辑器中创筑一个客户目标文献,名字能够放肆,我这里就把它定名为Lesson1_DrawLine。然后正在此中的start()函数中增加下面的代码:
上面的代码运用了ObjectCreate这个函数。ObjectCreate是一个尽头紧要的函数,正在后面的绘图教程中会众次运用到这个函数。正在上面的例子中,ObjectCreate函数有5个参数,第1个”Hline”是对你要画的横线起一个名字,这个名字是能够放肆的;第2个OBJ_HLINE是MT4编制默认的一个变量,外现横线,事理是告诉编制你计划画一条横线,外现正在主窗口举行绘图的操作,这里眼前过错这个参数作仔细的注脚,后面我会特意用一个专题来将绘图窗口的学问;第4个参数也是0,这个代外的是横坐标(X轴),第5个参数是Bid,这个是MT4编制默认的一个变量,旨趣是如今的卖出价。
间,纵坐标(Y轴)代外价钱,正在上面的例子中,ObjectCreate函数的结尾两个参数0和Bid就区别代外X轴坐标和Y轴坐标,旨趣是正在Y轴为如今卖出价钱的地方画一条横线(由于直线为无尽长,X坐标没存心义,因而这里就设成0了)。认识了这点,再画条竖线就很粗略了。只消把X轴坐标设为你念要的数值即可,比如:我念正在如今的K线地位上画条竖线,代码如下:
正在本节的结尾,我添补注脚一下目标文献的各个构成片面:当你创筑了一个目标文献后,会创造编制仍旧主动天生了init()、deinit()和start()这3个函数。Init函数是正在初始化的岁月挪用的,也便是增加到图外的同时会实施一次,之后就不会再实施了;deinit函数是正在封闭图外或删除目标的同时实施一次,重要效力是把该目标创制出来的东西删除掉;start函数是主函数,每次价钱改动的岁月,都市实施一次这个函数。
这是MT4编程拓荒实战系列的第2站,正在上一节中,咱们研习了怎样诈欺ObjectCreate函数正在图外上画直线。正在这一节中,咱们将接连用ObjectCreate 函数正在图外上画出更众的图形。
有岁月咱们念对某些工夫段的图形用卵形标识出来,下面咱们一块来实行如此的一个目标。
诈欺ObjectCreate函数能够容易的正在图外上画出一个卵形,MQL说话中外现椭圆的常量是OBJ_ELLIPSE。画一个椭圆须要两个坐标点,因而,画一个椭圆的根基语句如下:
新筑一个目标文献,定名为”Lesson2_DrawShape_1”,然后正在start函数中出席如下语句:
个卵形:注解一下ObjectCreate函数中的各个参数,第1个是图形的名字,能够放肆写(忘怀了就回顾看看第一节);第2个是MT4编制默认的一个常量,旨趣是告诉MT4咱们要画一个椭圆;第3个0是外现咱们要正在主窗口前进行绘图;第4个是坐标点1的x坐标,粗略起睹,我这里写了Time[0],代外出发点是如今工夫(还记得MT4图外的偏向是从右到左的吗?);第5个参数是坐标点1的y坐标,为粗略起睹,这里我写了Bid,外现如今的卖出价;第6个是坐标点2的x坐标,Time[10]外现正在如今图外上从如今工夫往左第10根K线的y坐标,Ask外现如今的买入价。
椭圆仍旧画出来了,颜色宛若不足夺目,那咱们应当怎样点窜已画出来的图形的颜色呢?用ObjectSet函数。比如我现正在念把椭圆的颜色改为血色,能够正在ObjectCreate函数下面增加如此一句:
ObjectSet的第一个参数是图形的名字,旨趣是告诉MT4我将要对”ellipse”这个图形举行点窜;OBJPROP_COLOR这个参数是MT4默认的编制常量,外现Object 的颜色属性,正在后面咱们将会看到,Object还会有许众各样各样的属性,这些
属人命名的准则都是OBJ_XXX如此的,只消把这个常量更改为咱们念要点窜的属性就行了;第3个参数Red是MT4默认的编制常量,外现血色,正在MQL说话中,各样颜色都能够直接用它们的英文名称来外现,尽头容易。
椭圆的颜色仍旧点窜好了,然而巨细宛若还不如意,咱们再把它改大一点,正在前面代码的根基上再增加一句:
下面,我念用一个矩形来取代上面咱们画出来的椭圆,该怎样做呢?很粗略,只消用OBJ_RECTANGLE替代OBJ_ELLIPSE就行了。下面咱们一块起头做。起初新创筑一个目标文献,定名为Lesson2_DrawShape_2,正在start函数出席如下语句:
前图外上的钱币、1440外现天图、0外现取当天的最高价。这里做个添补,正在MT4编程中,外现工夫周期有两种格式:一是直接用数字外现,MT4中的工夫单元是分钟,因而你要指定哪个工夫周期,就直接填众少分钟行了,正在上面的例子中,由于1天是1440分钟,因而直接填1440就行了,假设要取1小时图的最高值就填60,30分钟图就填30,如斯类推;二是用MT4默认的编制变量,像上面的语句,咱们也能够如此写:
现正在,咱们把目标Lesson2_DrawShape_2从图外上删除掉,创造仍旧画出来的矩形并没有从图外上删除,为什么呢?正在MT4中,仍旧画出来的图形默认是不会随目标一块被删除的,这时咱们就要用到deinit和ObjectDelete函数了。前面说过,deinit函数是正在目标被删除的岁月挪用的,重要用来做少少清算性的任务,ObjectDelete函数是删除一个指定的图形对象,于是,咱们能够正在deinit函数中出席如下代码:
这是MT4编程拓荒实战系列的第3站。正在前面两节中,咱们仍旧学会了怎样诈欺ObjectCreate函数来画直线、椭圆和矩形。但这些都是很根基的图形,咱们时常能看到少少MT4目标正在图外上画出了各样各样的符号,尽头风趣!那么这
些符号是怎样画出来的呢?谜底依旧ObjectCreate函数!由此瞥睹ObjectCreate函数正在MT4绘图编程中是何等的紧要了吧,就如制物主通常制造出各样巧妙的图形!下面,咱们一块来研习一下,怎样用ObjectCreate函数制造出更众的图形。
起初创筑一个目标文献,定名为Lesson3_DrawSymbol_1,然后正在start函数中输入如下代码:
起初新筑一个目标文献,定名为Lesson3_DrawSymbol_2,然后正在start函数中输入如下的代码:
学完了前面的例子后,我信赖许众伙伴都能正在图外上大意画出本身念要的各样图形和符号了,那么要是念正在图外上出席少少文字呢?这个题目是初学MT4编程的伙伴时常提出的一个题目,谜底依旧用ObjectCreate和ObjectSet这对配合得天衣无缝的函数来实行!
正在MT4图外上增加文字,有两种格式,一种是用Comment函数,瑕疵是只可正在图外的左上角增加,且不行对文字的各样性子调剂,如巨细、颜色等;其它一种便是咱们下面将要学到的格式,用ObjectCreate函数来创筑。ObjectCreate 函数能够创筑两品种型的文字,一种是OBJ_TEXT,一种是OBJ_LABEL。这两品种
型的区别:OBJ_TEXT是以工夫和价钱动作坐标的,且能够创立显示角度;OBJ_LABEL是以如今图外可视区域的相对地位动作坐标的,且不行调剂显示角度。下面咱们用例子来加深解析。
既然仍旧有OBJ_TEXT了,为什么MT4中还要再众一个OBJ_LABEL呢?合头便是两者的坐标性子差异。OBJ_TEXT的坐标是工夫和价钱,而OBJ_LABEL的坐标是以如今可视区域的相对地位动作坐标。当你转移图外的岁月,会创造用OBJ_TEXT创筑的文字的地位会跟着图外的转移而转折,但用OBJ_LABEL创筑的文字则永远稳固,除非你更改了屏幕分别率它才会转折,当你念创筑少少永远显示正在某个固定地位的文字时,用OBJ_LABEL;假设念正在某个固定的价钱或工夫地位显示文字,用OBJ_TEXT。
因为元气心灵所限,我就不再演示OBJ_LABEL的运用格式了,群众能够参照助助文档来运用,记住坐标的性子差异就行了。
绘图系列4:怎样画弧线节咱们区别研习了直线、椭圆和矩形、文字及符号的创筑格式,这回咱们要研习一下怎样正在图外上创筑弧线中仍旧自带了许众弧线类型的目标,如各样差异的均线、布林带等等,
但时常有些伙伴还须要创筑少少本身独有的弧线,编制自带的目标仍旧无法餍足需求,这时咱们就须要通过MT4编程来拓荒本身的弧线目标了。
下面咱们一块通过实例来研习怎样画弧线。假设我现正在念把图外上每根K 线的中央片面(即最高价与最低价之和的均值)用一条弧线连绵起来。起初创筑一个新的目标文献,定名为Lesson4_DrawCurve_1。正在目标文献的初阶片面,增加如下语句:
编译后,将Lesson4_DrawCurve_1目标增加到图外上,会看到咱们已创筑了一条血色的弧线,将图外上每根K线的中央片面连绵了起来:
下面来注解一下上面代码的旨趣。起初咱们正在目标文献的初阶片面插入了3条语句,前面两条区别是:
#property indicator_buffer 1的旨趣是本目标将运用一个目标缓存(最众只可有8个目标,编码是从0至7);
#property indicator_color Red的旨趣是创筑的目标将用血色显示。#property 的旨趣是给目标文献增加一个编译参数(注:因为这些东西涉及到次第拓荒中较量专业的片面了,本教程的主题是“适用为主”,因而我将不会对少少太甚专业的片面举行深刻讨论,只需了解应当如此做就行了。有趣味的伙伴能够暗里聊)。要是你念创筑两条弧线,则能够写成:#property indicator_buffer 2;要是念蜕化弧线的颜色,则能够把Red数值改为其它颜色,如Yellow、Green 等。
正在增加了两个编译参数后,咱们还创筑了一个double类型的数组ExtMapBuffer[],这个数组的效力是蓄积每根K线中央片面的数值,绘图的岁月就遵照这个数组内部的数值来画。
中的编制函数。SetIndexStyle的旨趣是创立咱们要画的图形的类型,SetIndexStyle中的第一个参数0,外现咱们要对第一个目标的样式举行创立,正在MT4中,最众只可创立8个目标,编码是从0初阶至7遣散;第二个参数DRAW_LINE是MT4默认的编制变量,旨趣是告诉MT4咱们将要正在图外上画线。假设咱们现正在念正在每根K线的中央片面画个箭头,该怎样做呢?用DRAW_ARROW调换DRAW_LINE就行了,调换后的成绩如下:
刚刚咱们画出来的弧线是一条连结的弧线,假设我念画一条虚线该怎样做呢?给SetIndexStyle增补一个参数就行了,现正在咱们把SetIndexStyle函数改写为如下如此:
同理,假设用STYLE_DOT调换STYLE_DASH,就能够画出一条由点构成的弧线了,更众的类型群众能够通过查找编程文档获取。
现正在,要是咱们感觉弧线太细了,念加粗该怎样做呢?这时就须要给SetIndexStyle函数增补第4个参数了:
结尾,要是念把刚刚画的线更改一下颜色,能够用到SetIndexStyle的第5个参数,像下面这句:
正在前面几节,咱们研习了MT4编程拓荒中绘图方面的少少根基学问,这回咱们来研习一下怎样正在MT4编程中运用报警效力。
群众都了解,外汇墟市是24小时不间断的,而人的元气心灵是有限的,那么,正在歇憩的岁月假设价位来到了本身的宗旨价位,这岁月该怎样办呢?谜底是诈欺MT4的警报效力。正在MT4平台上怎样创立警报这里就不详述了,的确可参考助助文档,这里说一下怎样通过编程来实行。
起初,咱们来实行一个最粗略的目标:当价钱来到指订价位时,举行报警。新创筑一个目标文献,定名为:Lesson5_Alert_1。正在次第头部出席如下一句:
此中血色片面为咱们增加的语句。Extern的旨趣是Price为一个外部变量,能够正在目标运转时间动态举行点窜。
编译后运转,然后把Lesson5_Alert_1目标增加到图外上,并创立好Price变量,当如今的卖出价等于设定的Price价钱时,则会弹出如下的报警窗口:
Alert函数的旨趣是当餍足if内设定的要求时,弹出一个警报窗口,把Alert 函数内设定的实质显示出来,同时会发出警报声。
假设我把Lesson5_Alert_1目标同时增加到许众个钱币对上,那么当目标弹出报警窗口时,我怎样智力了解是哪个钱币对正在报警呢?这时就必需为报警实质添上钱币对的名称了。现正在咱们把刚刚的语句改写如下:
从新编译并增加到图外上,当如今卖出价钱等于Price指定的价钱时,将会弹出如下的报警窗口:
能够看到报警窗口内仍旧显示出是哪个钱币对正在报警了,这都是Symbol()函数的功勋,Symbol()函数的效力是获取如今目标所正在图外的钱币对的名称。与
Alert函数好像的另有MessageBox函数,有趣味的伙伴能够本身查看助助文档。现正在设念一下,假好像样是EURUSD钱币对,同时翻开了5分钟图、30分钟图、1小时图,并正在每张图上都增加了Lesson5_Alert_1目标,那么,目标报警年光闻名称还亏欠够了,这时可把语句改写如下:
转载请注明出处。