Наиболее частыми запросами в поисковике и в темах разных форумах встречаются фразы:
«Индикатора алерт»,«индикатор alert»,«Как добавить в индикатор звуковой сигнал?»,«Помогите вставить звуковой сигнал в индикатор», «Как вставить Alert и Стрелки », «Как отправить сообщение на почту или телефон при сигнале от индикатора?»
В данной статье я попытаюсь максимально подробно рассказать легкий путь добавления Alert Mail Push Arrow в любой индикатор от добавочного кода www.expforex.com
Предисловие
Для того, чтобы начать правильную установку Алертов в Ваш индикатор, необходимо иметь открытый код Вашего индикатора. Декомпилированный код нежелателен, потому, что для новичка декомпилированный код представляет минимум информации. В нем трудно разобраться. А также у
Вас после редактирования могут возникнуть проблемы с компиляцией.
В первую очередь Вам необходимо выяснить, какие индикаторные буферы дают тот или иной сигнал, какова цель создания алерта, Каковы условия определения сигнала на индикаторе.
Важно: В индикаторах могут показываться только внешние буферы, определенные вначале кода переменной:
#property indicator_buffers 1
Но также в индикаторе могут быть скрытые буферы, которые задаются в функции init() и объявляются переменной:
IndicatorBuffers(7);
Нам нужны только первые буферы. Если например у Вас стоит 1 внешний буфер, то смотрим на переменную:
SetIndexBuffer(0,SarBuffer);
0 — это первый буфер
1 — это второй буфер…
Эти буферы, или их название, можно получить наведя на графике на определенную линию индикатора
Value1 — , Это первый буфер Или 0 в системе исчисления в коде
SetIndexBuffer(0,SarBuffer);
Название данного нужного нам буфера SarBuffer, далее мы и будем его использовать
Далее уже дело техники = определить как будет поступать сигнал,
например если это пересечение 0 линии сверху (снизу) вниз(вверх) то будет выглядеть так:
SarBuffer[shift+1]>=0 && SarBuffer[shift]<0
Если это пересечение индикатором текущей цены или бара, пробой бара индикатором и так далее:
В любом случае, надо проявить логику и творчество, чтобы правильно записать сигнал, Если же у Вас возникли трудности, напишите в данную ветку, только при этом прикрепите индикатор, покажите на графике линии и распишите подробно, что у Вас не получается. Кидать сообщение на подобии «надо вставить алерт в индикатор» без объяснения что куда, и собственно без самого индикатора — не нужно.
Необходимые куски кода от www.expforex.com
Следующий шаг добавления нашего алерта в Ваш индикатор состоит в нескольких пунктах:
В начало эксперта перед функцией start() вставьте следующий код:
//+======================================================================================+
//+================================ 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 ====================+
//+======================================================================================+
Перед закрытием функции start() внутри функции перед
Данный код будет служить нашим сигналом, Естественно вам необходимо заменить некоторый код на свой. Сигналом для алерта служит следующий код:
Если это пересечение 0 линии сверху (снизу) вниз(вверх) то будет выглядеть так:
SarBuffer[shift+1]>=0 && SarBuffer[shift]<0
Если это пересечение индикатором текущей цены или бара, пробой бара индикатором и так далее:
Данные примеры взяты из соответствующей ветки нашего форума. Индикаторы были модифицированны мною по вышеописанному принципу.
Пример индикаторов Parabolic, MACD, Stochastic в архиве можно скачать здесь.
Выводы
В данной статье максимально подробно и понятно приводится процесс создания сигналов для индикатора. Вышеописанный код можно использовать без ограничений на любом индикаторе. Важно нельзя изменять авторские имена при добавлении кода в индикатор.
Если Вам понравилась данная статья Вы нашли пользу от данного способа вставки сигналов, пожалуйста, оставляйте свои комментарии.
Помогите пожалуйста понять, что и где я не догнал?
В конечном результате хотелось бы получить отключаемые:
звуковой алерт,
визуальный, вида: пара, таймфрейм, направление, время, цена,
пуш и майл сообщения, такого же вида.
Будьте добры дополнить индикатор, или написать индикатор алерт на появление графического обЪекта прямоугольник. Алерт на email и pop-up со звуком (по умолчанию). Заранее благодарен
Комментарии (4)
18 Andrju81 Сообщений: 245 - Андрей
Чёт не вышел каменный цветок…
В результате получил
Дальше уже косячить не стал.
Помогите пожалуйста понять, что и где я не догнал?
В конечном результате хотелось бы получить отключаемые:
звуковой алерт,
визуальный, вида: пара, таймфрейм, направление, время, цена,
пуш и майл сообщения, такого же вида.
20 Anatoly74 Сообщений: 3710 - Анатолий
2 Niceman84 Сообщений: 2
2 Niceman84 Сообщений: 2
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий