Старт распродаж! Черная пятница - 50%


Новые сообщения · Участники · Правила форума · Поиск · RSS · Вход · Регистрация ·

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

expforexДата: Среда, 03.04.2013, 18:22 | Сообщение # 1
Главный Администартор
Группа: Администраторы
Сообщений: 8951
Награды: 29
Статус: 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)


Программирование на заказ || Наши Разработки

 
Сообщение

Алерт в индикатор. Как вставить 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 - на закрытом


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


Прикрепите индикатор и картинку с сигналами.

Автор - expforex
Дата добавления - 03.04.2013 в 18:22

expforexДата: Среда, 26.08.2015, 15:36 | Сообщение # 891
Главный Администартор
Группа: Администраторы
Сообщений: 8951
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

wer789, что именно у Вас не получилось? и где сам индикатор?



Программирование на заказ || Наши Разработки

 
Сообщениеwer789, что именно у Вас не получилось? и где сам индикатор?

Автор - expforex
Дата добавления - 26.08.2015 в 15:36

trader-profitДата: Четверг, 27.08.2015, 18:15 | Сообщение # 892
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 2
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Здравствуйте! Подскажите пожалуйста, мне нужно установить аллерт в индикатор, когда все четыре квадрата становятся одновременно одного цвета. Я посмотрел Ваше видео, где Вы на примере MACD описываете этот процесс. Но мой индикатор работает совершенно по другим принципам. в нём CCI отображается одновременно на 4 таймфреймах. Подскажите, каким образом возможно вставить аллерт именно в этот индикатор? Буду признателен за ответ! Сигнал должен быть, когда все поля индикатора становятся одного цвета а стрелка должна быть на следующей свечке после такого сигнала, если индикатор перерисовался, то стрелка должна пропасть. Вот скрин

Прикрепления: 5173486.jpg(71Kb) · qMTF_Forex_free.mq4(8Kb)
 
СообщениеЗдравствуйте! Подскажите пожалуйста, мне нужно установить аллерт в индикатор, когда все четыре квадрата становятся одновременно одного цвета. Я посмотрел Ваше видео, где Вы на примере MACD описываете этот процесс. Но мой индикатор работает совершенно по другим принципам. в нём CCI отображается одновременно на 4 таймфреймах. Подскажите, каким образом возможно вставить аллерт именно в этот индикатор? Буду признателен за ответ! Сигнал должен быть, когда все поля индикатора становятся одного цвета а стрелка должна быть на следующей свечке после такого сигнала, если индикатор перерисовался, то стрелка должна пропасть. Вот скрин


Автор - trader-profit
Дата добавления - 27.08.2015 в 18:15

expforexДата: Четверг, 27.08.2015, 18:43 | Сообщение # 893
Главный Администартор
Группа: Администраторы
Сообщений: 8951
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Приветствую, у Вас собственно то ничего сложного нет . Если ВЫ смотрели мое видео - там 1 буфер у Вас их 8
4 красные 4 синие
double buf4_up[];
double buf4_down[];
double buf3_up[];
double buf3_down[];
double buf2_up[];
double buf2_down[];
double buf1_up[];
double buf1_down[];

собственно их и проверять на наличие пустых значений

пример на бай

  

Код
if(timeee!=Time[0] && buf1_up[shift]!=EMPTY_VALUE && buf2_up[shift]!=EMPTY_VALUE
&& buf3_up[shift]!=EMPTY_VALUE&& buf4_up[shift]!=EMPTY_VALUE)
                 {
                   Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" UP",1);
                      timeee=Time[0];             
                 }

  

попробуйте.



Программирование на заказ || Наши Разработки

 
СообщениеПриветствую, у Вас собственно то ничего сложного нет . Если ВЫ смотрели мое видео - там 1 буфер у Вас их 8
4 красные 4 синие
double buf4_up[];
double buf4_down[];
double buf3_up[];
double buf3_down[];
double buf2_up[];
double buf2_down[];
double buf1_up[];
double buf1_down[];

собственно их и проверять на наличие пустых значений

пример на бай

  
Код
if(timeee!=Time[0] && buf1_up[shift]!=EMPTY_VALUE && buf2_up[shift]!=EMPTY_VALUE
&& buf3_up[shift]!=EMPTY_VALUE&& buf4_up[shift]!=EMPTY_VALUE)
                 {
                   Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" UP",1);
                      timeee=Time[0];             
                 }

  

попробуйте.

Автор - expforex
Дата добавления - 27.08.2015 в 18:43

trader-profitДата: Воскресенье, 30.08.2015, 21:39 | Сообщение # 894
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 2
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Ничего не выходит sad Можете посмотреть, что здесь не так? Буду очень благодарен! Сам индикатор в сообщении выше. Вот код:

Код
//+------------------------------------------------------------------+
//|                    #MTF Supertrend Bar.mq4 |
//|                    Copyright © 2006, Eli hayun |
//|                    http://www.elihayun.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Eli hayun"
#property link      "http://www.elihayun.com"
//----
#property indicator_separate_window
#property indicator_minimum -1
//#property indicator_maximum 5
#property indicator_buffers 8
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Red
#property indicator_color4 Blue
#property indicator_color5 Red
#property indicator_color6 Blue
#property indicator_color7 Red
#property indicator_color8 Blue
//---- buffers
double buf4_up[];
double buf4_down[];
double buf3_up[];
double buf3_down[];
double buf2_up[];
double buf2_down[];
double buf1_up[];
double buf1_down[];

//+======================================================================================+
//+================================ www.expforex.com edit AlertArrow ====================+
//+======================================================================================+
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 - на закрытом
int timeee;              // Внутренняя переменная
string nameInd;

void SetArrow(int cd, color cl,
string nm="", datetime t1=0, double p1=0, int sz=3) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (t1<=0) t1=Time[0];
if (p1<=0) p1=Bid;
nameInd=WindowExpertName( );
int wind=WindowFind(nameInd);
if (wind==-1)wind=0;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, wind, 0,0);
ObjectSet(nm, OBJPROP_TIME1    , t1);
ObjectSet(nm, OBJPROP_PRICE1   , p1);
ObjectSet(nm, OBJPROP_ARROWCODE, cd);
ObjectSet(nm, OBJPROP_COLOR    , cl);
ObjectSet(nm, OBJPROP_WIDTH    , sz);
}

void Expforex_AlertArrow(string text="",int arrowdir=0)
{
nameInd=WindowExpertName( );
int wind=WindowFind(nameInd);
if (wind==-1)wind=0;
ObjectCreate("Originalalert",OBJ_LABEL,wind,0,0);
ObjectSetText("Originalalert","Модификация AlertArrow www.expforex.com",10,"Arial Bold",Red);
ObjectSet("Originalalert",OBJPROP_CORNER,2);
ObjectSet("Originalalert",OBJPROP_XDISTANCE,200);
ObjectSet("Originalalert",OBJPROP_YDISTANCE,10);

if(AlerT) Alert(text);
if(Arrow) if (arrowdir==1) SetArrow(241,Blue,nameInd+DoubleToStr(Time[shift],0),Time[shift],Low[shift]);
if(Arrow) if (arrowdir==2) SetArrow(242,Red,nameInd+DoubleToStr(Time[shift],0),Time[shift],High[shift]);
if (!IsTesting())if(Mail)  SendMail(text, text);
if (!IsTesting())if(Push)  SendNotification(text);

}

//+======================================================================================+
//+================================ www.expforex.com edit AlertArrow ====================+
//+======================================================================================+
//----
extern double Gap=1; // Gap between the lines of bars
extern int Period_1=PERIOD_M15;
extern int Period_2=PERIOD_M30;
extern int Period_3=PERIOD_H1;
extern int Period_4=PERIOD_H4;
extern bool AutoDisplay     =false;
//----
string shortname="";
bool firstTime=true;
int UniqueNum=228;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
SetAutoDisplay();
shortname="# Forex Freedom("+Period_1+","+Period_2+","+Period_3+","+Period_4+")";
firstTime=true;
IndicatorShortName(shortname);
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,110);
SetIndexBuffer(0,buf4_up);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,110);
SetIndexBuffer(1,buf4_down);
SetIndexEmptyValue(1,0.0);
SetIndexStyle(2,DRAW_ARROW);
SetIndexArrow(2,110);
SetIndexBuffer(2,buf3_up);
SetIndexEmptyValue(2,0.0);
SetIndexStyle(3,DRAW_ARROW);
SetIndexArrow(3,110);
SetIndexBuffer(3,buf3_down);
SetIndexEmptyValue(3,0.0);
SetIndexStyle(4,DRAW_ARROW);
SetIndexArrow(4,110);
SetIndexBuffer(4,buf2_up);
SetIndexEmptyValue(4,0.0);
SetIndexStyle(5,DRAW_ARROW);
SetIndexArrow(5,110);
SetIndexBuffer(5,buf2_down);
SetIndexEmptyValue(5,0.0);
SetIndexStyle(6,DRAW_ARROW);
SetIndexArrow(6,110);
SetIndexBuffer(6,buf1_up);
SetIndexEmptyValue(6,0.0);
SetIndexStyle(7,DRAW_ARROW);
SetIndexArrow(7,110);
SetIndexBuffer(7,buf1_down);
SetIndexEmptyValue(7,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
//----
SetAutoDisplay();
shortname="# Forex Freedom("+Period_1+","+Period_2+","+Period_3+","+Period_4+")";
firstTime=true;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                    |
//+------------------------------------------------------------------+
int start()
{
int    counted_bars=IndicatorCounted();
int i=0, y15m=0, y4h=0, y1h=0, y30m=0, yy;
int limit=Bars-counted_bars;
datetime TimeArray_4H[], TimeArray_1H[], TimeArray_30M[], TimeArray_15M[];
//----
if (firstTime || NewBar())
{
firstTime=false;
int win=UniqueNum; // WindowFind(shortname);
double dif=Time[0] - Time[1];
for(int ii=ObjectsTotal()-1; ii>-1; ii--)
{
if (StringFind(ObjectName(ii),"FF_"+win+"_")>=0)
ObjectDelete(ObjectName(ii));
else
ii=-1;
}
//----
double shift=0.2;
for(ii=0; ii<4; ii++)
{
string txt="??";
double gp;
switch(ii)
{
case 0: txt=tf2txt(Period_1);  gp=1 + shift;         break;
case 1: txt=tf2txt(Period_2);  gp=1 + Gap + shift;   break;
case 2: txt=tf2txt(Period_3);  gp=1 + Gap*2 + shift; break;
case 3: txt=tf2txt(Period_4);  gp=1 + Gap*3 + shift; break;
}
string name="FF_"+win+"_"+ii+"_"+txt;
ObjectCreate(name, OBJ_TEXT, WindowFind(shortname), iTime(NULL,0,0)+dif*3, gp);
ObjectSetText(name, txt,8,"Arial", Black);
}
}
ArrayCopySeries(TimeArray_4H,MODE_TIME,Symbol(),Period_4);
ArrayCopySeries(TimeArray_1H,MODE_TIME,Symbol(),Period_3);
ArrayCopySeries(TimeArray_30M,MODE_TIME,Symbol(),Period_2);
ArrayCopySeries(TimeArray_15M,MODE_TIME,Symbol(),Period_1);
//----
for(i=0, y15m=0,  y4h=0,  y1h=0,  y30m=0;i<limit;i++)
{
if (Time[i]<TimeArray_15M[y15m]) y15m++;
if (Time<TimeArray_4H[y4h])   y4h++;
if (Time<TimeArray_1H[y1h])   y1h++;
if (Time<TimeArray_30M[y30m]) y30m++;
for(int tf=0; tf < 4; tf++)
{
int prd;
switch(tf)
{
case 0: prd=Period_1; yy=y15m;  break;
case 1: prd=Period_2; yy=y30m;  break;
case 2: prd=Period_3;  yy=y1h;   break;
case 3: prd=Period_4;  yy=y4h;   break;
}
//----
double cci=iCCI(NULL, prd, 50,PRICE_TYPICAL, yy);
double dUp=EMPTY_VALUE; //   iCustom(NULL, prd, "SuperTrend", false, 1, yy);
double dDn=EMPTY_VALUE; //iCustom(NULL, prd, "SuperTrend", false, 0, yy);
if (cci < 0) dUp=1; else dDn=1;
switch(tf)
{
case 0: if (dUp==EMPTY_VALUE)  buf1_down=1;           else buf1_up=1; break;
case 1: if (dUp==EMPTY_VALUE)  buf2_down=1 + Gap * 1; else buf2_up=1 + Gap * 1; break;
case 2: if (dUp==EMPTY_VALUE)  buf3_down =1 + Gap * 2; else buf3_up =1 + Gap * 2; break;
case 3: if (dUp==EMPTY_VALUE)  buf4_down =1  + Gap * 3; else buf4_up =1 + Gap * 3; break;
}
}
}

//+======================================================================================+
//+================================ www.expforex.com edit AlertArrow ====================+
//+======================================================================================+
nameInd=WindowExpertName( );
if(timeee!=Time[0] && buf1_up[shift]!=EMPTY_VALUE && buf2_up[shift]!=EMPTY_VALUE
&& buf3_up[shift]!=EMPTY_VALUE&& buf4_up[shift]!=EMPTY_VALUE)
{
Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" UP",1);
timeee=Time[0];
}
if(timeee!=Time[0] && buf1_down[shift]!=EMPTY_VALUE && buf2_down[shift]!=EMPTY_VALUE
&& buf3_down[shift]!=EMPTY_VALUE&& buf4_down[shift][/i]!=EMPTY_VALUE)
{
Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" DOWN",-1);
timeee=Time[0];
}
//+======================================================================================+
//+================================ www.expforex.com edit AlertArrow ====================+
//+======================================================================================+
return(0);
}
//+------------------------------------------------------------------+
string tf2txt(int tf)
{
if (tf==PERIOD_M1)    return("M1");
if (tf==PERIOD_M5)    return("M5");
if (tf==PERIOD_M15)    return("M15");
if (tf==PERIOD_M30)    return("M30");
if (tf==PERIOD_H1)    return("H1");
if (tf==PERIOD_H4)    return("H4");
if (tf==PERIOD_D1)    return("D1");
if (tf==PERIOD_W1)    return("W1");
if (tf==PERIOD_MN1)    return("MN1");
return("??");
}
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
void SetValues(int p1, int p2, int p3, int p4)
{
Period_1=p1;   Period_2=p2; Period_3=p3; Period_4=p4;
}
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
void SetAutoDisplay()
{
if (AutoDisplay)
{
switch(Period())
{
case PERIOD_M1  :  SetValues(PERIOD_M1,  PERIOD_M5, PERIOD_M15,PERIOD_M30); break;
case PERIOD_M5  :  SetValues(PERIOD_M5,  PERIOD_M15,PERIOD_M30,PERIOD_H1); break;
case PERIOD_M15 :  SetValues(PERIOD_M5,  PERIOD_M15,PERIOD_M30,PERIOD_H1); break;
case PERIOD_M30 :  SetValues(PERIOD_M5, PERIOD_M15,PERIOD_M30, PERIOD_H1); break;
case PERIOD_H1  :  SetValues(PERIOD_M15, PERIOD_M30,PERIOD_H1, PERIOD_H4);  break;
case PERIOD_H4  :  SetValues(PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1);  break;
case PERIOD_D1  :  SetValues(PERIOD_H1,  PERIOD_H4, PERIOD_D1, PERIOD_W1); break;
case PERIOD_W1  :  SetValues(PERIOD_H4,  PERIOD_D1, PERIOD_W1,PERIOD_MN1); break;
case PERIOD_MN1 :  SetValues(PERIOD_H4,  PERIOD_D1, PERIOD_W1,PERIOD_MN1);  break;
}
}
}
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
bool NewBar()
{
static datetime dt=0;
if (Time[0]!=dt)
{
dt=Time[0];
return(true);
}
return(false);
}
//+------------------------------------------------------------------+

 
СообщениеНичего не выходит sad Можете посмотреть, что здесь не так? Буду очень благодарен! Сам индикатор в сообщении выше. Вот код:
Код
//+------------------------------------------------------------------+
//|                    #MTF Supertrend Bar.mq4 |
//|                    Copyright © 2006, Eli hayun |
//|                    http://www.elihayun.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Eli hayun"
#property link      "http://www.elihayun.com"
//----
#property indicator_separate_window
#property indicator_minimum -1
//#property indicator_maximum 5
#property indicator_buffers 8
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Red
#property indicator_color4 Blue
#property indicator_color5 Red
#property indicator_color6 Blue
#property indicator_color7 Red
#property indicator_color8 Blue
//---- buffers
double buf4_up[];
double buf4_down[];
double buf3_up[];
double buf3_down[];
double buf2_up[];
double buf2_down[];
double buf1_up[];
double buf1_down[];

//+======================================================================================+
//+================================ www.expforex.com edit AlertArrow ====================+
//+======================================================================================+
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 - на закрытом
int timeee;              // Внутренняя переменная
string nameInd;

void SetArrow(int cd, color cl,
string nm="", datetime t1=0, double p1=0, int sz=3) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (t1<=0) t1=Time[0];
if (p1<=0) p1=Bid;
nameInd=WindowExpertName( );
int wind=WindowFind(nameInd);
if (wind==-1)wind=0;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, wind, 0,0);
ObjectSet(nm, OBJPROP_TIME1    , t1);
ObjectSet(nm, OBJPROP_PRICE1   , p1);
ObjectSet(nm, OBJPROP_ARROWCODE, cd);
ObjectSet(nm, OBJPROP_COLOR    , cl);
ObjectSet(nm, OBJPROP_WIDTH    , sz);
}

void Expforex_AlertArrow(string text="",int arrowdir=0)
{
nameInd=WindowExpertName( );
int wind=WindowFind(nameInd);
if (wind==-1)wind=0;
ObjectCreate("Originalalert",OBJ_LABEL,wind,0,0);
ObjectSetText("Originalalert","Модификация AlertArrow www.expforex.com",10,"Arial Bold",Red);
ObjectSet("Originalalert",OBJPROP_CORNER,2);
ObjectSet("Originalalert",OBJPROP_XDISTANCE,200);
ObjectSet("Originalalert",OBJPROP_YDISTANCE,10);

if(AlerT) Alert(text);
if(Arrow) if (arrowdir==1) SetArrow(241,Blue,nameInd+DoubleToStr(Time[shift],0),Time[shift],Low[shift]);
if(Arrow) if (arrowdir==2) SetArrow(242,Red,nameInd+DoubleToStr(Time[shift],0),Time[shift],High[shift]);
if (!IsTesting())if(Mail)  SendMail(text, text);
if (!IsTesting())if(Push)  SendNotification(text);

}

//+======================================================================================+
//+================================ www.expforex.com edit AlertArrow ====================+
//+======================================================================================+
//----
extern double Gap=1; // Gap between the lines of bars
extern int Period_1=PERIOD_M15;
extern int Period_2=PERIOD_M30;
extern int Period_3=PERIOD_H1;
extern int Period_4=PERIOD_H4;
extern bool AutoDisplay     =false;
//----
string shortname="";
bool firstTime=true;
int UniqueNum=228;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
SetAutoDisplay();
shortname="# Forex Freedom("+Period_1+","+Period_2+","+Period_3+","+Period_4+")";
firstTime=true;
IndicatorShortName(shortname);
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,110);
SetIndexBuffer(0,buf4_up);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,110);
SetIndexBuffer(1,buf4_down);
SetIndexEmptyValue(1,0.0);
SetIndexStyle(2,DRAW_ARROW);
SetIndexArrow(2,110);
SetIndexBuffer(2,buf3_up);
SetIndexEmptyValue(2,0.0);
SetIndexStyle(3,DRAW_ARROW);
SetIndexArrow(3,110);
SetIndexBuffer(3,buf3_down);
SetIndexEmptyValue(3,0.0);
SetIndexStyle(4,DRAW_ARROW);
SetIndexArrow(4,110);
SetIndexBuffer(4,buf2_up);
SetIndexEmptyValue(4,0.0);
SetIndexStyle(5,DRAW_ARROW);
SetIndexArrow(5,110);
SetIndexBuffer(5,buf2_down);
SetIndexEmptyValue(5,0.0);
SetIndexStyle(6,DRAW_ARROW);
SetIndexArrow(6,110);
SetIndexBuffer(6,buf1_up);
SetIndexEmptyValue(6,0.0);
SetIndexStyle(7,DRAW_ARROW);
SetIndexArrow(7,110);
SetIndexBuffer(7,buf1_down);
SetIndexEmptyValue(7,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
//----
SetAutoDisplay();
shortname="# Forex Freedom("+Period_1+","+Period_2+","+Period_3+","+Period_4+")";
firstTime=true;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                    |
//+------------------------------------------------------------------+
int start()
{
int    counted_bars=IndicatorCounted();
int i=0, y15m=0, y4h=0, y1h=0, y30m=0, yy;
int limit=Bars-counted_bars;
datetime TimeArray_4H[], TimeArray_1H[], TimeArray_30M[], TimeArray_15M[];
//----
if (firstTime || NewBar())
{
firstTime=false;
int win=UniqueNum; // WindowFind(shortname);
double dif=Time[0] - Time[1];
for(int ii=ObjectsTotal()-1; ii>-1; ii--)
{
if (StringFind(ObjectName(ii),"FF_"+win+"_")>=0)
ObjectDelete(ObjectName(ii));
else
ii=-1;
}
//----
double shift=0.2;
for(ii=0; ii<4; ii++)
{
string txt="??";
double gp;
switch(ii)
{
case 0: txt=tf2txt(Period_1);  gp=1 + shift;         break;
case 1: txt=tf2txt(Period_2);  gp=1 + Gap + shift;   break;
case 2: txt=tf2txt(Period_3);  gp=1 + Gap*2 + shift; break;
case 3: txt=tf2txt(Period_4);  gp=1 + Gap*3 + shift; break;
}
string name="FF_"+win+"_"+ii+"_"+txt;
ObjectCreate(name, OBJ_TEXT, WindowFind(shortname), iTime(NULL,0,0)+dif*3, gp);
ObjectSetText(name, txt,8,"Arial", Black);
}
}
ArrayCopySeries(TimeArray_4H,MODE_TIME,Symbol(),Period_4);
ArrayCopySeries(TimeArray_1H,MODE_TIME,Symbol(),Period_3);
ArrayCopySeries(TimeArray_30M,MODE_TIME,Symbol(),Period_2);
ArrayCopySeries(TimeArray_15M,MODE_TIME,Symbol(),Period_1);
//----
for(i=0, y15m=0,  y4h=0,  y1h=0,  y30m=0;i<limit;i++)
{
if (Time[i]<TimeArray_15M[y15m]) y15m++;
if (Time<TimeArray_4H[y4h])   y4h++;
if (Time<TimeArray_1H[y1h])   y1h++;
if (Time<TimeArray_30M[y30m]) y30m++;
for(int tf=0; tf < 4; tf++)
{
int prd;
switch(tf)
{
case 0: prd=Period_1; yy=y15m;  break;
case 1: prd=Period_2; yy=y30m;  break;
case 2: prd=Period_3;  yy=y1h;   break;
case 3: prd=Period_4;  yy=y4h;   break;
}
//----
double cci=iCCI(NULL, prd, 50,PRICE_TYPICAL, yy);
double dUp=EMPTY_VALUE; //   iCustom(NULL, prd, "SuperTrend", false, 1, yy);
double dDn=EMPTY_VALUE; //iCustom(NULL, prd, "SuperTrend", false, 0, yy);
if (cci < 0) dUp=1; else dDn=1;
switch(tf)
{
case 0: if (dUp==EMPTY_VALUE)  buf1_down=1;           else buf1_up=1; break;
case 1: if (dUp==EMPTY_VALUE)  buf2_down=1 + Gap * 1; else buf2_up=1 + Gap * 1; break;
case 2: if (dUp==EMPTY_VALUE)  buf3_down =1 + Gap * 2; else buf3_up =1 + Gap * 2; break;
case 3: if (dUp==EMPTY_VALUE)  buf4_down =1  + Gap * 3; else buf4_up =1 + Gap * 3; break;
}
}
}

//+======================================================================================+
//+================================ www.expforex.com edit AlertArrow ====================+
//+======================================================================================+
nameInd=WindowExpertName( );
if(timeee!=Time[0] && buf1_up[shift]!=EMPTY_VALUE && buf2_up[shift]!=EMPTY_VALUE
&& buf3_up[shift]!=EMPTY_VALUE&& buf4_up[shift]!=EMPTY_VALUE)
{
Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" UP",1);
timeee=Time[0];
}
if(timeee!=Time[0] && buf1_down[shift]!=EMPTY_VALUE && buf2_down[shift]!=EMPTY_VALUE
&& buf3_down[shift]!=EMPTY_VALUE&& buf4_down[shift][/i]!=EMPTY_VALUE)
{
Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" DOWN",-1);
timeee=Time[0];
}
//+======================================================================================+
//+================================ www.expforex.com edit AlertArrow ====================+
//+======================================================================================+
return(0);
}
//+------------------------------------------------------------------+
string tf2txt(int tf)
{
if (tf==PERIOD_M1)    return("M1");
if (tf==PERIOD_M5)    return("M5");
if (tf==PERIOD_M15)    return("M15");
if (tf==PERIOD_M30)    return("M30");
if (tf==PERIOD_H1)    return("H1");
if (tf==PERIOD_H4)    return("H4");
if (tf==PERIOD_D1)    return("D1");
if (tf==PERIOD_W1)    return("W1");
if (tf==PERIOD_MN1)    return("MN1");
return("??");
}
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
void SetValues(int p1, int p2, int p3, int p4)
{
Period_1=p1;   Period_2=p2; Period_3=p3; Period_4=p4;
}
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
void SetAutoDisplay()
{
if (AutoDisplay)
{
switch(Period())
{
case PERIOD_M1  :  SetValues(PERIOD_M1,  PERIOD_M5, PERIOD_M15,PERIOD_M30); break;
case PERIOD_M5  :  SetValues(PERIOD_M5,  PERIOD_M15,PERIOD_M30,PERIOD_H1); break;
case PERIOD_M15 :  SetValues(PERIOD_M5,  PERIOD_M15,PERIOD_M30,PERIOD_H1); break;
case PERIOD_M30 :  SetValues(PERIOD_M5, PERIOD_M15,PERIOD_M30, PERIOD_H1); break;
case PERIOD_H1  :  SetValues(PERIOD_M15, PERIOD_M30,PERIOD_H1, PERIOD_H4);  break;
case PERIOD_H4  :  SetValues(PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1);  break;
case PERIOD_D1  :  SetValues(PERIOD_H1,  PERIOD_H4, PERIOD_D1, PERIOD_W1); break;
case PERIOD_W1  :  SetValues(PERIOD_H4,  PERIOD_D1, PERIOD_W1,PERIOD_MN1); break;
case PERIOD_MN1 :  SetValues(PERIOD_H4,  PERIOD_D1, PERIOD_W1,PERIOD_MN1);  break;
}
}
}
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
bool NewBar()
{
static datetime dt=0;
if (Time[0]!=dt)
{
dt=Time[0];
return(true);
}
return(false);
}
//+------------------------------------------------------------------+

