Navigation:Home > Content >

multislow-stochx7signal.mq5

Time: 2012-09-06 | Download file:multislow-stochx7signal.mq5

//+---------------------------------------------------------------------+
//|                                         MultiSlow-Stochx7Signal.mq5 | 
//|                                  Copyright © 2014, Nikolay Kositsin | 
//|                                 Khabarovsk,   farria@mail.redcom.ru | 
//+---------------------------------------------------------------------+
//| Для работы  индикатора  следует  положить файл SmoothAlgorithms.mqh |
//| в папку (директорию): каталог_данных_терминала\\MQL5\Include        |
//+---------------------------------------------------------------------+
#property copyright "Copyright © 2014, Nikolay Kositsin"
#property link "farria@mail.redcom.ru"
#property description ""
//--- номер версии индикатора
#property version   "1.60"
//--- отрисовка индикатора в отдельном окне
#property indicator_separate_window
//--- фиксированная высота подокна индикатора в пикселях 
#property indicator_height 90
//--- нижнее и верхнее ограничения шкалы отдельного окна индикатора
#property indicator_maximum +7.9
#property indicator_minimum +0.3
//+-----------------------------------+
//|  объявление констант              |
//+-----------------------------------+
#define RESET 0                      // Константа для возврата терминалу команды на пересчёт индикатора
#define INDTOTAL 7                   // Константа для количества отображаемых индикаторов
#define INDICATOR_NAME "Slow-Stoch"  // Константа для имени индикатора
//+-----------------------------------+
//--- количество индикаторных буферов
#property indicator_buffers 28 // INDTOTAL*4
//--- использовано всего графических построений
#property indicator_plots   21 // INDTOTAL*3
//+-----------------------------------+
//|  Параметры отрисовки индикатора 1 |
//+-----------------------------------+
//--- отрисовка индикатора 1 в виде линии
#property indicator_type1   DRAW_COLOR_LINE
//--- в качестве цвета линии индикатора использованы
#property indicator_color1 clrGray,clrDarkOrange,clrTeal
//--- линия индикатора - штрих
#property indicator_style1  STYLE_SOLID
//--- толщина линии индикатора равна 3
#property indicator_width1  3
//--- отображение метки индикатора
////#property indicator_label1  "Signal line 1"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 1 |
//+-----------------------------------+
//--- отрисовка индикатора 1 в виде значка
#property indicator_type2   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color2 clrLimeGreen
//--- толщина линии индикатора равна 5
#property indicator_width2  5
//--- отображение метки индикатора
//#property indicator_label2  "Up Slow-Stoch 1"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 1 |
//+-----------------------------------+
//--- отрисовка индикатора 1 в виде значка
#property indicator_type3   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color3 clrIndianRed
//--- толщина линии индикатора равна 5
#property indicator_width3  5
//--- отображение метки индикатора
//#property indicator_label3  "Down Slow-Stoch 1"

//+-----------------------------------+
//|  Параметры отрисовки индикатора 2 |
//+-----------------------------------+
//--- отрисовка индикатора 2 в виде линии
#property indicator_type4   DRAW_COLOR_LINE
//--- в качестве цвета линии индикатора использованы
#property indicator_color4 clrGray,clrDarkOrange,clrTeal
//--- линия индикатора - штрих
#property indicator_style4  STYLE_SOLID
//--- толщина линии индикатора равна 3
#property indicator_width4  3
//--- отображение метки индикатора
//#property indicator_label4  "Signal line 2"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 2 |
//+-----------------------------------+
//--- отрисовка индикатора 2 в виде значка
#property indicator_type5   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color5 clrLimeGreen
//--- толщина линии индикатора равна 5
#property indicator_width5  5
//--- отображение метки индикатора
//#property indicator_label5  "Up Slow-Stoch 2"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 2 |
//+-----------------------------------+
//--- отрисовка индикатора 2 в виде значка
#property indicator_type6   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color6 clrIndianRed
//--- толщина линии индикатора равна 5
#property indicator_width6  5
//--- отображение метки индикатора
//#property indicator_label6  "Down Slow-Stoch 2"

//+-----------------------------------+
//|  Параметры отрисовки индикатора 3 |
//+-----------------------------------+
//--- отрисовка индикатора 3 в виде линии
#property indicator_type7   DRAW_COLOR_LINE
//--- в качестве цвета линии индикатора использованы
#property indicator_color7 clrGray,clrDarkOrange,clrTeal
//--- линия индикатора - штрих
#property indicator_style7  STYLE_SOLID
//--- толщина линии индикатора равна 3
#property indicator_width7  3
//--- отображение метки индикатора
//#property indicator_label7  "Signal line 3"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 3 |
//+-----------------------------------+
//--- отрисовка индикатора 3 в виде значка
#property indicator_type8   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color8 clrLimeGreen
//--- толщина линии индикатора равна 5
#property indicator_width8  5
//--- отображение метки индикатора
//#property indicator_label8  "Up Slow-Stoch 3"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 3 |
//+-----------------------------------+
//--- отрисовка индикатора 3 в виде значка
#property indicator_type9   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color9 clrIndianRed
//--- толщина линии индикатора равна 5
#property indicator_width9  5
//--- отображение метки индикатора
//#property indicator_label9  "Down Slow-Stoch 3"

