alekseifx

 
Уровень 8

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2156



РЕКОМЕНДУЮ



Подправить индикатор

Есть индикатор с алертом, но сигналит только на селл, а хотелось бы и на бай.
MACD Alert2.mq4 (3 Kb)
  • 0
  • Просмотров: 3589
  • 12 января 2015, 10:08
  • alekseifx
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Мне нельзя показывать такие вещи! Напишу ведь!
Следующая запись в группе  
Модификация индикатора FxF
11 января 2015
12 января 2015

Брокер для ваших роботов, 15 лет на рынке

Комментарии (5)

+
+1
Вот сижу смотрю сейчас почему так однобоко получается :) 
avatar

  35  AM2 Сообщений: 16530 - Андрей

  • 12 января 2015, 22:18
+
0
ну, я точно не знаю…
avatar

  8  alekseifx Автор Сообщений: 179

  • 12 января 2015, 22:24
+
+1
Попробуйте такой вариант:


//+------------------------------------------------------------------+
//|                                                  MACD Alert2.mq4 |
//|                                       http://www.trading-team.it |
//+------------------------------------------------------------------+
#property copyright "Silvio Invernici"
#property link      "http://www.trading-team.it"

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Silver
#property indicator_color2 Blue
#property indicator_color3 Green
#property indicator_color4 Red
#property indicator_width1 2
#property indicator_width3 3
#property indicator_width4 3

extern int FastEMA   = 12;
extern int SlowEMA   = 26;
extern int SignalSMA = 9;
extern bool Alerts   = false;

double Macd_Buffer[];
double Signal_Buffer[];
double Green_Buffer[];
double Red_Buffer[];

int Bars1 = 0;
int Bars2 = 0;
int Bars3 = 0;
int Bars4 = 0;

string IndiName;

//+----------------------init----------------------------------------+

int init() {
   
   
IndiName = "MACD Alert2(" + FastEMA + "," + SlowEMA + "," + SignalSMA + ")";
   
   
SetIndexStyle(0, DRAW_HISTOGRAM);
   
SetIndexStyle(1, DRAW_LINE);
   
SetIndexDrawBegin(1, SignalSMA);
   
IndicatorDigits(Digits + 1);
   
SetIndexBuffer(0, Macd_Buffer);
   
SetIndexBuffer(1, Signal_Buffer);
   
SetIndexBuffer(2, Green_Buffer);
   
SetIndexBuffer(3, Red_Buffer);
   
IndicatorShortName(IndiName);
   
SetIndexLabel(0, "MACD");
   
SetIndexLabel(1, "Signal");
   
SetIndexLabel(2, "Green");
   
SetIndexLabel(3, "Red");
   
   
return (0);
}

//+----------------------deinit--------------------------------------+
int deinit() {
   
ObjectDelete("LOGO");
   
return (0);
}

//+----------------------start---------------------------------------+
int start()
   
{
   
if(1==1)logo();
   
int ind_counted = IndicatorCounted();
   
if (ind_counted > 0) ind_counted--;
   
   
int TotalBars = Bars;
   
   
for (int i = 0; i < TotalBars; i++)
       
{Macd_Buffer[i] = iMA(NULL, 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i) - iMA(NULL, 0, SlowEMA, 0, MODE_EMA, PRICE_CLOSE, i);}
       
   
for (i = 0; i < TotalBars; i++)
       
{Signal_Buffer[i] = iMAOnArray(Macd_Buffer, Bars, SignalSMA, 0, MODE_SMA, i);}
   
   
for (i = 0; i < TotalBars; i++)
       
{if (Macd_Buffer[i] > Signal_Buffer[i])
           
{Green_Buffer[i] = Macd_Buffer[i];
            Red_Buffer
[i] = EMPTY_VALUE;}
       
else
           
{Red_Buffer[i] = Macd_Buffer[i];
            Green_Buffer
[i] = EMPTY_VALUE;}
   
}    
   
if (Alerts)
     
{if (Green_Buffer[1] == Macd_Buffer[1] && Green_Buffer[2] != Macd_Buffer[2]) AlertOnce(Symbol() + " MACD: Long signal!", 1);
       
if (Red_Buffer[1]   == Macd_Buffer[1] && Red_Buffer[2]   != Macd_Buffer[2]) AlertOnce(Symbol() + " MACD: Short signal!", 1);}
   
   
return (0);
}

//+----------------------AlertOnce------------------------------------+
void AlertOnce(string Message, int Number) {
   
   
switch (Number) {
     
case 1:
       
if (Bars1 == 0 || Bars1 < Bars) {
         
Alert(Message);
         Bars1
= Bars;}
       
break;
     
     
case 2:
       
if (Bars2 == 0 || Bars2 < Bars) {
         
Alert(Message);
         Bars2
= Bars;}
       
break;

     
case 3:
       
if (Bars3 == 0 || Bars3 < Bars) {
         
Alert(Message);
         Bars3
= Bars;}
       
break;
     
     
case 4:
       
if (Bars4 == 0 || Bars4 < Bars) {
         
Alert(Message);
         Bars4
= Bars;}
       
break;
   
}
   
}

//+----------------------logo----------------------------------------+
void logo()
   
{
   
ObjectCreate("LOGO", OBJ_LABEL,WindowFind(IndiName), 0, 0);
   
ObjectSetText("LOGO", "Revisited by Silvio Invernici", 7, "Arial", DimGray);
   
ObjectSet("LOGO", OBJPROP_CORNER, 3);
   
ObjectSet("LOGO", OBJPROP_XDISTANCE, 5);
   
ObjectSet("LOGO", OBJPROP_YDISTANCE, 3);
}
//+----------------------the-end-------------------------------------+
avatar

  35  AM2 Сообщений: 16530 - Андрей

  • 12 января 2015, 22:32
комментарий был удален 2015-01-13 13:32:52 alekseifx

0
работает, но не всегда, пойдет, спасибо!
avatar

  8  alekseifx Автор Сообщений: 179

  • 13 января 2015, 13:33

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