[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 119 из 141«12117118119120121140141»
Форум Трейдеров » Скрипты Советники Индикаторы для 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)


Мы лучшие
 
Дата: Суббота, 27.08.2016, 10:42 | Сообщение # 1181 Написал: kalveg21
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 1
Награды: 0
Статус: Offline
Помогите пожалуйста с кодом для индикатора. Не смог разобраться куда вставлять коды чтоб был алерт. Индикатор стрелочный, хотел чтиоб при появлении стрелки звучал был алерт. Если не трудно добавьте куда надо а я скопирую и встравлю у себя. Заранее спасибо.

//+------------------------------------------------------------------+
//|                                                super-signals.mq4 |
//|                Copyright © 2006, Nick Bilak, beluck[AT]gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Nick Bilak"
#property link      "http://www.forex-tsd.com/"
#property strict

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_width1 2
#property indicator_color2 Lime
#property indicator_width2 2

extern int SignalGap = 4;

int dist=24;
double b1[];
double b2[];

int OnInit()
{
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,1);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,1);
SetIndexArrow(1,233);
SetIndexArrow(0,234);
SetIndexBuffer(0,b1);
SetIndexBuffer(1,b2);
return(INIT_SUCCEEDED);
}

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[])
{
int i,limit,hhb,llb;
if(prev_calculated<0) { return(rates_total); }
limit=rates_total-1-MathMax(dist,prev_calculated);
for (i=limit; i>=0; i--)
{
hhb = iHighest(NULL,0,MODE_HIGH,dist,i-dist/2);
llb = iLowest(NULL,0,MODE_LOW,dist,i-dist/2);

if (i==hhb) { b1=High[hhb]+SignalGap*Point; }
if (i==llb) { b2=Low [llb]
-SignalGap*Point; }
}
return(rates_total);
}
Прикрепления: 4721693.jpg(116Kb)


Сообщение отредактировал kalveg21 - Суббота, 27.08.2016, 10:45
 
Дата: Воскресенье, 28.08.2016, 15:05 | Сообщение # 1182 Написал: Ed71
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 18
Награды: 0
Статус: Offline
Здравствуйте. Если можно, поменяйте, пожалуйста, в индикаторе стандартный звук на сирену. Заранее огромное спасибо.
Прикрепления: Sirena.wav(370Kb) · WPR_Alert-Mail.ex4(10Kb) · WPR_Alert-Mail.mq4(2Kb)


Сообщение отредактировал Ed71 - Воскресенье, 28.08.2016, 15:07
 
Дата: Воскресенье, 28.08.2016, 15:19 | Сообщение # 1183 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
приветствую, 
все звуки находятся в папке Sounds - туда можно запихнуть хоть Бетховена. 
звук алерта называется alert.wav 
но звук алерта в терминале един. 
у Вас в коде только алерт:
   
Код
if(EnableAlert)Alert("WPR Over Bought "+Symbol()+" TF: "+Period());


добавьте
Код
PlaySound("Sirena.wav");


и будет счастье.


Мы лучшие
 
Дата: Понедельник, 29.08.2016, 07:33 | Сообщение # 1184 Написал: Ed71
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 18
Награды: 0
Статус: Offline

Цитата
все звуки находятся в папке Sounds - туда можно запихнуть хоть Бетховена


Да мне не столь важно, что там. Главное, чтобы звук отличался от стандартного. Спасибо Вам огромное за помощь. Сегодня попробую.


Сообщение отредактировал Ed71 - Понедельник, 29.08.2016, 07:34
 
Дата: Понедельник, 29.08.2016, 16:25 | Сообщение # 1185 Написал: 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 Aquaextern 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)Alert("WPR Over Bought "+Symbol()+" TF: "+Period());   PlaySound("Sirena.wav");   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)Alert("WPR Over Sold "+Symbol()+" TF: "+Period());   PlaySound("Sirena.wav");   if(EnableSendMail)SendMail("WPR Over Sold","WPR Over Sold "+Symbol()+" period: "+Period());   Timee=Time[0];  }      }


Сообщение отредактировал Ed71 - Понедельник, 29.08.2016, 16:57
 
Дата: Понедельник, 29.08.2016, 18:20 | Сообщение # 1186 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
значит так терминал воспроизводит ваш звук.
а звук алерта идет перед сигналом? тоесть сначала звук алерта а потом уже фырканье?


Мы лучшие
 
Дата: Понедельник, 29.08.2016, 18:36 | Сообщение # 1187 Написал: Ed71
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 18
Награды: 0
Статус: Offline
Нет сразу короткое фырканье, хотя при загрузке терминала, звук сирены иногда раздается, а в процессе работы нет.
Я у себя нашел индикатор со сторонним звуком, там вроде бы немного по другому реализовано.
Этот индикатор у меня сигналит нормально, в смысле, звук слышен, как надо.
Посмотрите, пожалуйста, может можно на его основе сделать?
Прикрепления: BandsR2.zip(83Kb)
 
Дата: Понедельник, 29.08.2016, 18:55 | Сообщение # 1188 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
по другому реализовано быть не может, только одна функция воспроизводит звук
PlaySound(WaveFileName);
попробуйте убрать if(EnableAlert)Alert("WPR Over Bought "+Symbol()+" TF: "+Period());
может быть алерт перебивает звук сирены.
скажу только одно - если есть 1 звук, то второй сразу же его перебивает. 
посмотрите на мою игрульку
http://www.expforex.com/load....-0-181 


Мы лучшие
 
