Группа "Стол заказов MQL"

Рейтинг 2147



РЕКОМЕНДУЮ



Добавление оповещения к индикатору

Доброго времени суток!
Можете «прикрутить» к индикатору возможность оправки оповещения на мобильный MT?

//+------------------------------------------------------------------+
//|                                                  TRIX ARROWS.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.004"
#property description "Triple Exponential Average + signal period + arrows"
#include <MovingAverages.mqh>
//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 10
#property indicator_plots   4
//--- TRIX
#property indicator_label1  "TRIX"
#property indicator_color1  clrRed
#property indicator_width1  1
#property indicator_type1   DRAW_LINE
#property indicator_style1  STYLE_SOLID
//--- Signal
#property indicator_label2  "Signal"
#property indicator_color2  clrBlue
#property indicator_width2  1
#property indicator_type2   DRAW_LINE
#property indicator_style2  STYLE_DOT
//--- Arrows
#property indicator_label3  "Arrows Up" 
#property indicator_color3  clrBlue
#property indicator_width3  1 
#property indicator_type3   DRAW_ARROW
#property indicator_label4  "Arrows Down" 
#property indicator_color4  clrRed 
#property indicator_width4  1 
#property indicator_type4   DRAW_ARROW
//---
#property indicator_applied_price PRICE_CLOSE
//--- input parameters
input int               InpPeriodEMA   = 14;    // EMA period
input int               InpSignalPeriod= 8;     // Signal period
input ushort            InpCodeUp      = 233;   // Symbol code up 
input ushort            InpCodeDown    = 234;   // Symbol code down
//--- indicator buffers
double                  TRIX_Buffer[];
double                  Signal_Buffer[];
double                  Arrows_Buffer_Up[];
double                  Arrows_Buffer_Down[];

double                  EMA_TRIX[];
double                  SecondEMA_TRIX[];
double                  ThirdEMA_TRIX[];

double                  EMA_Signal[];
double                  SecondEMA_Signal[];
double                  ThirdEMA_Signal[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping 
   SetIndexBuffer(0,TRIX_Buffer,INDICATOR_DATA);
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,3*InpPeriodEMA-3);
//--- name for index label
   PlotIndexSetString(0,PLOT_LABEL,"TRIX("+string(InpPeriodEMA)+")");
   SetIndexBuffer(1,Signal_Buffer,INDICATOR_DATA);
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,3*InpSignalPeriod-3);
//--- name for index label
   PlotIndexSetString(1,PLOT_LABEL,"Signal("+string(InpSignalPeriod)+")");
   SetIndexBuffer(2,Arrows_Buffer_Up,INDICATOR_DATA);
//--- define the symbol code for drawing in PLOT_ARROW 
   PlotIndexSetInteger(2,PLOT_ARROW,InpCodeUp);
//--- set the vertical shift of arrows in pixels 
   PlotIndexSetInteger(2,PLOT_ARROW_SHIFT,5);
//--- set as an empty value 0 
   PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);
   SetIndexBuffer(3,Arrows_Buffer_Down,INDICATOR_DATA);
//--- define the symbol code for drawing in PLOT_ARROW 
   PlotIndexSetInteger(3,PLOT_ARROW,InpCodeDown);
//--- set the vertical shift of arrows in pixels 
   PlotIndexSetInteger(3,PLOT_ARROW_SHIFT,5);
//--- set as an empty value 0 
   PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,0);
//---
   SetIndexBuffer(4,EMA_TRIX,INDICATOR_CALCULATIONS);
   SetIndexBuffer(5,SecondEMA_TRIX,INDICATOR_CALCULATIONS);
   SetIndexBuffer(6,ThirdEMA_TRIX,INDICATOR_CALCULATIONS);
   SetIndexBuffer(7,EMA_Signal,INDICATOR_CALCULATIONS);
   SetIndexBuffer(8,SecondEMA_Signal,INDICATOR_CALCULATIONS);
   SetIndexBuffer(9,ThirdEMA_Signal,INDICATOR_CALCULATIONS);
//--- name for indicator label
   IndicatorSetString(INDICATOR_SHORTNAME,"TRIX("+string(InpPeriodEMA)+
                      "), Signal("+string(InpSignalPeriod)+")");
//--- indicator digits
   IndicatorSetInteger(INDICATOR_DIGITS,5);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Triple Exponential Average                                       |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- check for data
   if(rates_total<3*InpPeriodEMA-3 || rates_total<3*InpSignalPeriod-3)
      return(0);
//---
   int limit_TRIX;
   int limit_Signal;
   int limit_Arrows;
   if(prev_calculated==0)
     {
      limit_TRIX=3*(InpPeriodEMA-1);
      for(int i=0;i<limit_TRIX;i++)
         TRIX_Buffer[i]=EMPTY_VALUE;

      limit_Signal=3*(InpSignalPeriod-1);
      for(int i=0;i<limit_Signal;i++)
         Signal_Buffer[i]=EMPTY_VALUE;

      limit_Arrows=0;
     }
   else
      limit_TRIX=limit_Signal=limit_Arrows=prev_calculated-1;
//--- calculate EMA
   ExponentialMAOnBuffer(rates_total,prev_calculated,0,InpPeriodEMA,price,EMA_TRIX);