//+-----------------------------------+
//|  Параметры отрисовки индикатора 4 |
//+-----------------------------------+
//--- отрисовка индикатора 4 в виде линии
#property indicator_type10   DRAW_COLOR_LINE
//--- в качестве цвета линии индикатора использованы
#property indicator_color10 clrGray,clrDarkOrange,clrTeal
//--- линия индикатора - штрих
#property indicator_style10 STYLE_SOLID
//--- толщина линии индикатора равна 3
#property indicator_width10  3
//--- отображение метки индикатора
//#property indicator_label10  "Signal line 4"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 4 |
//+-----------------------------------+
//--- отрисовка индикатора 4 в виде значка
#property indicator_type11   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color11 clrLimeGreen
//--- толщина линии индикатора равна 5
#property indicator_width11  5
//--- отображение метки индикатора
//#property indicator_label11  "Up Slow-Stoch 4"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 4 |
//+-----------------------------------+
//--- отрисовка индикатора 4 в виде значка
#property indicator_type12   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color12 clrIndianRed
//--- толщина линии индикатора равна 5
#property indicator_width12  5
//--- отображение метки индикатора
//#property indicator_label12  "Down Slow-Stoch 4"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 5 |
//+-----------------------------------+
//--- отрисовка индикатора 5 в виде линии
#property indicator_type13   DRAW_COLOR_LINE
//--- в качестве цвета линии индикатора использованы
#property indicator_color13 clrGray,clrDarkOrange,clrTeal
//--- линия индикатора - штрих
#property indicator_style13 STYLE_SOLID
//--- толщина линии индикатора равна 3
#property indicator_width13  3
//--- отображение метки индикатора
//#property indicator_label13  "Signal line 5"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 5 |
//+-----------------------------------+
//--- отрисовка индикатора 5 в виде значка
#property indicator_type14   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color14 clrLimeGreen
//--- толщина линии индикатора равна 5
#property indicator_width14  5
//--- отображение метки индикатора
//#property indicator_label14  "Up Slow-Stoch 5"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 5 |
//+-----------------------------------+
//--- отрисовка индикатора 5 в виде значка
#property indicator_type15   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color15 clrIndianRed
//--- толщина линии индикатора равна 5
#property indicator_width15  5
//--- отображение метки индикатора
//#property indicator_label15  "Down Slow-Stoch 5"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 6 |
//+-----------------------------------+
//--- отрисовка индикатора 6 в виде линии
#property indicator_type16   DRAW_COLOR_LINE
//--- в качестве цвета линии индикатора использованы
#property indicator_color16 clrGray,clrDarkOrange,clrTeal
//--- линия индикатора - штрих
#property indicator_style16 STYLE_SOLID
//--- толщина линии индикатора равна 3
#property indicator_width16  3
//--- отображение метки индикатора
//#property indicator_label16  "Signal line 6"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 6 |
//+-----------------------------------+
//--- отрисовка индикатора 6 в виде значка
#property indicator_type17   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color17 clrLimeGreen
//--- толщина линии индикатора равна 5
#property indicator_width17  5
//--- отображение метки индикатора
//#property indicator_label17  "Up Slow-Stoch 6"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 6 |
//+-----------------------------------+
//--- отрисовка индикатора 6 в виде значка
#property indicator_type18   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color18 clrIndianRed
//--- толщина линии индикатора равна 5
#property indicator_width18  5
//--- отображение метки индикатора
//#property indicator_label18  "Down Slow-Stoch 6"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 7 |
//+-----------------------------------+
//--- отрисовка индикатора 7 в виде линии
#property indicator_type19   DRAW_COLOR_LINE
//--- в качестве цвета линии индикатора использованы
#property indicator_color19 clrGray,clrDarkOrange,clrTeal
//--- линия индикатора - штрих
#property indicator_style19 STYLE_SOLID
//--- толщина линии индикатора равна 1
#property indicator_width19  1
//--- отображение метки индикатора
//#property indicator_label19  "Signal line 7"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 7 |
//+-----------------------------------+
//--- отрисовка индикатора 7 в виде значка
#property indicator_type20   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color20 clrLimeGreen
//--- толщина линии индикатора равна 2
#property indicator_width20  2
//--- отображение метки индикатора
//#property indicator_label20  "Up Slow-Stoch 7"
//+-----------------------------------+
//|  Параметры отрисовки индикатора 7 |
//+-----------------------------------+
//--- отрисовка индикатора 7 в виде значка
#property indicator_type21   DRAW_ARROW
//--- в качестве цвета значка использован
#property indicator_color21 clrIndianRed
//--- толщина линии индикатора равна 2
#property indicator_width21  2
//--- отображение метки индикатора
//#property indicator_label21  "Down Slow-Stoch 7"
//+-----------------------------------+
//|  объявление перечислений          |
//+-----------------------------------+
enum Smooth_Method
  {
   MODE_SMA_,  // SMA
   MODE_EMA_,  // EMA
   MODE_SMMA_, // SMMA
   MODE_LWMA_, // LWMA
   MODE_JJMA,  // JJMA
   MODE_JurX,  // JurX
   MODE_ParMA, // ParMA
   MODE_T3,    // T3
   MODE_VIDYA, // VIDYA
   MODE_AMA,   // AMA
  };
