新浪博客

MT4自定义指标 任意周期RSI指标

2015-11-09 12:35阅读:
查看原文:http://www.125808047.com/?p=1291
任意周期RSI指标可以实现在当前图表附图插入其它周期的RSI。
PERIOD_M1 1
PERIOD_M5 5
PERIOD_M15 15
PERIOD_M30 30
PERIOD_H1 60
PERIOD_H4 240
PERIOD_D1 1440
PERIOD_W1 10080
PERIOD_MN1 43200
输入参数的时候按以上标准,比如要插入4H的参数为240.
调用后效果如下图
MT4任意周期RSI指标MQL4源码如下:
//+------------------------------------------------------------------+ //| 任意周期RSI.mq4| //| Ideas by 125808047 | //+------------------------------------------------------------------+ #property
copyright 'www.125808047.com' #property link 'http://www.125808047.com' #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 DodgerBlue #property indicator_level1 30 #property indicator_level2 70 #property indicator_minimum 0 #property indicator_maximum 100 //---- input parameters extern int TimeFrame=0; extern int RSIperiod=14; extern int applied_price=0; double ExtMapBuffer1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicator line SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(0,DRAW_LINE); //---- name for DataWindow and indicator subwindow label switch(TimeFrame) { case 1 : string TimeFrameStr='Period_M1'; break; case 5 : TimeFrameStr='Period_M5'; break; case 15 : TimeFrameStr='Period_M15'; break; case 30 : TimeFrameStr='Period_M30'; break; case 60 : TimeFrameStr='Period_H1'; break; case 240 : TimeFrameStr='Period_H4'; break; case 1440 : TimeFrameStr='Period_D1'; break; case 10080 : TimeFrameStr='Period_W1'; break; case 43200 : TimeFrameStr='Period_MN1'; break; default : TimeFrameStr='Current Timeframe'; } IndicatorShortName('MTF_RSI('+RSIperiod+') ('+TimeFrameStr+')'); return(0); } //+------------------------------------------------------------------+ //| MTF RSI | //+------------------------------------------------------------------+ int start() { datetime TimeArray[]; int i,limit,y=0,counted_bars=IndicatorCounted(); // Plot defined time frame on to current time frame ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame); limit=Bars-counted_bars; for(i=0,y=0;i<limit;i++) { if (Time[i]<TimeArray[y]) y++; ExtMapBuffer1[i]=iRSI(NULL,TimeFrame,RSIperiod,applied_price,y) ; } return(0); }

我的更多文章

下载客户端阅读体验更佳

APP专享