Автор - trader-profit
Дата добавления - 30.08.2015 в 21:39

expforexДата: Воскресенье, 30.08.2015, 22:08 | Сообщение # 895
Главный Администартор
Группа: Администраторы
Сообщений: 8951
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

попробуйте

Прикрепления: 4182022.mq4(12Kb)


Программирование на заказ || Наши Разработки

 
Сообщениепопробуйте

Автор - expforex
Дата добавления - 30.08.2015 в 22:08

Иван1946Дата: Среда, 02.09.2015, 09:55 | Сообщение # 896
Трейдер - Лейтенант
Группа: Пользователи
Сообщений: 76
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Доступно только для пользователей

Доступно только для пользователей

Прикрепления: 8592575.png(165Kb)


Сообщение отредактировал Иван1946 - Четверг, 03.09.2015, 15:49
 

expforexДата: Четверг, 03.09.2015, 13:21 | Сообщение # 897
Главный Администартор
Группа: Администраторы
Сообщений: 8951
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Иван1946, по ADX делал уже, поищите в теме 
Это один тот что нашел, но есть еще много

Прикрепления: 6896295.mq4(8Kb)


Программирование на заказ || Наши Разработки

 
СообщениеИван1946, по ADX делал уже, поищите в теме 
Это один тот что нашел, но есть еще много

Автор - expforex
Дата добавления - 03.09.2015 в 13:21

Иван1946Дата: Четверг, 03.09.2015, 15:49 | Сообщение # 898
Трейдер - Лейтенант
Группа: Пользователи
Сообщений: 76
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Цитата expforex ()
Иван1946, по ADX делал уже, поищите в теме  Это один тот что нашел, но есть еще много

Прикрепления: 6896295.mq4(8Kb)
Это совсем не то. В других прикреплениях отдельные функции, а как из всего этого сделать то что нужно не представляю. Помогите пожалуйста, буду очень признателен.

 
Сообщение
Цитата expforex ()
Иван1946, по ADX делал уже, поищите в теме  Это один тот что нашел, но есть еще много

Прикрепления: 6896295.mq4(8Kb)
Это совсем не то. В других прикреплениях отдельные функции, а как из всего этого сделать то что нужно не представляю. Помогите пожалуйста, буду очень признателен.

Автор - Иван1946
Дата добавления - 03.09.2015 в 15:49

expforexДата: Пятница, 04.09.2015, 10:26 | Сообщение # 899
Главный Администартор
Группа: Администраторы
Сообщений: 8951
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Иван1946, сделал ради интереса. 
прикрепил, отпишитесь о результатах.
+сделал стрелки на истории

