装修水平线线是趋势线的一种划汾它不同于趋势线的功能,它是对历史真实价格的一种体现如常说的整数关口等,这些都是装修水平线出现所以在未来也会对行情起到一定的支撑和阻力作用。
装修水平线线是趋势线的一种划分它不同于趋势线的功能,它是对历史真实价格的一种体现如常说的整數关口等,这些都是装修水平线出现所以在未来也会对行情起到一定的支撑和阻力作用。
用法:此线的用法一般是以突破交易为主当荇情突破了此点可顺势操作。注意不要作支撑和阻力操作,举个例子比如价格上涨在100整数关口承压,回撤后第二次再冲击100关口未果這时不要做空,因为行情有可能稍作整理再集合力量第三次冲击100关口一旦冲击成功,上涨空间巨大空单风险就大了。
反之亦然要想判断整数关口是不是历史高低点,需要K线集合形态来区分
箱体线是通道线的延伸,他也是装修水平线线的区间平移它不同于通道有明顯的运行趋势,各方力量明显箱体线在行情中出现的机率也甚多。它是多空力量强烈均衡的一种表现上下二线对行情也起到一定的支撐和阻力作用。
用法:以突破交易为主当行情突破哪边做哪边,顺势而为行情经过长时间箱体运行后,多空都积累了很多力量一旦突破,力量大的一方就会顺势追击力量小的一方就会节节溃败,那样就会形成多米诺连锁效应损资者不谓不防啊。所以投资者遇到这樣的行情主要以突破交易为主,激进的投资者箱体内小仓位高空低多稳健的投资者选择观望。
通过以上画线的画法投资者就能对行凊了如指掌,结合基本面和指标作周期共振就能轻松制定出很好的交易策略成功就在咫尺,投资者不防多练
第一节如何画装修水平线线与垂矗线
这是MT4编程开发实战系列的第一站我们先来学习一下如何在MT4图表上进行基本的画图操作。
在开始动手之前首先讲一个很基本也很重偠的概念:
在MT4系统中,图表的方向是从右到左的举例说:在一个记录有当前图表每根K线位置的数组中,第一个数值表示的是图表最右边、也就是当前的K线的数值!
画图最基本的操作是画直线下面的两个例子将演示如何在图表上画一条直线。
首先在MetaEditor编辑器中创建一个客戶指标文件,名字可以任意我这里就把它命名为Lesson1_DrawLine。
然后在其中的start()函数中添加下面的代码:
添加完毕后,按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轴)代表价格
例如:我想在当前的K线位置上画条竖线,代码如下:
Time[]数组是MT4系统默认的一个数组数组中每个数值对应当前圖表上每根K线所处的时间。同样因为直线是无限的,Y轴坐标此时也失去了意义我们就把它设为0好了。
在本节的最后我补充说明一下指标文件的各个组成部分:
当你创建了一个指标文件后,会发现系统已经自动生成了init()、deinit()和start()这3个函数
Init函数是在初始化的时候调用的,也就昰添加到图表的同时会执行一次之后就不会再执行了;
deinit函数是在关闭图表或删除指标的同时执行一次,主要作用是把该指标制作出来的東西删除掉;
start函数是主函数每次价格变动的时候,都会执行一次这个函数
第二节如何画椭圆形与矩形
这是MT4编程开发实战系列的第2站,
茬上一节中我们学习了如何利用ObjectCreate函数在图表上画直线。在这一节中我们将继续用ObjectCreate函数在图表上画出更多的图形。
有时候我们想对某些時间段的图形用椭圆形标识出来下面我们一起来实现这样的一个指标。
利用ObjectCreate函数可以方便的在图表上画出一个椭圆形MQL语言中表示椭圆嘚常量是OBJ_ELLIPSE。画一个椭圆需要两个坐标点所以,画一个椭圆的基本语句如下:
新建一个指标文件命名为”Lesson2_DrawShape_ 1”,然后在start函数中加入如下语呴:
保存文件按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函数下面添加这样一句:
编译后把指标重新添加到图表上可以看到椭圆已经变为红色了:
ObjectSet的第一个参数是图形的名字,意思是告诉MT4我将要对”ellipse”这个图形进行修改;
OBJPROP_COLOR这个参数是MT4默认嘚系统常量表示Object的颜色属性,在后面我们将会看到Object还会有很多各种各样的属性,这些属性命名的规则都是OBJ_XXX这样的只要把这个常量更妀为我们想要修改的属性就行了;
第3个参数Red是MT4默认的系统常量,表示红色在MQL语言中,各种颜色都可以直接用它们的英文名称来表示非瑺方便。
椭圆的颜色已经修改好了但是大小似乎还不满意,我们再把它改大一点在前面代码的基础上再添加一句:
编译运行后重新添加到图表上,我们发现椭圆变大了:
OBJ_SCALE表示对图形进行缩放1是缩放的数值,越小椭圆就越大具体效果可以自己修改看看。
下面我想用┅个矩形来替代上面我们画出来的椭圆,该如何做呢
在start函数加入如下语句:
编译后运行,然后在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默认的系统变量,像上面的语句峩们也可以这样写:
编译出来的指标是一样的,PERIOD_D1是MT4默认的系统变量表示周期为天,如果1小时图就是PERIOD_H130分钟图就是PERIOD_M30,如此类推
同理,iLow就昰取指定周期的最低价;最后一个参数是0这里表示取最天图最右边的K线的最高价和最低价,即当天的最高价和最低价;如果改为1上面嘚例子就是取昨天的最高价和最低价了(还记得MT4图表的方向是由右往左吧?)
同样,我们可以用ObjectSet函数把上面画出来的矩形变为红色:
现茬我们把指标Lesson2_DrawShape_2从图表上删除掉,发现已经画出来的矩形并没有从图表上删除为什么呢?
在MT4中已经画出来的图形默认是不会随指标一起被删除的,这时我们就要用到deinit和ObjectDelete函数了
前面说过,deinit函数是在指标被删除的时候调用的主要用来做一些清理性的工作,ObjectDelete函数是删除一個指定的图形对象因此,我们可以在deinit函数中加入如下代码:
ObjectDelete函数中的参数表示告诉MT4我们要删除哪个图形
第三节如何创建符号及文字
这昰MT4编程开发实战系列的第3站。在前面两节中我们已经学会了如何利用ObjectCreate函数来画直线、椭圆和矩形。但这些都是很基本的图形我们经常能看到一些MT4指标在图表上画出了各种各样的符号,非常有趣!
那么这些符号是如何画出来的呢
答案还是ObjectCreate函数!由此看见ObjectCreate函数在MT4画图编程Φ是多么的重要了吧,就如造物主一般创造出各种美妙的图形!
下面我们一起来学习一下,如何用ObjectCreate函数创造出更多的图形
首先创建一個指标文件,命名为Lesson3_DrawSymbol_1然后在start函数中输入如下代码:
编译后添加到图表,会发现我们已在图表上画了一个向上的箭头:
从前面两节的学习Φ我们知道”arrow”是图形的名字,OBJ_ARROW是告诉MT4我们要画一个箭头Time[0]是x轴坐标,Low[0]是表示当前K线的最低价
这里对Low[]和iLow()做一个解释。Low[]是一个数组里媔储存了当前周期图表上每根K线的最低价,
注意了:仅储存了当前周期的!如果想获取其它周期的图表上的某根K线的最低价就要用到iLow函數了。同理High[]和iHigh()也是这样区分的,这样解释应该很清楚了吧?
如果我想让箭头指向下方该怎么做呢?现在就开始了本节最精彩的部汾了!
在刚才的代码后面添加如下一句:
编译后,会发现图表上的箭头已经指向下方了
补充一下,学到这里我们可以发现一个规律:
创建一个图形用ObjectCreate,修改一个图形用ObjectSet。就这么简单!
在上面的例子中最关键的是ObjectSet的第三个参数:242。我们把242改成67然后再编译,看看图表現在的图形是什么是一个大拇指向上的手势。改成68再编译看看,是一个大拇指向下的手势看到这里,相信大家都知道怎么回事了吧没错!只要更改这个参数,就能画出各种我们想要的符号了我曾在火线发过一个中文的MT4编程文档,大家可以下载来查看一下里面有個图形符号代码表,只要将第3个参数改成代码表里面的数值就可以画出相应的符号了。下面我们来做个有趣的尝试:把MT4里面的各种符号嘟拉出来检阅一遍!
首先新建一个指标文件命名为Lesson3_DrawSymbol_2,然后在start函数中输入如下的代码:
编译后把Lesson3_DrawSymbol_2指标添加到图表上看到了什么?没错所有MT4支持的图形符号都跑出来了!
在上面的代码中,我用了一个循环从当前K线往左数257根K线,在每根K线的最低价位置画一个符号为什么昰257呢?你可以把这个数字改大一点会发现之后所有的图形符号都是一样的了,这说明MT4支持的图形符号就是到257为止了
如果我想让”Hello World!”以与装修水平线线成30度的角度显示,该洳何做呢在上面的代码后面添加一句:
关键就是两者的坐标性质不同。OBJ_TEXT的坐标是时间和价格而OBJ_LABEL的坐标是以当前可视区域的相对位置作為坐标。
当你移动图表的时候会发现用OBJ_TEXT创建的文字的位置会随着图表的移动而变化,但用OBJ_LABEL创建的文字则始终不变除非你更改了屏幕分辨率它才会变化,当你想创建一些始终显示在某个固定位置的文字时用OBJ_LABEL;如果想在某个固定的价格或时间位置显示文字,用OBJ_TEXT
由于精力所限,我就不再演示OBJ_LABEL的使用方法了大家可以参照帮助文档来使用,记住坐标的性质不同就行了
红色部分为我们添加的语句。然后在init函数内添加如下语句:
在start函数内添加如下语句:
编译后将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线中间部分的数值画图的时候就根据这个数组里面的数值來画。
在init函数中我们用到了SetIndexStyle和SetIndexBuffer这两个MT4中的系统函数。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的第4个参数4意思是把曲线的宽度设置为4(从1开始,最大为5)
最后,假如想把刚才画的线更改一下颜色可以用到SetIndexStyle的第5个参数,像下面这句:
最后一个参数Blue的意思是把曲线的颜色改为蓝銫
大家都知道外汇市场是24小时不间断的,而人的精力是有限的那么,在休息的时候如果价位到达了自己的目标价位这时候该怎么办呢?答案是利用MT4的警報功能在MT4平台上如何设置警报这里就不详述了,具体可参考帮助文档这里说一下如何通过编程来实现。
其中红色部分为我们添加的语句。Extern的意思是Price为一个外部变量可以在指标运行期间动态进行修改。
然后在start函数中加入如下语句:
编译后运行然后把Lesson5_Alert_1指标添加到图表上,并设置好Price变量当当前的卖出价等于设定的Price价格时,则会弹絀如下的报警窗口:
Alert函数的意思是当满足if内设定的条件时弹出一个警报窗口,把Alert函数内设定的内容显示出来同时会发出警报声。
重新编译并添加到图表上当当前卖出价格等于Price指定的价格时,将会弹出如下的报警窗口:
此时,当卖出价到达指定价位后弹絀的报警窗口如下图所示:
附:《MT4》编程的输出方式
MT4语言编程的基本输出方式就是“画”(动词)。这个“画“可以画出最常见的线图吔可以画出提示用的箭头、柱状图、趋势线等。
决定“画”的输出样式的函数是: SetIndexStyle
它应用在我们前面说过的系统函数init()的内容里面一般通過在函数init()里面的SetIndexStyle设定,来决定哪个要画成线图、哪个要画成箭头
提示:凡是你不懂意思的参数或者函数,将光标移动到它上面按F1,则MetaEditor僦会给你显示函数或者参数的意思和用法。。。
使用这个函数可以输出文字到屏幕K线图的左上角我们一般用它显示一些记忆性的內容。因为左上佳的字体比较小文字内容的变化不容易被察觉到,所以一般不用她来做提示性的功能
使用这个函数,当运他的时候將弹出一个报警窗口,并发出一个短促的警报声音使用它可以在满足条件的重要时刻,弹出报警窗口及时察觉这种变化。
注意:这个函数一般放在条件语句满足之后运行不要将满足条件设得很频繁,否则报警窗口经常弹出来比较烦人还有如果你是对当前K线进性判断,要注意到一个编成问题当前K线的价格还在不停变动中,每变动一次都将执行一次系统函数Start()因此您的Alert()条件如果是和当前K线的Close关系密切嘚话,在满足条件后将会来一个价格就报一次窗口,也很讨厌
MT4可以读取和写入一般文本文件,因此你可以将一些运行中的重要动态数據通过MT4的文件函数写入具体文件中这些功能应用较少。有兴趣的朋友可以直接查看MetaEditor右侧帮助栏的File Functions函数分类
MT4可以使用程序来创造很种类型的“对象”放在图表上面,这种功能主要用于将图表打扮的更加漂亮以及标示出更多重要的程序计算出来的数据具体用法后面再慢慢說。MT4可以创造的“对象”类型如下:
杨氏补:如何画射线与线段
方法:在射线基础上加以限制“射线=假”加以实现。
鼠标指到某根k线上即以该k线的收盘价画一根贯穿整个主图的装修水平线线。移动鼠标这根装修水平线线就根据k线收盘价不同而變化。 这样的画线公式怎么编呀谢谢老师了!!! |
最后登录 08:00在线时长小时
好好好好好好好好好好好好好好好好好好好好好 |
最后登录 08:00在线時长小时
通达信做不到的。。 通达信做不到!!!真是太失望了,本来是出于测算个股从低点涨了几个板、或从高跌了几个板 的思路來画这个线的一目了然呀。但是通达信居然实现不了。。 |
最后登录 08:00在线时长小时
你的理想很好,希望将来软件能做到 |
最后登录 08:00茬线时长小时
通达信做不到的。。 |
最后登录 08:00在线时长小时
|
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。