Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужна мобильная версия MetaTrader 5? Скачивай и торгуй!
antoha1085
7
antoha1085 2016.10.15 02:13 

Добрый день, уважаемые!

Помогите пожалуйста добавить алерт в индикатор при появлении стрелки с указанием валютной пары.

Сам пробовал, но как говориться трудно не знать и забыть. Заранее спасибо.



#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 White

#property indicator_color2 White

#property indicator_color3 LightGreen

#property indicator_color4 Red


extern int CountBars = 300;

extern string FS = " ** Filter sensitivity: High <-[1..3]-> Low ** ";

extern int Sensitivity = 2;

double g_ibuf_92[];

double g_ibuf_96[];

double g_ibuf_100[];

double g_ibuf_104[];

int gi_unused_108 = -1;


int init() {

   IndicatorBuffers(4);

   SetIndexStyle(2, DRAW_ARROW);

   SetIndexArrow(2, 233);

   SetIndexBuffer(2, g_ibuf_92);

   SetIndexStyle(3, DRAW_ARROW);

   SetIndexArrow(3, 234);

   SetIndexBuffer(3, g_ibuf_96);

   SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 3, White);

   SetIndexBuffer(0, g_ibuf_100);

   SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 3, White);

   SetIndexBuffer(1, g_ibuf_104);

   SetIndexEmptyValue(0, 0);

   SetIndexEmptyValue(1, 0);

   SetIndexEmptyValue(2, 0);

   SetIndexEmptyValue(3, 0);

   SetIndexLabel(2, "Buy Signal");

   SetIndexLabel(3, "Sell Signal");

   SetIndexLabel(0, "High");

   SetIndexLabel(1, "Low");

   SetIndexEmptyValue(0, EMPTY_VALUE);

   SetIndexEmptyValue(1, EMPTY_VALUE);

   SetIndexEmptyValue(2, EMPTY_VALUE);

   SetIndexEmptyValue(3, EMPTY_VALUE);

   string ls_0 = "Scalper Signal";

   IndicatorShortName(ls_0);

   if (Sensitivity < 1) Sensitivity = 1;

   if (Sensitivity > 3) Sensitivity = 3;

   return (0);

}


int deinit() {

   return (0);

}


double sellSignal(int ai_0) {

   bool li_4 = TRUE;

   if (Sensitivity > 2)

      if (iHigh(Symbol(), Period(), ai_0 + 6) >= iHigh(Symbol(), Period(), ai_0 + 5)) li_4 = FALSE;

   if (Sensitivity > 1)

      if (iHigh(Symbol(), Period(), ai_0 + 5) >= iHigh(Symbol(), Period(), ai_0 + 4)) li_4 = FALSE;

   if (Sensitivity > 0)

      if (iHigh(Symbol(), Period(), ai_0 + 4) >= iHigh(Symbol(), Period(), ai_0 + 3)) li_4 = FALSE;

   if (li_4) {

      if (iClose(Symbol(), Period(), ai_0 + 2) < iHigh(Symbol(), Period(), ai_0 + 3))

         if (iClose(Symbol(), Period(), ai_0 + 1) < iLow(Symbol(), Period(), ai_0 + 3)) return (iHigh(Symbol(), Period(), ai_0 + 3) + 10.0 * Point);

   }

   return (0);

}


double buySignal(int ai_0) {

   bool li_4 = TRUE;

   if (Sensitivity > 2)

      if (iLow(Symbol(), Period(), ai_0 + 6) <= iLow(Symbol(), Period(), ai_0 + 5)) li_4 = FALSE;

   if (Sensitivity > 1)

      if (iLow(Symbol(), Period(), ai_0 + 5) <= iLow(Symbol(), Period(), ai_0 + 4)) li_4 = FALSE;

   if (Sensitivity > 0)

      if (iLow(Symbol(), Period(), ai_0 + 4) <= iLow(Symbol(), Period(), ai_0 + 3)) li_4 = FALSE;

   if (li_4) {

      if (iClose(Symbol(), Period(), ai_0 + 2) > iLow(Symbol(), Period(), ai_0 + 3))

         if (iClose(Symbol(), Period(), ai_0 + 1) > iHigh(Symbol(), Period(), ai_0 + 3)) return (iLow(Symbol(), Period(), ai_0 + 3) - 10.0 * Point);

   }

   return (0);

}


int start() {

   

   int li_0 = IndicatorCounted();

   if (li_0 < 0) return (-1);

   if (li_0 > 0) li_0--;

   int li_4 = Bars - li_0;

   for (int l_count_8 = 0; l_count_8 < li_4; l_count_8++) {

      g_ibuf_92[l_count_8 + 3] = buySignal(l_count_8);

      g_ibuf_96[l_count_8 + 3] = sellSignal(l_count_8);

      if (buySignal(l_count_8) > 0.0 || sellSignal(l_count_8) > 0.0) {

         g_ibuf_100[l_count_8 + 3] = iHigh(Symbol(), Period(), l_count_8 + 3);

         g_ibuf_104[l_count_8 + 3] = iLow(Symbol(), Period(), l_count_8 + 3);

      }

   }

   return (0);

}

Файлы:
Vitalie Postolache
11139
Vitalie Postolache 2016.10.15 09:30  

забанютъ...

ещё и множит в разных ветках, чтоб наверняка ))) 

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий