[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 120 из 141«12118119120121122140141»
Форум Трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Аллерт в Индикатор Alert() Alert Arrow (Алерт на экране после сигнала индикатора + уведомления почта)
Аллерт в Индикатор Alert() Alert Arrow
Дата: Среда, 03.04.2013, 18:22 | Сообщение # 1 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline


Алерт в индикатор. Как вставить Alert и Arrow в индикатор?

Внимание: Если Вы хотите чтобы Вам помогли в данной теме, пожалуйста:
1. Прикрепите индикатор, в который требуется вставить алерт. Открытый код!
2. Прикрепите картинку с данного индикатора, где ВЫ добавили стрелки и показали когда должен вознкиать алерт
3. Опишите словами подробно когда должен звучать алерт.

4. Сделайте краткое описание индикатора!

Наиболее частыми запросами в поисковике и в темах разных форумах встречаются фразы:
"Индикатора алерт","индикатор alert","Как добавить в индикатор звуковой сигнал?","Помогите вставить звуковой сигнал в индикатор", "Как вставить Alert и Стрелки ", "Как отправить сообщение на почту или телефон при сигнале от индикатора?"
В данной статье я попытаюсь максимально подробно рассказать легкий путь добавления Alert Mail Push Arrow в любой индикатор от www.expforex.com




Предисловие

Для того, чтобы начать правильную установку Алертов в Ваш индикатор, необходимо иметь открытый код Вашего индикатора. Декомпилированный код нежелателен, потому , что для новичка декомпилированный код представляет минимум информации. В нем трудно разобраться. А также у
Вас после редактирования могут возникнуть проблемы с компиляцией.


Начало работы

В первую очередь Вам необходимо выяснить, какие индикаторные буферы дают тот или иной сигнал, какова цель создания алерта, Каковы условия определения сигнала на индикаторе.
Важно: В индикаторах могут показываться только внешние буферы, определенные вначале кода переменной:
#property indicator_buffers 1
Но также в индикаторе могут быть скрытые буферы, которые задаются в функции init() и объявляются переменной:
IndicatorBuffers(7);
Нам нужны только первые буферы. Если например у Вас стоит 1 внешний буфер, то смотрим на переменную:
SetIndexBuffer(0,SarBuffer);
0 - это первый буфер
1 - это второй буфер .........



Настройки Алертов:
extern string Alerts="Алерты и стрелки от www.expforex.com";
extern bool AlerT=true;  // Выдавать алерт на экран
extern bool Mail=true;   // Посылать сообщение
extern bool Push=true;   // Посылать ПУШ на телефон
extern bool Arrow=true;  // Ставить стрелки на сигналах
extern int shift=1;      // На каком баре считать сигнал 0 - на текущем 1 - на закрытом


Внимание!
Данная ветка создана для ПОМОЩИ, а не для редактирования Вашего кода. Если Вы желаете каких то особых алертов  - обращайтесь в раздел программирование.
Просьбы выполняются с наиболее интересными индикаторами, без доработок, в свободное время и под хорошее настроение.


Прикрепите индикатор и картинку с сигналами.
Прикрепления: DT-ZigZag-Lauer.mq4(3Kb)


Мы лучшие
 
Дата: Понедельник, 29.08.2016, 19:57 | Сообщение # 1191 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
PlaySound(WaveFileName);
здесь переменная WaveFileName не объявлена, я просто как пример ее взял. вместо WaveFileName надо вписать имя файла в кавычках 


Мы лучшие
 
Дата: Понедельник, 29.08.2016, 20:28 | Сообщение # 1192 Написал: Ed71
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 18
Награды: 0
Статус: Offline
Новая засада. Если убираю строки: if(EnableAlert)Alert("WPR Over Bought "+Symbol()+" TF: "+Period()); 
то линия индикатора начинает отставать от соответствующей ей линии WPR multi и сигналит совершенно не там где нужно. А почему, когда я определяю переменную 
extern string WaveFileName="Sirena.wav";
редактор выдает ошибку. Что я делаю не так?
 
Дата: Понедельник, 29.08.2016, 21:21 | Сообщение # 1193 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
Ed71Alert нткак не связан с буферами индикатора, вообще никак, и убрать эту строку никак не влияет на поведение индикатора в плане каких то линий, 
убрать строку означает убрать алерт - значит убрали что то лишнее,

что за ошибку пишет компилятор?


Мы лучшие
 
Дата: Понедельник, 29.08.2016, 21:36 | Сообщение # 1194 Написал: Ed71
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 18
Награды: 0
Статус: Offline
Вот в таком варианте у меня нормально сработал звуковой сигнал, но нет таблички с оповещением на какой паре. Добавил функцию Comment, но все равно не работает
 
//+------------------------------------------------------------------+
 //|                                                                  |
 //|                         www.forexdyr.com                         |
 //|                         King_Prog                                |
 //+------------------------------------------------------------------+
   
#property copyright "King_Brog"
#property link      "www.forexdyr.com"

#property indicator_separate_window
#property indicator_minimum -100
#property indicator_maximum 0
#property indicator_buffers 1
#property indicator_color1 Aqua

extern int period=14;
extern bool EnableAlert=true;
extern double OverSold=-80;
extern double OverBought=-20;
extern bool EnableSendMail=false;
extern bool EnableComment=true;

datetime Timee;
double WPR_Line[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,WPR_Line);
   SetIndexStyle(0,DRAW_LINE);
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
 {
  Comment("");
  return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() 
 { 
  if(EnableComment)Comment("King_Prog"+"\n"+"www.forexdyr.com");  
   
  int bars=Bars-IndicatorCounted();
  
  for(int i=0;i<=bars;i++)
  {
   WPR_Line=iWPR(Symbol(),0,period,i);
  }  
   
  if(WPR_Line[1]>=OverBought&&WPR_Line[2]<OverBought&&Timee!=Time[0])
  {
   if(EnableAlert)PlaySound("GOOD13.wav");
   Comment("WPR Over Bought "+Symbol()+" TF: "+Period());
   if(EnableSendMail)SendMail("WPR Over Bought","WPR Over Bought "+Symbol()+" period: "+Period());
   Timee=Time[0];
  }
  
  if(WPR_Line[1]<=OverSold&&WPR_Line[2]>OverSold&&Timee!=Time[0])
  {
   if(EnableAlert)PlaySound("GOOD13.wav");
   Comment("WPR Over Sold "+Symbol()+" TF: "+Period());
   if(EnableSendMail)SendMail("WPR Over Sold","WPR Over Sold "+Symbol()+" period: "+Period());
   Timee=Time[0];
  }   
  
 }
 
Дата: Понедельник, 29.08.2016, 21:44 | Сообщение # 1195 Написал: Ed71
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 18
Награды: 0
Статус: Offline
А если функцию Alert поставить после PlaySound вместо Comment, так будет работать? Чтобы окошко выскакивало с парой, на которой сработал сигнал.

Сообщение отредактировал Ed71 - Понедельник, 29.08.2016, 21:46
 
Дата: Понедельник, 29.08.2016, 21:54 | Сообщение # 1196 Написал: Ed71
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 18
Награды: 0
Статус: Offline
Вот так?
 
//+------------------------------------------------------------------+
 //|                                                                  |
 //|                         www.forexdyr.com                         |
 //|                         King_Prog                                |
 //+------------------------------------------------------------------+
   
#property copyright "King_Brog"
#property link      "www.forexdyr.com"

#property indicator_separate_window
#property indicator_minimum -100
#property indicator_maximum 0
#property indicator_buffers 1
#property indicator_color1 Aqua

extern int period=14;
extern bool EnableAlert=true;
extern double OverSold=-80;
extern double OverBought=-20;
extern bool EnableSendMail=false;
extern bool EnableComment=true;

datetime Timee;
double WPR_Line[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,WPR_Line);
   SetIndexStyle(0,DRAW_LINE);
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
 {
  Comment("");
  return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() 
 { 
  if(EnableComment)Comment("King_Prog"+"\n"+"www.forexdyr.com");  
   
  int bars=Bars-IndicatorCounted();
  
  for(int i=0;i<=bars;i++)
  {
   WPR_Line=iWPR(Symbol(),0,period,i);
  }  
   
  if(WPR_Line[1]>=OverBought&&WPR_Line[2]<OverBought&&Timee!=Time[0])
  {
   PlaySound("GOOD13.wav");
   Alert("WPR Over Sold "+Symbol()+" TF: "+Period());
   Timee=Time[0];
  }
  
  if(WPR_Line[1]<=OverSold&&WPR_Line[2]>OverSold&&Timee!=Time[0])
  {
   PlaySound("GOOD13.wav");
   Alert("WPR Over Sold "+Symbol()+" TF: "+Period());
   Timee=Time[0];
  }   
  
 }
 
Дата: Понедельник, 29.08.2016, 21:57 | Сообщение # 1197 Написал: Ed71
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 18
Награды: 0
Статус: Offline
Нет, так не работает, почему то. Опять звук стандартный. Может быть вот так нужно?
 
//+------------------------------------------------------------------+
 //|                                                                  |
 //|                         www.forexdyr.com                         |
 //|                         King_Prog                                |
 //+------------------------------------------------------------------+
   
#property copyright "King_Brog"
#property link      "www.forexdyr.com"

#property indicator_separate_window
#property indicator_minimum -100
#property indicator_maximum 0
#property indicator_buffers 1
#property indicator_color1 Aqua

extern int period=14;
extern bool EnableAlert=true;
extern double OverSold=-80;
extern double OverBought=-20;
extern bool EnableSendMail=false;
extern bool EnableComment=true;

datetime Timee;
double WPR_Line[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,WPR_Line);
   SetIndexStyle(0,DRAW_LINE);
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
 {
  Comment("");
  return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() 
 { 
  if(EnableComment)Comment("King_Prog"+"\n"+"www.forexdyr.com");  
   
  int bars=Bars-IndicatorCounted();
  
  for(int i=0;i<=bars;i++)
  {
   WPR_Line=iWPR(Symbol(),0,period,i);
  }  
   
  if(WPR_Line[1]>=OverBought&&WPR_Line[2]<OverBought&&Timee!=Time[0])
  {
   if(EnableAlert)PlaySound("GOOD13.wav");
   if(EnableAlert)Comment("WPR Over Sold "+Symbol()+" TF: "+Period());
   if(EnableSendMail)SendMail("WPR Over Bought","WPR Over Bought "+Symbol()+" period: "+Period());
   Timee=Time[0];
  }
  
  if(WPR_Line[1]<=OverSold&&WPR_Line[2]>OverSold&&Timee!=Time[0])
  {
   if(EnableAlert)PlaySound("GOOD13.wav");
   if(EnableAlert)Comment("WPR Over Sold "+Symbol()+" TF: "+Period());
   if(EnableSendMail)SendMail("WPR Over Sold","WPR Over Sold "+Symbol()+" period: "+Period());
   Timee=Time[0];
  }   
  
 }


Сообщение отредактировал Ed71 - Понедельник, 29.08.2016, 22:15
 
Дата: Вторник, 30.08.2016, 07:59 | Сообщение # 1198 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
тут либо звук, либо алерт. 
Алерт имеет свой звук, два звука одновременно нельзя, перебивать будет.
Хотя непонятно почему PlaySound после алерта вызывает фырканье, он должен перебить звук алерта.


Мы лучшие
 
Дата: Вторник, 30.08.2016, 08:15 | Сообщение # 1199 Написал: Ed71
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 18
Награды: 0
Статус: Offline
Читал где-то, что в потоке одновременное использование PlaySound с Alert часто не срабатывает. Здесь, наверное, как раз тот самый случай. А нет никакой функции, чтобы она нужную информацию в окошке без звука выводила?

Сообщение отредактировал Ed71 - Вторник, 30.08.2016, 08:16
 
Дата: Вторник, 30.08.2016, 08:24 | Сообщение # 1200 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
MessageBox

Мы лучшие
 
Форум Трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Аллерт в Индикатор Alert() Alert Arrow (Алерт на экране после сигнала индикатора + уведомления почта)
Страница 120 из 141«12118119120121122140141»
Поиск: