← К каталогу
Исходный код · ID 2719

zigzag_hh-hl-lh-ll_b bt (alerts)buy sell.mq5

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор для MetaTrader 4, построенный на основе ZigZag-логики и предназначенный для визуального анализа графиков цен. Он определяет ключевые точки разворота и отображает на графике метки, соответствующие более высоким и более низким максимумам и минимумам. Индикатор работает в основном окне графика и использует буферы для хранения рассчитанных значений.

Настройки программы

НастройкаОписание
ExtDepth Глубина — Определяет максимальное количество баров, в пределах которых ищутся экстремумы для построения линии индикатора.
ExtDeviation Отклонение — Задаёт минимальное отклонение цены в пунктах, необходимое для подтверждения нового экстремума.
ExtBackstep Шаг отката — Определяет количество баров, на которые выполняется проверка и удаление менее значимых точек при построении ZigZag.
TopColorHH Цвет HH — Цвет метки, обозначающей более высокий максимум (Higher High).
TopColorLH Цвет LH — Цвет метки, обозначающей более низкий максимум (Lower High).
BotColorHL Цвет HL — Цвет метки, обозначающей более высокий минимум (Higher Low).
BotColorLL Цвет LL — Цвет метки, обозначающей более низкий минимум (Lower Low).
Labeldistance Расстояние метки — Задаёт расстояние в пунктах, на котором размещаются текстовые метки экстремумов относительно ценовой линии.
TxtSize1 Размер текста 1 — Размер шрифта для первого набора текстовых меток индикатора.
TxtSize2 Размер текста 2 — Размер шрифта для второго набора текстовых меток индикатора.
Fonts Шрифт — Имя шрифта, используемого для отображения текстовых меток на графике.
CountBars Количество баров — Определяет максимальное количество баров, по которым выполняется расчёт индикатора.
alertsOn Включить оповещения — Главный переключатель, активирующий или деактивирующий систему уведомлений индикатора.
alertsMessage Оповещение сообщением — Включает вывод алерт-окна с сообщением при срабатывании условия индикатора.
alertsSound Звуковой сигнал — Включает воспроизведение звукового файла при срабатывании условия индикатора.
alertsPush Push-уведомление — Включает отправку push-уведомления на мобильное устройство при срабатывании условия индикатора.
alertsEmail Email-уведомление — Включает отправку электронного письма на заданный адрес при срабатывании условия индикатора.
button_note1 Примечание кнопки 1 — Текстовая разделительная линия перед настройками кнопки управления отображением.
btn_Subwindow Подокно кнопки — Номер подокна графика, в котором размещается кнопка управления индикатором.
btn_corner Угол кнопки — Определяет угол привязки кнопки управления на графике.
btn_text Текст кнопки — Начальный текст, отображаемый на кнопке управления отображением индикатора.
btn_Font Шрифт кнопки — Шрифт, используемый для текста кнопки управления.
btn_FontSize Размер шрифта кнопки — Размер шрифта текста кнопки управления.
btn_text_ON_color Цвет текста кнопки включена — Цвет текста кнопки, когда отображение индикатора активно.
btn_text_OFF_color Цвет текста кнопки выключена — Цвет текста кнопки, когда отображение индикатора деактивировано.
btn_pressed Текст кнопки нажата — Текст кнопки в состоянии, когда отображение индикатора скрыто.
btn_unpressed Текст кнопки отпущена — Текст кнопки в состоянии, когда отображение индикатора показано.
btn_background_color Фон кнопки — Цвет фона кнопки управления отображением индикатора.
btn_border_color Граница кнопки — Цвет границы (обводки) кнопки управления.
button_x Позиция X кнопки — Горизонтальная координата размещения кнопки управления на графике.
button_y Позиция Y кнопки — Вертикальная координата размещения кнопки управления на графике.
btn_Width Ширина кнопки — Ширина кнопки управления в пикселях.
btn_Height Высота кнопки — Высота кнопки управления в пикселях.
soundBT Звук кнопки — Имя звукового файла, воспроизводимого при нажатии кнопки управления.
button_note2 Примечание кнопки 2 — Текстовая разделительная линия после настроек кнопки управления.
Получить полный код

Поиск по коду файла

???//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 clrSnow

extern int      ExtDepth           = 6 ;
extern int      ExtDeviation       = 0 ;
extern int      ExtBackstep        = 0 ;
extern color    TopColorHH         = clrYellow;
extern color    TopColorLH         = clrLime;
extern color    BotColorHL         = clrRed ;
extern color    BotColorLL         = clrYellow;
extern int      Labeldistance      = 2;

extern int      TxtSize1            = 14;
extern int      TxtSize2            = 14;
extern string   Fonts              = "Arial Black";

extern int      CountBars          = 8888 ;

extern bool   alertsOn             = true;

extern bool   alertsMessage        = true;
extern bool   alertsSound          = true;
extern bool   alertsPush           = true;
extern bool   alertsEmail          = false;

extern string             button_note1          = "------------------------------";
extern int                btn_Subwindow = 0;
extern ENUM_BASE_CORNER   btn_corner            = CORNER_LEFT_UPPER;
extern string             btn_text              = "ZZ";
extern string             btn_Font              = "Arial";
extern int                btn_FontSize          = 10;
extern color              btn_text_ON_color     = clrLime;
extern color              btn_text_OFF_color    = clrRed;
extern string             btn_pressed           = "ZZ OFF";
extern string             btn_unpressed         = "ZZ ON";
extern color              btn_background_color  = clrDimGray;
extern color              btn_border_color      = clrBlack;
extern int                button_x              = 850;
extern int                button_y              = 0;
extern int                btn_Width             = 75;
extern int                btn_Height            = 20;
extern string             soundBT               = "tick.wav";
extern string             button_note2          = "------------------------------";

bool                      show_data             = true;
string IndicatorName, IndicatorObjPrefix,buttonId ;

double       Poin, Mut;
int level=3;
bool downloadhistory = false;

int PipFactor = 1;

double ZigzagBuffer[];
double HighMapBuffer[];
double LowMapBuffer[];    string ShortName;

string GenerateIndicatorName(const string target)
  {
   string name = target;
   int try
         = 2;
   while(WindowFind(name) != -1)
     {
      name = target + " #" + IntegerToString(try
                                                ++);
     }
   return name;
  }

int init()
  {
      // код доступен только после оплаты
   }

   IndicatorBuffers(3);

   SetIndexStyle(0,DRAW_SECTION,STYLE_SOLID,2);

   SetIndexBuffer(0,ZigzagBuffer);
   SetIndexBuffer(1,HighMapBuffer);
   SetIndexBuffer(2,LowMapBuffer);
   SetIndexEmptyValue(0,0.0);

   ShortName = "ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")";
   IndicatorShortName(ShortName);

    del_objF();    

  /*     switch(Period())
      {
        case     1:  puShift = 1.0 ;   pdShift = -1.0 ;   break;    
        case     5:  puShift = 1.0 ;   pdShift = -1.0 ;   break; 
        case    15:  puShift = 6.0 ;   pdShift = -1.0 ;   break; 
        case    30:  puShift = 9.0 ;   pdShift = -1.0 ;   break; 
        case    60:  puShift = 12  ;   pdShift = -4.0 ;   break; 
        case   240:  puShift = 35  ;   pdShift = -7.0 ;   break; 
        case  1440:  puShift = 100  ;  pdShift = -20  ;   break; 
        case 10080:  puShift = 200 ;   pdShift = -50  ;   break; 
        case 43200:  puShift = 300 ;   pdShift = -100 ;   break;               
      }    
  */    

         if (Point == 0.00001)  Poin = 0.0001;   // 6 digits
    else if (Point == 0.001)    Poin = 0.01;     // 3 digits (for Yen based pairs)
                           else Poin = Point;    // Normal 

     if (StringSubstr(Symbol(),0,6) == "GBPUSD")  {switch(Period()) {case 1:Mut=1.5;break;    case 5:Mut=4;break;     case 15:Mut=6;break;     case 30:Mut=10;break;    case 60:Mut=13;break;    case 240:Mut=35;break;    case 1440:Mut=100;break;    case 10080:Mut=150;break;    case 43200:Mut=300;break; } }                                                 
     if (StringSubstr(Symbol(),0,6) == "GBPJPY")  {switch(Period()) {case 1:Mut=2.5;break;    case 5:Mut=6;break;     case 15:Mut=8;break;     case 30:Mut=11;break;    case 60:Mut=10;break;    case 240:Mut=35;break;    case 1440:Mut=150;break;    case 10080:Mut=200;break;    case 43200:Mut=300;break; } }  
     if (StringSubstr(Symbol(),0,6) == "USDJPY")  {switch(Period()) {case 1:Mut=1.5;break;    case 5:Mut=3;break;     case 15:Mut=6;break;     case 30:Mut=12;break;    case 60:Mut=25;break;    case 240:Mut=30;break;    case 1440:Mut=80;break;     case 10080:Mut=150;break;    case 43200:Mut=200;break; } }  
     if (StringSubstr(Symbol(),0,6) == "EURUSD")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  

     if (StringSubstr(Symbol(),0,6) == "XAUUSD")  {switch(Period()) {case 1:Mut=12.0;break;   case 5:Mut=40;break;    case 15:Mut=80;break;    case 30:Mut=200;break;   case 60:Mut=300;break;   case 240:Mut=400;break;   case 1440:Mut=700;break;    case 10080:Mut=2000;break;   case 43200:Mut=3000;break; } }
     if (StringSubstr(Symbol(),0,5) == "GER30" )  {switch(Period()) {case 1:Mut=90;break;     case 5:Mut=350;break;   case 15:Mut=500;break;   case 30:Mut=2000;break;  case 60:Mut=2400;break;  case 240:Mut=2000;break;  case 1440:Mut=7000;break;   case 10080:Mut=20000;break;  case 43200:Mut=25000;break; } }
     if (StringSubstr(Symbol(),0,6) == "JPN225")  {switch(Period()) {case 1:Mut=200;break;    case 5:Mut=500;break;   case 15:Mut=1200;break;  case 30:Mut=2800;break;  case 60:Mut=5000;break;  case 240:Mut=6000;break;  case 1440:Mut=15000;break;  case 10080:Mut=30000;break;  case 43200:Mut=50000;break; } }
     if (StringSubstr(Symbol(),0,4) == "US30"  )  {switch(Period()) {case 1:Mut=100;break;    case 5:Mut=200;break;   case 15:Mut=400;break;   case 30:Mut=1000;break;  case 60:Mut=3500;break;  case 240:Mut=4000;break;  case 1440:Mut=9000;break;   case 10080:Mut=20000;break;  case 43200:Mut=40000;break; } }

     if (StringSubstr(Symbol(),0,6) == "AUDUSD")  {switch(Period()) {case 1:Mut=0.3;break;    case 5:Mut=3;break;     case 15:Mut=7;break;     case 30:Mut=10;break;    case 60:Mut=13;break;    case 240:Mut=13;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=200;break; } }    
     if (StringSubstr(Symbol(),0,6) == "AUDNZD")  {switch(Period()) {case 1:Mut=0.5;break;    case 5:Mut=3;break;     case 15:Mut=5;break;     case 30:Mut=7;break;     case 60:Mut=10;break;    case 240:Mut=13;break;    case 1440:Mut=25;break;     case 10080:Mut=100;break;    case 43200:Mut=120;break; } }    
     if (StringSubstr(Symbol(),0,6) == "AUDCAD")  {switch(Period()) {case 1:Mut=0.3;break;    case 5:Mut=3;break;     case 15:Mut=7;break;     case 30:Mut=10;break;    case 60:Mut=13;break;    case 240:Mut=13;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=200;break; } }    
     if (StringSubstr(Symbol(),0,6) == "AUDCHF")  {switch(Period()) {case 1:Mut=0.3;break;    case 5:Mut=3;break;     case 15:Mut=7;break;     case 30:Mut=10;break;    case 60:Mut=13;break;    case 240:Mut=13;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=200;break; } }    
     if (StringSubstr(Symbol(),0,6) == "AUDJPY")  {switch(Period()) {case 1:Mut=0.3;break;    case 5:Mut=3;break;     case 15:Mut=7;break;     case 30:Mut=10;break;    case 60:Mut=13;break;    case 240:Mut=13;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=200;break; } }    

     if (StringSubstr(Symbol(),0,6) == "CHFJPY")  {switch(Period()) {case 1:Mut=1.5;break;   case 5:Mut=2;break;      case 15:Mut=4;break;     case 30:Mut=6;break;     case 60:Mut=10;break;    case 240:Mut=20;break;    case 1440:Mut=60;break;    case 10080:Mut=200;break;     case 43200:Mut=250;break; } }    
     if (StringSubstr(Symbol(),0,6) == "CADJPY")  {switch(Period()) {case 1:Mut=1.5;break;   case 5:Mut=2;break;      case 15:Mut=4;break;     case 30:Mut=6;break;     case 60:Mut=10;break;    case 240:Mut=20;break;    case 1440:Mut=60;break;    case 10080:Mut=200;break;     case 43200:Mut=250;break; } }    
     if (StringSubstr(Symbol(),0,6) == "CADCHF")  {switch(Period()) {case 1:Mut=1.5;break;   case 5:Mut=2;break;      case 15:Mut=4;break;     case 30:Mut=6;break;     case 60:Mut=10;break;    case 240:Mut=20;break;    case 1440:Mut=60;break;    case 10080:Mut=200;break;     case 43200:Mut=250;break; } }    

     if (StringSubstr(Symbol(),0,6) == "EURGBP")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  
     if (StringSubstr(Symbol(),0,6) == "EURAUD")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  
     if (StringSubstr(Symbol(),0,6) == "EURNZD")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  
     if (StringSubstr(Symbol(),0,6) == "EURCAD")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  
     if (StringSubstr(Symbol(),0,6) == "EURCHF")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  
     if (StringSubstr(Symbol(),0,6) == "EURJPY")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  

     if (StringSubstr(Symbol(),0,6) == "GBPAUD")  {switch(Period()) {case 1:Mut=1.5;break;    case 5:Mut=4;break;     case 15:Mut=6;break;     case 30:Mut=10;break;    case 60:Mut=13;break;    case 240:Mut=35;break;    case 1440:Mut=100;break;    case 10080:Mut=150;break;    case 43200:Mut=300;break; } }   
     if (StringSubstr(Symbol(),0,6) == "GBPCHF")  {switch(Period()) {case 1:Mut=1.5;break;    case 5:Mut=4;break;     case 15:Mut=6;break;     case 30:Mut=10;break;    case 60:Mut=13;break;    case 240:Mut=35;break;    case 1440:Mut=100;break;    case 10080:Mut=150;break;    case 43200:Mut=300;break; } }   
     if (StringSubstr(Symbol(),0,6) == "GBPCAD")  {switch(Period()) {case 1:Mut=1.5;break;    case 5:Mut=4;break;     case 15:Mut=6;break;     case 30:Mut=10;break;    case 60:Mut=13;break;    case 240:Mut=35;break;    case 1440:Mut=100;break;    case 10080:Mut=150;break;    case 43200:Mut=300;break; } }   
     if (StringSubstr(Symbol(),0,6) == "GBPNZD")  {switch(Period()) {case 1:Mut=1.5;break;    case 5:Mut=4;break;     case 15:Mut=6;break;     case 30:Mut=10;break;    case 60:Mut=13;break;    case 240:Mut=35;break;    case 1440:Mut=100;break;    case 10080:Mut=150;break;    case 43200:Mut=300;break; } }   

     if (StringSubstr(Symbol(),0,6) == "NZDJPY")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  
     if (StringSubstr(Symbol(),0,6) == "NZDUSD")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  
     if (StringSubstr(Symbol(),0,6) == "NZDCHF")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  
     if (StringSubstr(Symbol(),0,6) == "NZDCAD")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  

     if (StringSubstr(Symbol(),0,6) == "USDCAD")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  
     if (StringSubstr(Symbol(),0,6) == "USDCHF")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  

     if (StringSubstr(Symbol(),0,6) == "USDZAR")  {switch(Period()) {case 1:Mut=0.7;break;    case 5:Mut=2;break;     case 15:Mut=5;break;     case 30:Mut=11;break;    case 60:Mut=20;break;    case 240:Mut=20;break;    case 1440:Mut=30;break;     case 10080:Mut=120;break;    case 43200:Mut=250;break; } }  

     if (StringSubstr(Symbol(),0,6) == "AUS200")  {switch(Period()) {case 1:Mut=90;break;     case 5:Mut=350;break;   case 15:Mut=500;break;   case 

Показано первые 50% кода (символов: 21064)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
2 106,40₽ ≈ $25.74