mt4ea编程自动计算并画出趋势线_第1页
mt4ea编程自动计算并画出趋势线_第2页
mt4ea编程自动计算并画出趋势线_第3页
mt4ea编程自动计算并画出趋势线_第4页
mt4ea编程自动计算并画出趋势线_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

mt4ea编程自动计算并画出趋势线 MT4 EA编程 自动计算并画出趋势线通过MT4平台编程,进行自动计算并画出趋势线,其方法如下所示。下面先介绍几个特殊函数,才能正确进行相关编程。一、 基本函数介绍:1、 窗口函数:WindowBarsPerChart(); /屏幕可见K线总数解释:该函数返回窗口中可见的K线数目总数,我们在画趋势线时,所选择的K线范围,一定属于在可见的范围之中,否则,难以知道其中的数据,也就不可能去画相应的趋势线了。因此,画趋势线的范围,是由窗口中可见K线数为基础条件的。因此,计算时,首先要获得窗口中的可见K线数。2、时间序列图表数据:iHighest(string symbol,int timeframe,int type,void count,voidstart); /一组K线最高价的序号参数说明:string symbol:选定的货币对,NULL、symbol()均代表当前图表中的货币对int timeframe:所选时间周期,0代表当前图表中的时间周期inttype:所选数组的类型,如MODE_HIGH(最高价)、MODE_LOW(最低价)、MODE_OPEN(开盘价)、MODE_CLOSE(收盘价)、MODE_VOLUME(成交量)、MODE_TIME(交易开始时间)void count:一组K线的计算根数void start:开始K线的序号最高价=High iHight();iLowest(string symbol,int timeframe,int type,void count,voidstart); /一组K线最低价的序号参数说明:与以上函数相对应,使用方法相同。最低价=LowiLowest();3、数组函数:ArrayMaximum(double array,void count,void start); /数组最大值位置参数说明:double array:/要求搜索的数组void count:/该数组的项目数void start:/开始搜索的序号最大值=arrayArray Maximum();ArrayMinimum(double array,void count,void start); /数组最小值位置参数说明:以上面最大值位置相对应,使用方法相同。最小值=arrayArrayMinimum();ArraySize(object array ); /计算数组项目数相当于易语言中“取数组成员数()”命令参数说明:object array :/需要计算的数组4、自定义画线函数:由于MQL4中并没有内置画线函数,要实现画直线,则必须自己编制,即自定义函数。如下:Int LineNo=0Void iDrawLine(int myFirstTime,double myFirstPrice,intmySecondTime,double mySecondPrice)String myObjectName=”Line” LineNo;ObjectCreate(myObjectName,OBJ_TREND,0,myFirstTime,myFirstPrice,mySecondTime,mySecondPrice);ObjectSet(myObjectName,OBJPROP_COLOR,Green);ObjectSet(myObjectName,OBJPROP_STYLE,STYLE_DOT);ObjectSet(myObjectName,OBJPROP_WIDTH,1);ObjectSet(myObjectName,OBJPROP_BACK,false);ObjectSet(myObjectName,OBJPROP_RAY,false);I 例:iDrawLine(13,close13,6,close6);/从第13根K线的收盘价,到第6根K线的收盘价之间画一个绿色虚线。二、趋势线的数学原理:如下所示,如何计算趋势线呢?下面进行讨论。计算原理如下:1、第一步:计算K线数目首先,计算出该图表(屏幕)上的K线总数,使用窗口函数中“WindowBarsPerChart()”进行计算。即:K线总数(M):M= WindowBarsPerChart();2、 第二步:求该K线中的最高价位置与最低价位置根据K线数目,使用时间序列图表数据函数,求出最高价、最低位位置。即:最低价位置(A):A= iLowest(NULL,0,MODE_LOW,M,0);最高价位置(B):B= iHighest(NULL,0,MODE_HIGH,M,0);3、 第三步:判断趋势是上升或者下降根据最高价位置与最低价位置进行判断大小,数值大者,距当前K线越远;数值小者,则离当前K线距离越近。当:A>B时,代表市场处于先低后高走势,属于上升趋势;当:A时,代表市场处于先高后低走势,属于下降趋势。4、第四步:根据上升或下降趋势计算基线(校正计算)根据上升与下降趋结构,分别计算出相应的基准线。A)当市场=上升时,计算波谷(最低价)基线:低点位置X1:X1=A;低点的低价Y1:Y1=LowA;高点位置X2:X2=B;高点的低价Y2:Y2=LowB;B)当市场=下跌时,计算波峰(最高价)基线:高点位置X1:X1=B;高点的高价Y1:Y1=HighB;低点位置X2:X2=A;低点的高价Y2:Y2=HighA;说明:一般来说,直接用高点的高价与低点的低价进行连线也可,其产生的误差不是很大,也可使用。但根据“道氏理论”关于趋势的定义,以及市场主力的成本线与利润线而言,成本是控制的基础,而利润则随市而变。因此,成本线更重要于利润线。其中:上升行情中,波谷值连线是主力的成本线,波峰连线是主力的利润线;在空头行情中,波峰则是空头主力的成本线,而波谷则是空头主力的利润线。而且,在市场的趋势线理论中,凡上升趋势中下破趋势线,则市场反转;反之亦然。因此,成本线是市场的根本。为了最大程度精确计算趋势线,因此,需要进行校正处理。并且,这种校正处理并不会给编程带来较大的麻烦,也不会导致计算机内存的占用。因此,这里进行校正处理。如下图所示:5、第五步:根据基线,计算最高价与最低价区间内的价差,并存入数组P 中。峰谷区间长度(L):L=MathAbs(B-A); /取绝对值,即相距L根K线A)当为上升趋势:直线斜率(R):R=(LowB-LowA)/L; /两点之间的斜率计算每根K线最低价与趋势基线之移动差值(P ):差值(P):PN= (LowB-N*R)- LowN A其中:N=1-L计算数组内的最大值位置X3:X3=ArrayMaximum(P,L,0) B;第2谷值价格(最低价):Y3=LowX3;画上升趋势线:myFirstTime:第1点时间X1=AmyFirstPrice:第1点价格Y1=LowAmySecondTime:第2点时间X2=X3mySecondPrice:第2点价格Y2=LowX3iDrawLine(A,LowA,X3,LowX3);B)当为下跌趋势:直线斜率(R):R=(HighB-HighA)/L; /两点之间的斜率计算每根K线最低价与趋势基线之移动差值:差值(P):PN=HighN A-(HighA N*R)其中:N=1-L计算数组内的最大值位置X3:X3=ArrayMaximum(P,L,0) B;第2峰值价格(最高价):Y3=HighX3;画下跌趋势线:myFirstTime:第1点时间X1=BmyFirstPrice:第1点价格Y1=HighBmySecondTime:第2点时间X2=X3mySecondPrice:第2点价格Y2=HighX3iDrawLine(B,HighB,X3,HighX3);6、说明:在计算每根K线的价格与趋势基线的差,按数学应该求它们的垂直线,从而进行比较。根

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论