Дата: Понедельник, 29.08.2016, 19:38 | Сообщение # 1189 Написал: Ed71
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 18
Награды: 0
Статус: Offline
А здесь посмотрите, как сделано:
//+------------------------------------------------------------------+
//|                                                        Bands.mq4 |
//|        // //         Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
//+------------------------------------------------------------------+
//|                                                      BandsR2.mq4 |
//|    Revised Oct 13 2008 Added High/Low Audio Alerts & Options     |
//|                                        ( itemsdepot@hotmail.com) |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Gray
#property indicator_color2 OliveDrab
#property indicator_color3 Brown

#property indicator_width1 1
#property indicator_width2 3
#property indicator_width3 3

//

//---- indicator parameters
extern bool   DrawBands=True;
extern int    DrawRange=100;
extern int    BandsPeriod=7;
extern int    BandsShift=0;
extern double BandsDeviations=2.0;
extern bool   AlertBoxOn=False;
extern bool   SoundAlertHighOn=False;
extern bool   SoundAlertLowOn=False;
extern string WaveFileName="bandup.wav";
extern string WaveFileName2="banddown.wav";
extern double AlarmDelay=5.0;
extern double Counter=0;
//---- buffers
double MovingBuffer[];
double UpperBuffer[];
double LowerBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//---- indicators

if (DrawBands) SetIndexStyle(0,0,0,indicator_width1,indicator_color1);
else SetIndexStyle(0,12,0,indicator_width1,indicator_color1);

SetIndexBuffer(0,MovingBuffer);

if (DrawBands) SetIndexStyle(1,0,0,indicator_width2,indicator_color2);
else SetIndexStyle(1,12,0,indicator_width2,indicator_color2);

SetIndexBuffer(1,UpperBuffer);

if (DrawBands) SetIndexStyle(2,0,0,indicator_width3,indicator_color3);
else SetIndexStyle(2,12,0,indicator_width3,indicator_color3);

SetIndexBuffer(2,LowerBuffer);

//----
SetIndexDrawBegin(0,BandsPeriod+BandsShift);
SetIndexDrawBegin(1,BandsPeriod+BandsShift);
SetIndexDrawBegin(2,BandsPeriod+BandsShift);
//----
Counter=TimeCurrent();
AlarmDelay=5;
return(0);
}

//+------------------------------------------------------------------+
//| Bollinger Bands                                                  |
//+------------------------------------------------------------------+
int start()
{
int    i,k,counted_bars=IndicatorCounted();
double deviation;
double sum,oldval,newres;
double FinishTime=TimeCurrent();
//----
if(Bars<=BandsPeriod) return(0);
//---- initial zero
if(counted_bars<1)
for(i=1;i<=BandsPeriod;i++)
{
MovingBuffer[Bars-i]=EMPTY_VALUE;
UpperBuffer[Bars-i]=EMPTY_VALUE;
LowerBuffer[Bars-i]=EMPTY_VALUE;
}
//----
//int limit=Bars-counted_bars;
//if(counted_bars>0) limit++;
//if ( limit> 50 ) limit = 50;     //dah draw limit 6 hrs on 1M
for(i=DrawRange; i>=0; i--)
MovingBuffer=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
//i=Bars-BandsPeriod+1;
//if(counted_bars>BandsPeriod-1) i=Bars-counted_bars-1;
i=DrawRange;
//----------------------------------
while(i>=0)
{
sum=0.0;
k=i+BandsPeriod-1;
oldval=MovingBuffer;
while(k>=i)
{
newres=Close[k]-oldval;
sum+=newres*newres;
k--;
}
deviation=BandsDeviations*MathSqrt(sum/BandsPeriod);
if (oldval>0) UpperBuffer=oldval+deviation;
if (oldval>0) LowerBuffer=oldval-deviation;

FinishTime=TimeCurrent();

if (( FinishTime - Counter> AlarmDelay ) && i==0)
{

Counter=FinishTime;
if (High> UpperBuffer && AlertBoxOn   ) Print("BandsR1: Candle:"+i+" High Cross: "+High);
if (High> UpperBuffer && SoundAlertHighOn ) PlaySound(WaveFileName);

if (Low < LowerBuffer && AlertBoxOn   ) Print("BandsR1: Candle:"+i+" Low- Cross: "+Low);
if (Low < LowerBuffer && SoundAlertLowOn ) PlaySound(WaveFileName2);

}

i--;

}
//----
return(0);
}
//+------------------------------------------------------------------+

Я попробовал таким образом:
//+------------------------------------------------------------------+
//|                                                                  |
//|                         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;
extern string WaveFileName="Sirena.wav";

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)Alert("WPR Over Bought "+Symbol()+" TF: "+Period()) PlaySound(WaveFileName);
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)Alert("WPR Over Sold "+Symbol()+" TF: "+Period()) PlaySound(WaveFileName);
if(EnableSendMail)SendMail("WPR Over Sold","WPR Over Sold "+Symbol()+" period: "+Period());
Timee=Time[0];
}

}

Но редактор ругается на оператор PlaySound, пишет: some operator expected


Сообщение отредактировал Ed71 - Понедельник, 29.08.2016, 19:42
 
Дата: Понедельник, 29.08.2016, 19:50 | Сообщение # 1190 Написал: Ed71
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 18
Награды: 0
Статус: Offline
Цитата
скажу только одно - если есть 1 звук, то второй сразу же его перебивает.
 
Вы совершенно правы. Впечатление именно такое. Попробовал убрать if(EnableAlert)Alert("WPR Over Bought "+Symbol()+" TF: "+Period()); 
Буду ждать срабатывания индикатора.
 
Форум Трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Аллерт в Индикатор Alert() Alert Arrow (Алерт на экране после сигнала индикатора + уведомления почта)
Страница 119 из 141«12117118119120121140141»
Поиск: