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

Рейтинг 2153



РЕКОМЕНДУЮ



Добавить алерт к индикатору

Андрей, прошу добавить к индикатору функции алерта

Индикатор рисует уровни хай и лоу за предыдущий день. Когда цена подходит к уровню, должен сработать алерт.

1.алерт с звуковым уведомлением в терминале (on /off) и количество повторений.
2. алерт — уведомление на телефон (on /off) и количество повторений.

Если не сложно, то добавьте функцию отступ от уровня, чтоб алерт можно было выставить заранее пунктов 100 — 150 до того как цена сделает касание хая или лоу.
HighLow AM2.mq4 (7 Kb)
  • 0
  • Просмотров: 1868
  • 6 мая 2019, 00:22
  • Wizas
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник на индикаторе ренко для mt5
Следующая запись в группе  
Советник по индикатору candle_patterns
05 мая 2019
06 мая 2019

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

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

+
0
на 7-е
avatar

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

  • 6 мая 2019, 17:24
+
0
дайте ссылку на индикатор в базе, чтобы я мог его обновить
avatar

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

  • 7 мая 2019, 19:17
+
0
чуть позже скину, найду тему с заказом индикатора.
avatar

  9  Wizas Автор Сообщений: 146

  • 7 мая 2019, 22:47
+
0
готово:




//+------------------------------------------------------------------+
//|                                                      HighLow.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input int days=5;
input int width=1;
input int style=1;
input int delta=100;
input int count=5;
input bool mail=1;
input bool alert=1;
input color upcolor=Red;
input color dncolor=Blue;
input color txtcolor=Lime;

int num=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2,color clr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии 
   ObjectSetInteger(0,name,OBJPROP_STYLE,style);
//--- установим толщину линии 
   ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо 
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,0);
  }
//+------------------------------------------------------------------+
//| Put Text Function                                                |
//+------------------------------------------------------------------+
void Text(string name,const string text,double price,datetime time,const color clr)
  {
   ObjectDelete(0,name);
//--- create a "Text" object 
   ObjectCreate(0,name,OBJ_TEXT,0,time,price);
//--- set the text
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- set the font of the text
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- set the font size
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,9);
//--- set the method binding
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,4);
//--- set the color
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+
//| Custom indicator 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[])
  {
//---
   double hi1=iHigh(NULL,PERIOD_D1,1);
   double lo1=iLow (NULL,PERIOD_D1,1);

   for(int i=1;i<days;i++)
     {
      double hi=iHigh(NULL,PERIOD_D1,i);
      double lo=iLow (NULL,PERIOD_D1,i);
      datetime tm1=iTime(NULL,PERIOD_D1,i-1);
      datetime tm2=iTime(NULL,PERIOD_D1,i);
      datetime tm=(tm1+tm2)/2;
      int range=(int)((hi-lo)/_Point/10);

      PutTrendLine("Hi"+(string)i,tm1,hi,tm2,hi,upcolor);
      PutTrendLine("Lo"+(string)i,tm1,lo,tm2,lo,dncolor);
      Text("Text"+(string)i,(string)range,hi,tm,txtcolor);
     }

   if(num<count)
     {
      if(alert)
        {
         if(Bid<hi1+delta*_Point && Bid>hi1-delta*_Point) Alert(_Symbol+" Цена около уровня: ",hi1);
         if(Bid<lo1+delta*_Point && Bid>lo1-delta*_Point) Alert(_Symbol+" Цена около уровня: ",lo1);
        }
      if(mail)
        {
         if(Bid<hi1+delta*_Point && Bid>hi1-delta*_Point) SendMail("Signal",_Symbol+" Цена около уровня: "+(string)hi1);
         if(Bid<lo1+delta*_Point && Bid>lo1-delta*_Point) SendMail("Signal",_Symbol+" Цена около уровня: "+(string)lo1);
        }
      num++;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

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

  • 7 мая 2019, 19:35
+
0
Спасибо Андрей! Индикатор в терминале выдает алерт, а на телефон уведомление не приходит, можете подправить?

уведомление на mail можно убрать, его не было в тех. задание.
avatar

  9  Wizas Автор Сообщений: 146

  • 7 мая 2019, 21:20
+
0
заменил мыло на пуш


//+------------------------------------------------------------------+
//|                                                      HighLow.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input int days=5;
input int width=1;
input int style=1;
input int delta=100;
input int count=5;
input bool push=1;
input bool alert=1;
input color upcolor=Red;
input color dncolor=Blue;
input color txtcolor=Lime;

int num=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2,color clr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии 
   ObjectSetInteger(0,name,OBJPROP_STYLE,style);
//--- установим толщину линии 
   ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо 
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,0);
  }
//+------------------------------------------------------------------+
//| Put Text Function                                                |
//+------------------------------------------------------------------+
void Text(string name,const string text,double price,datetime time,const color clr)
  {
   ObjectDelete(0,name);
//--- create a "Text" object 
   ObjectCreate(0,name,OBJ_TEXT,0,time,price);
//--- set the text
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- set the font of the text
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- set the font size
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,9);
//--- set the method binding
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,4);
//--- set the color
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+
//| Custom indicator 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[])
  {
//---
   double hi1=iHigh(NULL,PERIOD_D1,1);
   double lo1=iLow (NULL,PERIOD_D1,1);

   for(int i=1;i<days;i++)
     {
      double hi=iHigh(NULL,PERIOD_D1,i);
      double lo=iLow (NULL,PERIOD_D1,i);
      datetime tm1=iTime(NULL,PERIOD_D1,i-1);
      datetime tm2=iTime(NULL,PERIOD_D1,i);
      datetime tm=(tm1+tm2)/2;
      int range=(int)((hi-lo)/_Point/10);

      PutTrendLine("Hi"+(string)i,tm1,hi,tm2,hi,upcolor);
      PutTrendLine("Lo"+(string)i,tm1,lo,tm2,lo,dncolor);
      Text("Text"+(string)i,(string)range,hi,tm,txtcolor);
     }

   if(num<count)
     {
      if(alert)
        {
         if(Bid<hi1+delta*_Point && Bid>hi1-delta*_Point) Alert(_Symbol+" Цена около уровня: ",hi1);
         if(Bid<lo1+delta*_Point && Bid>lo1-delta*_Point) Alert(_Symbol+" Цена около уровня: ",lo1);
        }
      if(push)
        {
         if(Bid<hi1+delta*_Point && Bid>hi1-delta*_Point) SendNotification(_Symbol+" Цена около уровня: "+(string)hi1);
         if(Bid<lo1+delta*_Point && Bid>lo1-delta*_Point) SendNotification(_Symbol+" Цена около уровня: "+(string)lo1);
        }
      num++;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

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

  • 7 мая 2019, 22:13
+
0
Спасибо, теперь отправляет уведомление на телефон! *good* 
Андрей как то можно сделать, чтоб на телефон только 1 сообщение приходило (не 5), а в терминале пусть 5 раз звенит?
avatar

  9  Wizas Автор Сообщений: 146

  • 7 мая 2019, 22:46
+
0
Андрей, не надо в прошлой теме с заказом обновлять индикатор, там был немного другой заказ, там на хай лоу дня рисовались еще прямоугольники. Пусть в этой теме будет индикатор без меток и с алертом, а в том заказе останется тот.
avatar

  9  Wizas Автор Сообщений: 146

  • 7 мая 2019, 23:01

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