//--- calculate EMA on EMA array
   ExponentialMAOnBuffer(rates_total,prev_calculated,InpPeriodEMA-1,InpPeriodEMA,EMA_TRIX,SecondEMA_TRIX);
//--- calculate EMA on EMA array on EMA array
   ExponentialMAOnBuffer(rates_total,prev_calculated,2*InpPeriodEMA-2,InpPeriodEMA,SecondEMA_TRIX,ThirdEMA_TRIX);
//--- calculate TRIX
   for(int i=limit_TRIX;i<rates_total && !IsStopped();i++)
     {
      if(ThirdEMA_TRIX[i-1]!=0.0)
         TRIX_Buffer[i]=(ThirdEMA_TRIX[i]-ThirdEMA_TRIX[i-1])/ThirdEMA_TRIX[i-1];
      else
         TRIX_Buffer[i]=0.0;
     }
//--- calculate signal
   ExponentialMAOnBuffer(rates_total,prev_calculated,0,InpSignalPeriod,price,EMA_Signal);
//--- calculate EMA on EMA array
   ExponentialMAOnBuffer(rates_total,prev_calculated,InpSignalPeriod-1,InpSignalPeriod,EMA_Signal,SecondEMA_Signal);
//--- calculate EMA on EMA array on EMA array
   ExponentialMAOnBuffer(rates_total,prev_calculated,2*InpSignalPeriod-2,InpSignalPeriod,SecondEMA_Signal,ThirdEMA_Signal);
//--- calculate signal
   for(int i=limit_Signal;i<rates_total && !IsStopped();i++)
     {
      if(ThirdEMA_Signal[i-1]!=0.0)
         Signal_Buffer[i]=(ThirdEMA_Signal[i]-ThirdEMA_Signal[i-1])/ThirdEMA_Signal[i-1];
      else
         Signal_Buffer[i]=0.0;
     }
//--- calculate arrows
   for(int i=limit_Arrows;i<rates_total && !IsStopped();i++)
     {
      if(i>0)
        {
         if(Signal_Buffer[i-1]<TRIX_Buffer[i-1] && Signal_Buffer[i]>TRIX_Buffer[i])
            Arrows_Buffer_Up[i]=TRIX_Buffer[i];
         else
            Arrows_Buffer_Up[i]=0;

         if(Signal_Buffer[i-1]>TRIX_Buffer[i-1] && Signal_Buffer[i]<TRIX_Buffer[i])
            Arrows_Buffer_Down[i]=TRIX_Buffer[i];
         else
            Arrows_Buffer_Down[i]=0;
        }
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }
//+------------------------------------------------------------------+
  • +1
  • Просмотров: 2262
  • 3 ноября 2017, 10:44
  • Kudryashov
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник EA-Mantapz
Следующая запись в группе  
Прогнозирующий индикатор
02 ноября 2017
03 ноября 2017

Брокер для ваших роботов, 15 лет на рынке

Комментарии (9)

+
0
Этого точно никто не сделает, но могут за деньги сделать отправку на почту
avatar

  13  axe44 Сообщений: 1149 - Алек

  • 3 ноября 2017, 10:47
+
0
Этого точно никто не сделает, но могут за деньги сделать отправку на почту.
Моё мнение об идеи индикатора «так себе». Поищи что получше
avatar

  13  axe44 Сообщений: 1149 - Алек

  • 3 ноября 2017, 10:49
+
0
Не пугайте человека такими высказывания. АМ2 на сайте www.mql5.com полазиет и найдет что то годное и поможет человеку
avatar

  10  Nadejda-stav Сообщений: 157

  • 3 ноября 2017, 11:45
+
+1
www.mql5.com/ru/code/11011 ссылка на похожий советник
avatar

  10  Nadejda-stav Сообщений: 157

  • 3 ноября 2017, 11:49
+
0
Спасибочки!*drinks*  но это советник на mql4 а там я знаю как сделать отправку… а вот сейчас с 5 версией разбираюсь… и не получается пока что никак
avatar

  8  Kudryashov Автор Сообщений: 129

  • 3 ноября 2017, 11:53
+
0
www.mql5.com/ru/docs/common/sendnotification
Обратите внимание на ограничения.
avatar

  17  vis Сообщений: 200 - ♫♪♫♪

  • 3 ноября 2017, 12:46
+
0
После выходных посмотрю.
avatar

  35  AM2 Сообщений: 16303 - Андрей

  • 3 ноября 2017, 18:01
+
0
Я пробовал делать как в МТ4:


   if(t!=time[0])
     {
      if(Arrows_Buffer_Up[2]>0) Alert("UP!!!");
      if(Arrows_Buffer_Down[2]>0) Alert("DN!!!");
      t=time[0];
     }

   Comment("\n UP: ",Arrows_Buffer_Up[2],
           "\n DN: ",Arrows_Buffer_Down[2]);


Здесь такое не прокатывает, пытался найти как делать не нашел. К платному.
avatar

  35  AM2 Сообщений: 16303 - Андрей

  • 10 ноября 2017, 21:44
+
0
Ясненько… Спасибо!
avatar

  8  Kudryashov Автор Сообщений: 129

  • 14 ноября 2017, 11:19

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий