资源描述:
《mtea编程自动计算并画出趋势线.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、mtea编程自动计算并画出趋势线————————————————————————————————作者:————————————————————————————————日期:mt4ea编程自动计算并画出趋势线MT4EA编程自动计算并画出趋势线通过MT4平台编程,进行自动计算并画出趋势线,其方法如下所示。下面先介绍几个特殊函数,才能正确进行相关编程。一、基本函数介绍:1、窗口函数:WindowBarsPerChart();//屏幕可见K线总数解释:该函数返回窗口中可见的K线数目总数,我们在画趋势线时,所
2、选择的K线范围,一定属于在可见的范围之中,否则,难以知道其中的数据,也就不可能去画相应的趋势线了。因此,画趋势线的范围,是由窗口中可见K线数为基础条件的。因此,计算时,首先要获得窗口中的可见K线数。2、时间序列图表数据:iHighest(stringsymbol,inttimeframe,inttype,voidcount,voidstart);//一组K线最高价的序号参数说明:stringsymbol:选定的货币对,NULL、symbol()均代表当前图表中的货币对inttimeframe:所选时
3、间周期,0代表当前图表中的时间周期inttype:所选数组的类型,如MODE_HIGH(最高价)、MODE_LOW(最低价)、MODE_OPEN(开盘价)、MODE_CLOSE(收盘价)、MODE_VOLUME(成交量)、MODE_TIME(交易开始时间)voidcount:一组K线的计算根数voidstart:开始K线的序号最高价=High[iHight()];iLowest(stringsymbol,inttimeframe,inttype,voidcount,voidstart);//一组K线
4、最低价的序号参数说明:与以上函数相对应,使用方法相同。最低价=Low[iLowest()];3、数组函数:ArrayMaximum(doublearray[],voidcount,voidstart);//数组最大值位置参数说明:doublearray[]://要求搜索的数组voidcount://该数组的项目数voidstart://开始搜索的序号最大值=array[ArrayMaximum()];ArrayMinimum(doublearray[],voidcount,voidstart);//
5、数组最小值位置参数说明:以上面最大值位置相对应,使用方法相同。最小值=array[ArrayMinimum()];ArraySize(objectarray[]);//计算数组项目数——相当于易语言中“取数组成员数()”命令参数说明:objectarray[]://需要计算的数组4、自定义——画线函数:由于MQL4中并没有内置画线函数,要实现画直线,则必须自己编制,即自定义函数。如下:IntLineNo=0VoidiDrawLine(intmyFirstTime,doublemyFirstPrice
6、,intmySecondTime,doublemySecondPrice){StringmyObjectName=”Line”LineNo;ObjectCreate(myObjectName,OBJ_TREND,0,myFirstTime,myFirstPrice,mySecondTime,mySecondPrice);ObjectSet(myObjectName,OBJPROP_COLOR,Green);ObjectSet(myObjectName,OBJPROP_STYLE,STYLE_DOT)
7、;ObjectSet(myObjectName,OBJPROP_WIDTH,1);ObjectSet(myObjectName,OBJPROP_BACK,false);ObjectSet(myObjectName,OBJPROP_RAY,false);I}例:iDrawLine(13,close[13],6,close[6]);//从第13根K线的收盘价,到第6根K线的收盘价之间画一个绿色虚线。二、趋势线的数学原理:如下所示,如何计算趋势线呢?下面进行讨论。计算原理如下:1、第一步:计算K线数目首先
8、,计算出该图表(屏幕)上的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、第三步:判断趋势是上