Прикрепления: NEW_ADX_www.exp.zip(23Kb) · 1524513.jpg(47Kb)


Программирование на заказ || Наши Разработки

 
СообщениеИван1946, сделал ради интереса. 
прикрепил, отпишитесь о результатах.
+сделал стрелки на истории

Автор - expforex
Дата добавления - 04.09.2015 в 10:26

Иван1946Дата: Пятница, 04.09.2015, 11:24 | Сообщение # 900
Трейдер - Лейтенант
Группа: Пользователи
Сообщений: 76
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Цитата expforex ()
Прикрепления: NEW_ADX_www.exp.zip(23Kb) · 1524513.jpg(47Kb)Б
Большое Спасибо! Все работает супер.



Сообщение отредактировал Иван1946 - Пятница, 04.09.2015, 11:38
 
Сообщение
Цитата expforex ()
Прикрепления: NEW_ADX_www.exp.zip(23Kb) · 1524513.jpg(47Kb)Б
Большое Спасибо! Все работает супер.

Автор - Иван1946
Дата добавления - 04.09.2015 в 11:24
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Аллерт в Индикатор Alert() Alert Arrow (Алерт на экране после сигнала индикатора + уведомления почта)
Страница 90 из 127«128889909192126127»
Поиск:


WebMoney Яндекс цитирования.