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

ZigZag

zigzag_hh-hl-lh-ll_b.mq5
Вы автор или правообладатель?

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

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

О программе

Данный индикатор реализует построение индикатора ZigZag в платформе MetaTrader 4. Он анализирует ценовые бары и определяет значимые экстремумы — локальные максимумы и минимумы — на основе заданной глубины поиска и допустимого отклонения.

Индикатор отображает соединительные линии между найденными экстремумами на графике цены. Каждому экстремуму присваивается текстовая метка, обозначающая тип разворота: более высокий максимум (HH), более низкий максимум (LH), более высокий минимум (HL) или более низкий минимум (LL).

Настройки позволяют задать параметры поиска экстремумов, цвета и размеры текстовых меток, шрифт отображения, а также количество обрабатываемых баров. При пересчёте индикатора старые графические объекты удаляются, а метки обновляются в соответствии с текущей структурой цены.

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

НастройкаОписание
ExtDepth Глубина (Depth) — Глубина поиска разворотов цены в количестве баров
ExtDeviation Отклонение (Deviation) — Допустимое отклонение цены от экстремума в пунктах
ExtBackstep Откат (Backstep) — Количество баров для возврата при уточнении экстремумов
TopColorHH Цвет метки HH — Цвет текстовой метки для более высокого максимума (HH)
TopColorLH Цвет метки LH — Цвет текстовой метки для более низкого максимума (LH)
BotColorHL Цвет метки HL — Цвет текстовой метки для более высокого минимума (HL)
BotColorLL Цвет метки LL — Цвет текстовой метки для более низкого минимума (LL)
Labeldistance Расстояние метки — Расстояние текстовой метки от экстремума цены
TxtSize1 Размер шрифта 1 — Размер шрифта для одного типа текстовых меток
TxtSize2 Размер шрифта 2 — Размер шрифта для другого типа текстовых меток
Fonts Шрифт меток — Шрифт для отображения текстовых меток на графике
CountBars Количество баров — Количество баров для обработки и отображения индикатором
Получить полный код

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

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

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Orange

extern int      ExtDepth           = 5 ;
extern int      ExtDeviation       = 0 ;
extern int      ExtBackstep        = 0 ;
extern color    TopColorHH         = Yellow;
extern color    TopColorLH         = Lime;
extern color    BotColorHL         = Red ;
extern color    BotColorLL         = Yellow;
extern int      Labeldistance      = 2;

extern int      TxtSize1            = 7;
extern int      TxtSize2            = 6;
extern string   Fonts              = "Arial Black";

extern int      CountBars          = 500 ;

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

double ZigzagBuffer[];
double HighMapBuffer[];
double LowMapBuffer[];

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

   IndicatorBuffers(3);

   SetIndexStyle(0,DRAW_SECTION,STYLE_SOLID,2);

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

   IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")");
    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(Perio

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

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

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

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

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

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

Стоимость полного кода
1 641,90₽ ≈ $20.07