Navigation:Home > Content >

ma_value.mq4

Time: 2011-04-17 | Download file:ma_value.mq4

//+------------------------------------------------------------------+
//|                                                     MA_Value.mq4 |
//|                                   Copyright © 2009, Serega Lykov |
//|                                       http://mtexperts.narod.ru/ |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2009, Serega Lykov"
#property link      "http://mtexperts.narod.ru/"

//---- property of indicator ----------------------------------------+
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red

//---- external parameters ------------------------------------------+
extern int    MA_Period           = 21;       // the period for MA
extern int    MA_Method           = 0;        // the method for MA: 0 = Simple, 1 = Exponential,
                                              // 2 = Smoothed, 3 = Weighted
extern int    MA_Price            = 0;        // the price for MA:  0 = PRICE_CLOSE, 1 = PRICE_OPEN,
                                              // 2 = PRICE_HIGH,    3 = PRICE_LOW,   4 = PRICE_MEDIAN,
                                              // 5 = PRICE_TYPICAL, 6 = PRICE_WEIGHTED
extern int    MA_Shift            = 0;        // the shift for MA

//---- buffers ------------------------------------------------------+
static double MABuffer[];

//---- global variables ---------------------------------------------+
static string short_name;

//-------------------------------------------------------------------+
//---- initialization of indicator ----------------------------------+
//-------------------------------------------------------------------+
int init()
  {
   //---- set a "short" name of the indicator -----------------------+
   switch(MA_Method)
     {
      case 1: { short_name = "EMA(";  break; }
      case 2: { short_name = "SMMA("; break; }
      case 3: { short_name = "LWMA("; break; }
      default:  short_name = "SMA(";
     }
   short_name = StringConcatenate(short_name,MA_Period,")");
   IndicatorShortName(short_name);
   //---- set a accuracy for values of the indicator ----------------+
   IndicatorDigits(Digits);
   //---- set a style for line --------------------------------------+
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID);
   //---- set a arrays for line -------------------------------------+
   SetIndexBuffer(0,MABuffer);
   //---- set a first bar for drawing the line ----------------------+
   SetIndexDrawBegin(0,MA_Period);
   //---- set a names for lines -------------------------------------+
   SetIndexLabel(0,short_name);
   //---- finish of initialization ----------------------------------+
   return(0);
  }

//-------------------------------------------------------------------+
//---- deinitialization of indicator --------------------------------+
//-------------------------------------------------------------------+
int deinit()
  {
   Comment("");
   return(0);
  }

//-------------------------------------------------------------------+
//---- MA and its value in comment of chart -------------------------+
//-------------------------------------------------------------------+
int start()
  {
   //---- if on the chart there are not enough bars the indicator is not calculate
   if(Bars <= MA_Period) return(0);
   //---- amount not changed bars after last call of the indicator --+
   int counted_bars = IndicatorCounted();
   if(counted_bars < 0) return(-1);
   //---- last counted bar will be counted --------------------------+
   if(counted_bars > 0) counted_bars--;
   int limit = Bars - counted_bars;
   //---- get value of MA -------------------------------------------+
   for(int i=0; i

Recommend