Navigation:Home > Content >

zz_yz_mdac_elder_1-1000.mq5

Time: 2015-09-07 | Download file:zz_yz_mdac_elder_1-1000.mq5

//+---------------------------------------------------------------------+
//|                                         ZZ_YZ_MDAC_ELDER 1-1000.mq5 | 
//|                                             Copyright © 2007, YURAZ | 
//|                                                         yzh@mail.ru | 
//+---------------------------------------------------------------------+ 
//| Для работы индикатора файл SmoothAlgorithms.mqh следует  положить   |
//| в папку (директорию): каталог_данных_терминала\\MQL5\Include        |
//+---------------------------------------------------------------------+ 
#property  copyright "Copyright © 2007, YURAZ"
#property  link      "yzh@mail.ru"
//---- номер версии индикатора
#property version   "1.00"
//---- отрисовка индикатора в отдельном окне
#property indicator_separate_window 
//---- количество индикаторных буферов 3
#property indicator_buffers 3 
//---- использовано всего два графических построения
#property indicator_plots   2
//+-----------------------------------+
//|  Параметры отрисовки индикатора   |
//+-----------------------------------+
//---- отрисовка индикатора в виде трехцветной гистограммы
#property indicator_type1 DRAW_COLOR_HISTOGRAM
//---- в качестве цветов трехцветной гистограммы использованы
#property indicator_color1 clrRed,clrBlue,clrTeal
//---- линия индикатора - сплошная
#property indicator_style1 STYLE_SOLID
//---- толщина линии индикатора равна 2
#property indicator_width1 2
//---- отображение метки индикатора
#property indicator_label1 "ZZ_YZ_MDAC_ELDER 1-1000"
//---- отрисовка индикатора в виде линии
#property indicator_type2 DRAW_LINE
//---- в качестве цвета линии использован
#property indicator_color2 clrChocolate
//---- линия индикатора - непрерывная кривая
#property indicator_style2 STYLE_SOLID
//---- толщина линии индикатора равна 2
#property indicator_width2 2
//---- отображение метки сигнальной линии
#property indicator_label2  "Signal Line"
//+-----------------------------------+
//|  объявление перечислений          |
//+-----------------------------------+
enum Applied_price_      // Тип константы
  {
   PRICE_CLOSE_ = 1,     // Close
   PRICE_OPEN_,          // Open
   PRICE_HIGH_,          // High
   PRICE_LOW_,           // Low
   PRICE_MEDIAN_,        // Median Price (HL/2)
   PRICE_TYPICAL_,       // Typical Price (HLC/3)
   PRICE_WEIGHTED_,      // Weighted Close (HLCC/4)
   PRICE_SIMPL_,         // Simple Price (OC/2)
   PRICE_QUARTER_,       // Quarted Price (HLOC/4) 
   PRICE_TRENDFOLLOW0_,  // TrendFollow_1 Price 
   PRICE_TRENDFOLLOW1_,  // TrendFollow_2 Price 
   PRICE_DEMARK_         // Demark Price
  };
//+-----------------------------------+
//|  Входные параметры индикатора     |
//+-----------------------------------+
input int Fast_MA = 12;                        // Период быстрой средней
input int Slow_MA = 26;                        // Глубина  SMMA сглаживания
input ENUM_MA_METHOD MA_Method_=MODE_EMA;      // Метод усреднения индикатора
input int Signal_MA=9;                         // Период сигнальной линии 
input ENUM_MA_METHOD Signal_Method_=MODE_EMA;  // Метод усреднения индикатора
input Applied_price_ AppliedPrice=PRICE_CLOSE_;// Ценовая константа
//+-----------------------------------+
//---- объявление целых переменных начала отсчета данных
int min_rates_total,macd_min_rates_total=0;
//---- объявление динамических массивов, которые в дальнейшем
//---- будут использованы в качестве индикаторных буферов
double MACDBuffer[],SignBuffer[],ColorMACDBuffer[];
//+------------------------------------------------------------------+
// Описание функции iPriceSeries                                     |
// Описание класса Moving_Average                                    | 
//+------------------------------------------------------------------+ 
#include  
//+------------------------------------------------------------------+    
//| MACD indicator initialization function                           | 
//+------------------------------------------------------------------+  
void OnInit()
  {
//---- Инициализация переменных начала отсчета данных
   if(MA_Method_!=MODE_EMA) macd_min_rates_total=MathMax(Fast_MA,Slow_MA);
   min_rates_total=macd_min_rates_total+Signal_MA+1;
//---- превращение динамического массива MACDBuffer в индикаторный буфер
   SetIndexBuffer(0,MACDBuffer,INDICATOR_DATA);
//---- превращение динамического массива в цветовой, индексный буфер   
   SetIndexBuffer(1,ColorMACDBuffer,INDICATOR_COLOR_INDEX);
//---- превращение динамического массива SignBuffer в индикаторный буфер
   SetIndexBuffer(2,SignBuffer,INDICATOR_DATA);
//---- осуществление сдвига начала отсчета отрисовки индикатора
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);
//---- установка значений индикатора, которые не будут видимы на графике
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---- осуществление сдвига начала отсчета отрисовки индикатора
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,min_rates_total);
//---- установка значений индикатора, которые не будут видимы на графике
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---- инициализации переменной для короткого имени индикатора
   string shortname;
   StringConcatenate(shortname,"ZZ_YZ_MDAC_ELDER 1-1000( ",Fast_MA,", ",Slow_MA,", ",Signal_MA," )");
//--- создание имени для отображения в отдельном подокне и во всплывающей подсказке
   IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//--- определение точности отображения значений индикатора
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//---- завершение инициализации
  }
//+------------------------------------------------------------------+  
//| MACD iteration function                                          | 
//+------------------------------------------------------------------+  
int OnCalculate(const int rates_total,    // количество истории в барах на текущем тике
                const int prev_calculated,// количество истории в барах на предыдущем тике
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---- проверка количества баров на достаточность для расчета
   if(rates_totalrates_total || prev_calculated<=0)// проверка на первый старт расчета индикатора
     {
      first1=0; // стартовый номер для расчета всех баров первого цикла
      first2=macd_min_rates_total+1; // стартовый номер для расчета всех баров второго цикла
     }
   else // стартовый номер для расчета новых баров
     {
      first1=prev_calculated-1;
      first2=first1;
     }

//---- объявление переменных класса CMoving_Average из файла MASeries_Cls.mqh
   static CMoving_Average MA1,MA2,MA3;

//---- основной цикл расчета индикатора
   for(bar=first1; barprev && Scurrent>Sprev) clr=2;
      else
         if(currentprev && ScurrentSprev) clr=1;

      ColorMACDBuffer[bar]=clr;
     }
//----     
   return(rates_total);
  }
//+------------------------------------------------------------------+

Recommend