//+-----------------------------------+
//| Входные параметры индикатора      |
//+-----------------------------------+
input ENUM_TIMEFRAMES TimeFrame0=PERIOD_D1;  //1 Период графика
input ENUM_TIMEFRAMES TimeFrame1=PERIOD_H12; //2 Период графика
input ENUM_TIMEFRAMES TimeFrame2=PERIOD_H8;  //3 Период графика
input ENUM_TIMEFRAMES TimeFrame3=PERIOD_H6;  //4 Период графика
input ENUM_TIMEFRAMES TimeFrame4=PERIOD_H4;  //5 Период графика
input ENUM_TIMEFRAMES TimeFrame5=PERIOD_H2;  //6 Период графика
input ENUM_TIMEFRAMES TimeFrame6=PERIOD_M30; //7 Период графика
//+-----------------------------------------+
//| Входные параметры индикатора Slow-Stoch |
//+-----------------------------------------+
input uint KPeriod=5;
input uint DPeriod=3;
input uint Slowing=3;
input ENUM_MA_METHOD STO_Method=MODE_SMA;
input ENUM_STO_PRICE Price_field=STO_LOWHIGH;
input Smooth_Method XMA_Method=MODE_JJMA;    // Метод усреднения
input uint XLength=5;                        // Глубина сглаживания
input int XPhase=15;                         // Параметр сглаживания
//--- XPhase: для JJMA изменяющийся в пределах -100 ... +100, влияет на качество переходного процесса;
//--- XPhase: для VIDIA это период CMO, для AMA это период медленной скользящей
//+-----------------------------------+
//--- объявление целочисленных переменных начала отсчёта данных
int min_rates_total;
//+------------------------------------------------------------------+
//| Получение таймфрейма в виде строки                               |
//+------------------------------------------------------------------+
string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
  {return(StringSubstr(EnumToString(timeframe),7,-1));}
//+------------------------------------------------------------------+
//| Класс индикаторных буферов                                       |
//+------------------------------------------------------------------+  
class CIndBuffers
  {
   //---
public:
   double            m_UpBuffer[];
   double            m_DnBuffer[];
   double            m_LineBuffer[];
   double            m_ColorLineBuffer[];
   int               m_Handle;
   ENUM_TIMEFRAMES   m_TimeFrame;
   //--- 
  };
//--- объявление динамических массивов, которые в дальнейшем
//--- будут использованы в качестве индикаторных буферов
CIndBuffers Ind[INDTOTAL];
//+------------------------------------------------------------------+   
//| Slow-Stoch indicator initialization function                     | 
//+------------------------------------------------------------------+ 
bool IndInit(uint Number)
  {
//--- проверка периодов графиков на корректность
   if(Ind[Number].m_TimeFrameRates_Total || Prev_Calculated<=0)// проверка на первый старт расчёта индикатора
     {
      LastCountBar[Number]=Rates_Total;
      limit_=Limit;
     }
   else limit_=int(LastCountBar[Number])+Limit; // стартовый номер для расчёта новых баров 
//--- основной цикл расчёта индикатора
   for(int bar=int(limit_); bar>=0 && !IsStopped(); bar--)
     {
      //--- обнулим содержимое индикаторных буферов до расчёта
      Ind[Number].m_UpBuffer[bar]=EMPTY_VALUE;
      Ind[Number].m_DnBuffer[bar]=EMPTY_VALUE;
      Ind[Number].m_LineBuffer[bar]=Number+1.0;
      Ind[Number].m_ColorLineBuffer[bar]=0;
      Time0=Time[bar];
      //--- копируем вновь появившиеся данные в массив
      if(CopyTime(Symbol(),Ind[Number].m_TimeFrame,Time0,1,Time_)<=0) return(RESET);
      //---
      if(Time0>=Time_[0] && Time[bar+1]DnStoch[0])
           {
            Ind[Number].m_UpBuffer[bar]=Number+1.0;
            Ind[Number].m_ColorLineBuffer[bar]=2;
           }
         if(UpStoch[0]rates_total || prev_calculated<=0)// проверка на первый старт расчёта индикатора
      limit=rates_total-min_rates_total-1; // стартовый номер для расчёта всех баров
   else limit=rates_total-prev_calculated; // стартовый номер для расчёта новых баров 
//--- индексация элементов в массивах как в таймсериях  
   ArraySetAsSeries(time,true);
   for(int count=0; count        

Recommend