[MT4指标]ATR区间显示指标
ATR区间显示指标
多级别ATR显示出各种区间波幅
主图指标
mt4指标类型:震荡指标
是否能用在mt4手机版上:否
是否含有未来函数:否
//+------------------------------------------------------------------+
//| ATR Channels.mq4 |
//| Copyright ? 2005, Luis Guilherme Damiani |
//| http://www.damianifx.com.br |
//+------------------------------------------------------------------+
#property copyright "Copyright ? 2005, Luis Guilherme Damiani"
#property link "http://www.damianifx.com.br"
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Green //Moving Average
#property indicator_color2 DeepSkyBlue // Lower band 1
#property indicator_color3 DeepSkyBlue // Upper band 1
#property indicator_color4 Blue // Lower band 2
#property indicator_color5 Blue // Upper band 2
#property indicator_color6 Red // Lower band 3
#property indicator_color7 Red // Upper band 3
//---- indicator buffers
double MA_Buffer0;
double Ch1up_Buffer1;
double Ch1dn_Buffer2;
double Ch2up_Buffer3;
double Ch2dn_Buffer4;
double Ch3up_Buffer5;
double Ch3dn_Buffer6;
//---- input parameters
extern int PeriodsATR = 18;
extern int MA_Periods = 49;
extern int MA_type = MODE_LWMA;
extern double Mult_Factor1 = 1.6;
extern double Mult_Factor2 = 3.2;
extern double Mult_Factor3 = 4.8;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string mat;
//---7- indicators
// MA
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, MA_Buffer0);
SetIndexDrawBegin(0, MathMax(PeriodsATR, MA_Periods));
// ATR 1 up
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, Ch1up_Buffer1);
SetIndexDrawBegin(1, MathMax(PeriodsATR, MA_Periods));
string sATRu1 = StringConcatenate("ATRu(", PeriodsATR, ", ", Mult_Factor1, ")");
SetIndexLabel(1, sATRu1);
// ATR 1 down
SetIndexStyle(2, DRAW_LINE);
SetIndexBuffer(2, Ch1dn_Buffer2);
SetIndexDrawBegin(2, MathMax(PeriodsATR, MA_Periods));
string sATRd1 = StringConcatenate("ATRd(", PeriodsATR, ", ", Mult_Factor1, ")");
SetIndexLabel(2, sATRd1);
// ATR 2 up
SetIndexStyle(3, DRAW_LINE);
SetIndexBuffer(3, Ch2up_Buffer3);
SetIndexDrawBegin(3, MathMax(PeriodsATR, MA_Periods));
string sATRu2 = StringConcatenate("ATRu(", PeriodsATR, ", ", Mult_Factor2, ")");
SetIndexLabel(3, sATRu2);
// ATR 2 down
SetIndexStyle(4, DRAW_LINE);
SetIndexBuffer(4, Ch2dn_Buffer4);
SetIndexDrawBegin(4, MathMax(PeriodsATR, MA_Periods));
string sATRd2 = StringConcatenate("ATRd(", PeriodsATR, ", ", Mult_Factor2, ")");
SetIndexLabel(4, sATRd2);
// ATR 3 up
SetIndexStyle(5, DRAW_LINE);
SetIndexBuffer(5, Ch3up_Buffer5);
SetIndexDrawBegin(5, MathMax(PeriodsATR, MA_Periods));
string sATRu3 = StringConcatenate("ATRu(", PeriodsATR, ", ", Mult_Factor3, ")");
SetIndexLabel(5, sATRu3);
// ATR 3 down
SetIndexStyle(6, DRAW_LINE);
SetIndexBuffer(6, Ch3dn_Buffer6);
SetIndexDrawBegin(6, MathMax(PeriodsATR, MA_Periods));
string sATRd3 = StringConcatenate("ATRd(", PeriodsATR, ", ", Mult_Factor3, ")");
SetIndexLabel(6, sATRd3);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if(Bars <= MathMax(PeriodsATR, MA_Periods))
return(0);
int fixed_bars = IndicatorCounted();
//---- check for possible errors
if(fixed_bars < 0)
return(-1);
//---- last counted bar will be recounted
if(fixed_bars > 0)
fixed_bars--;
int limit = Bars - fixed_bars;
//----
for(int i = 0; i < limit; i++)
{
double atr = iATR(NULL, 0, PeriodsATR, i);
double ma = iMA(NULL, 0, MA_Periods, 0, MA_type, PRICE_TYPICAL, i);
MA_Buffer0 = ma;
Ch1up_Buffer1 = ma + atr*Mult_Factor1;
Ch1dn_Buffer2 = ma - atr*Mult_Factor1;
Ch2up_Buffer3 = ma + atr*Mult_Factor2;
Ch2dn_Buffer4 = ma - atr*Mult_Factor2;
Ch3up_Buffer5 = ma + atr*Mult_Factor3;
Ch3dn_Buffer6 = ma - atr*Mult_Factor3;
}
//----
return(0);
}
//+------------------------------------------------------------------+
ATR_Channels.jpg
