date_range Добавлено: 28.10.2013

date_range Обновлено:

remove_red_eyeПросмотров: 21965

dashboardКатегория: Статьи о нашей работе

cloudAlert, индикатор?, как, вставить, arrow, индикатор., Алерт





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

Описание

Наиболее частыми запросами в поисковике и в темах разных форумах встречаются фразы:

"Индикатора алерт","индикатор 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
 
Если это пересечение индикатором текущей цены или бара, пробой бара индикатором и так далее:
SarBuffer[shift+1]>=Close[shift] && SarBuffer[shift]<Close[shift]
 
Если Это пересечение особых уровней индикаторы например стохастика:
SarBuffer[shift+1]<=75 && SarBuffer[shift]>75
SarBuffer[shift+1]>=25 && SarBuffer[shift]<25
 
Если в Вашем индикаторе уже существуют стрелки, то возможен и такой вид сигнала:
DnTrend[1]!=EMPTY_VALUE && DnTrend[1]!=0&& UpTrend[2]!=EMPTY_VALUE
 
В любом случае, надо проявить логику и творчество , чтобы правильно записать сигнал, Если же у Вас возникли трудности, напишите в данную ветку, только при этом прикрепите индикатор, покажите на графике линии и распишите подробно, что у Вас не получается. Кидать сообщение на подобии  "надо вставить алерт в индикатор" без объяснения что куда, и собственно без самого индикатора - не нужно
 
 

Необходимые куски кода от www.expforex.com

 
Следующий шаг добавления нашего алерта в Ваш индикатор состоит в нескольких пунктах:
 
В начало эксперта перед функцией start() (OnCalculate) вставьте следующий код:
//+==+
//+ 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);
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,bool history=false,int i=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(!history)
     {
      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);
     }
   if(history)
     {
      if(Arrow) if(arrowdir==1) SetArrow(241,Blue,nameInd+DoubleToStr(Time[shift+i],0),Time[shift+i],Low[shift+i]);
      if(Arrow) if(arrowdir==2) SetArrow(242,Red,nameInd+DoubleToStr(Time[shift+i],0),Time[shift+i],High[shift+i]);

     }

  }

 
//+==+
//+ www.expforex.com edit AlertArrow +
//+==+
 
 Перед закрытием функции start()(OnCalculate) внутри функции перед    
   return(rates_total);
 
  }
 
вставьте следующий код:
//+==+
//+ www.expforex.com edit AlertArrow +
//+==+
 nameInd=WindowExpertName( );
          if(timeee!=Time[0] && SarBuffer[shift+1]<=75 && SarBuffer[shift]>75)
               {
                 Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" UP",1);
                    timeee=Time[0];           
               }
 
           if(timeee!=Time[0] && SarBuffer[shift+1]>=25 && SarBuffer[shift]<25)
               {
                 Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" DN",2);
                    timeee=Time[0];           
               }
//+==+
//+ www.expforex.com edit AlertArrow +
//+==+
 
 
Данный код будет служить нашим сигналом, Естественно вам необходимо заменить некоторый код на свой. Сигналом для алерта служит следующий код:
 
Если это пересечение 0 линии сверху (снизу) вниз(вверх) то будет выглядеть так:
SarBuffer[shift+1]>=0 && SarBuffer[shift]<0
 
Если это пересечение индикатором текущей цены или бара, пробой бара индикатором и так далее:
SarBuffer[shift+1]>=Close[shift] && SarBuffer[shift]<Close[shift]
 
Если Это пересечение особых уровней индикаторы например стохастика:
SarBuffer[shift+1]<=75 && SarBuffer[shift]>75
SarBuffer[shift+1]>=25 && SarBuffer[shift]<25
 
 
Если Вам необходимы стрелки на истории, то необходимо сделать так:
после вышеупомянутого кода добавляем еще один:
//+==+
//+ www.expforex.com edit AlertArrow +
//+==+
     if(counted_bars>0) counted_bars--;
   int limit2=Bars-counted_bars;
   for(int i2=0; i2<limit2; i2++)
     {
 nameInd=WindowExpertName( );
          if( SarBuffer[shift+1+i2]<=75 && SarBuffer[shift+i2]>75)
               {
                 Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" UP"+i2,1,true,i2);      
               }
 
           if( SarBuffer[shift+1+i2]>=25 && SarBuffer[shift+i2]<25)
               {
                 Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" DN"+i2,2,true,i2);     
               }
}
//+==+
//+ www.expforex.com edit AlertArrow +
//+==+
 
 

Примеры

 
Данные примеры взяты из соответствующей ветки нашего форума. Индикаторы  были модифицированны мною по вышеописанному принципу. 
 
 
 
 

Некоторые важные статьи относящиеся к данной теме

 
 

Выводы

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

Здесь можно скачать Алерт в индикатор. Как вставить Alert и Arrow в индикатор?
Купить Алерт в индикатор. Как вставить Alert и Arrow в индикатор? можно здесь - Прочитать о Алерт в индикатор. Как вставить Alert и Arrow в индикатор? можно здесь - Обсуждение Алерт в индикатор. Как вставить Alert и Arrow в индикатор? - стейты, отзывы, комментарии - Отзывы о Алерт в индикатор. Как вставить Alert и Arrow в индикатор? - Настройки к Алерт в индикатор. Как вставить Alert и Arrow в индикатор? - Мониторинг Алерт в индикатор. Как вставить Alert и Arrow в индикатор? - Download Алерт в индикатор. Как вставить Alert и Arrow в индикатор? - Buy Алерт в индикатор. Как вставить Alert и Arrow в индикатор? - Read about Алерт в индикатор. Как вставить Alert и Arrow в индикатор? - Discusion of Алерт в индикатор. Как вставить Alert и Arrow в индикатор? - Comments of Алерт в индикатор. Как вставить Alert и Arrow в индикатор? - Settings Алерт в индикатор. Как вставить Alert и Arrow в индикатор? - Monitoring Алерт в индикатор. Как вставить Alert и Arrow в индикатор? - Алерт в индикатор. Как вставить Alert и Arrow в индикатор? скачать бесплатно - Алерт в индикатор. Как вставить Alert и Arrow в индикатор? ключ - Алерт в индикатор. Как вставить Alert и Arrow в индикатор? открытый код - Алерт в индикатор. Как вставить Alert и Arrow в индикатор? скачать
-