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

semafor +123 triangles(1).mq4

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

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

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

О программе

Данный индикатор рассчитывает три уровня аналитических семафоров (быстрый, средний и медленный) на основе алгоритма ZigZag с настраиваемыми периодами и глубиной. Семафоры отображаются в виде стрелок на графике цены и могут быть включены или отключены независимо друг от друга.

Индикатор способен обнаруживать паттерн «1-2-3» на основе комбинации семафоров разных уровней и автоматически рисовать треугольники, ценовые метки и лучи на графике. Визуальные элементы можно настраивать по цветам, стилям линий и ширине.

Встроена система уведомлений: индикатор может отправлять алерты при появлении семафоров и при формировании треугольных паттернов. Также доступна опция отображения уровней Фибоначчи и линий истечения для ценовых меток.

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

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

НастройкаОписание
ShowSemaforsH Переключатель отображения стрелок медленного уровня семафора.
ShowSemaforsN Переключатель отображения стрелок среднего уровня семафора.
ShowSemaforsF Переключатель отображения стрелок быстрого уровня семафора.
ShowFiboLevels Переключатель отображения уровней Фибоначчи при обнаружении треугольников.
Period1 Период расчёта для быстрого уровня семафора.
Period2 Период расчёта для среднего уровня семафора.
Period3 Период расчёта для медленного уровня семафора.
Width1 Ширина линий стрелок быстрого уровня семафора.
Width2 Ширина линий стрелок среднего уровня семафора.
Width3 Ширина линий стрелок медленного уровня семафора.
BarsCount Количество баров, участвующих в расчёте треугольных паттернов и поиске семафоров.
note Текстовый параметр, используемый как разделитель в окне настроек индикатора.
ShowTriangles Переключатель отображения треугольников на графике.
FillUp Переключатель заливки треугольников на графике.
ShowMarks Переключатель отображения ценовых меток на графике.
BuyTriangle Цвет треугольника, рисуемого на графике при обнаружении паттерна на покупку.
SellTriangle Цвет треугольника, рисуемого на графике при обнаружении паттерна на продажу.
BuyMark Цвет ценовой метки, устанавливаемой при обнаружении паттерна «1-2-3» на покупку.
SellMark Цвет ценовой метки, устанавливаемой при обнаружении паттерна «1-2-3» на продажу.
Width Ширина линий треугольников на графике.
copy Префикс имён графических объектов, создаваемых индикатором на графике.
ShowRay Переключатель отображения лучей при формировании треугольников.
BuyRayColor Цвет луча, рисуемого при формировании треугольника на покупку.
SellRayColor Цвет луча, рисуемого при формировании треугольника на продажу.
rayStyle Стиль линий лучей, рисуемых при формировании треугольников.
rayWidth Ширина линий лучей на графике.
_____ Разделитель группы настроек уведомлений.
ShowAlert Переключатель отправки алертов при появлении семафоров на графике.
ShowAlertTr Переключатель отправки алертов при формировании треугольных паттернов.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1  clrRed
#property indicator_color2  clrRed
#property indicator_color3  clrYellow
#property indicator_color4  clrYellow
#property indicator_color5  clrGreen
#property indicator_color6  clrGreen

input bool             ShowSemaforsH             = true; 
input bool             ShowSemaforsN             = true; 
input bool             ShowSemaforsF             = true; 
input bool             ShowFiboLevels            = FALSE; 
input int              Period1                   = 12; 
input int              Period2                   = 12;
input int              Period3                   = 120;
input int              Width1                    = 5;
input int              Width2                    = 5;
input int              Width3                    = 5;
input int              BarsCount                 = 500;
input string           note                      = "----------  Треугольники -----------";
input bool             ShowTriangles             = true;
input int              ОграничительТреугольников = 0;
input bool             FillUp                    = FALSE;
input bool             ShowMarks                 = true;
input color            BuyTriangle               = clrDeepPink;
input color            SellTriangle              = clrDodgerBlue;
input color            BuyMark                   = clrRed;
input color            SellMark                  = clrBlue;
input int              Width                     = 2;
input int              ЦеноваяМетка              = 5; // 6
input string           copy                      = "tri 1";
input bool             ShowRay                   = true;
input color            BuyRayColor               = clrDeepPink;
input color            SellRayColor              = clrDodgerBlue;
input ENUM_LINE_STYLE  rayStyle                  = STYLE_DASH;
input int              rayWidth                  = 0;

int Dev=1; 
int Stp=1;
int Symbol_1_Kod=158;
int Symbol_2_Kod=159;
int Symbol_3_Kod=82;

input string _____     = "       Оповещение";
input bool   ShowAlert = false;
input bool ShowAlertTr = true;

double FP_BuferUp[], FP_BuferDn[], NP_BuferUp[], NP_BuferDn[], HP_BuferUp[], HP_BuferDn[]; 

string symbol=Symbol();  
int Type1, Type2, Type3, key, keyTr, Ограничитель; 
color tColor = Yellow ;

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

int deinit()  {  _delete_line ();  ObjectsDeleteAll(0,copy+":");Comment("");   return(0);  }

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

double Triangels()  {
   bool  up;
   double OpenPrice, semafor3d, semafor3u, semafor1d, semafor1u, upper, lower;
   double price1, price2, price3, semafor3dn, semafor3up;
   int zz, lev1, time1, time2, time3;

 if(keyTr!=Time[0])  {
   _delete_line ();
/*
   if (zz1>0) CountZZ(FP_BuferUp,FP_BuferDn,zz1,Dev,Stp);
   if (zz2>0) CountZZ(NP_BuferUp,NP_BuferDn,zz2,Dev,Stp);
   if (zz3>0) CountZZ(HP_BuferUp,HP_BuferDn,zz3,Dev,Stp);
*/   
   double spread=MarketInfo(Symbol(), MODE_SPREAD)*Point;
   for(zz=BarsCount; zz>=1; zz--) {
     price1=0;  price2=0;  price3=0;
     semafor3d=0; semafor3u=0;
     semafor3d=HP_BuferUp[zz];
     semafor3u=HP_BuferDn[zz];
     time1=Time[zz];
     if(semafor3d>0) {
       price1=semafor3d;
       up=false;
       OpenPrice=0; upper=0;
       for(lev1=zz-1; lev1>=1; lev1--)  {
         semafor3dn=HP_BuferUp[lev1];
         semafor3up=HP_BuferDn[lev1];
         if(semafor3up>0 || semafor3dn>0)  break;
         if(!up)  {
           semafor1u=FP_BuferDn[lev1];
           if(semafor1u>0)                  upper=semafor1u;
           if(upper>0 && upper>=semafor3d) {
             price2=upper;
             time2=Time[lev1];
             up=true;
           }
         } 
         else {
           lower=FP_BuferUp[lev1+1];
           if(lower>0 && lower>=semafor3d) {
             time3=Time[lev1+1];
             price3=lower;
           }
         }
         if(price1>0 && price2>0 && price3>0)  {
           OpenPrice=10; 
           if(lev1==1 && ShowAlertTr)  Alert(Symbol(),"   ", Period(), "     Buy!!!  Отложку на ", DoubleToStr(price2+2*2*Point+spread,Digits));
           break;
         } 
       }
       if(OpenPrice>0 && price2-price1<Ограничитель*Point) 
       {
         DrawTriangle(copy+"123h"+zz, time1, price1, time2, price2, time3, price3, BuyTriangle);
         DrawArrow(copy+"123_X"+lev1, time2/*+Period()*60*/, price2+2*Point+spread, BuyMark);
         if (ShowFiboLevels) 
         {
            string nameObjLF=copy+"123"+"_BFibo_"+DoubleToStr(price2+2*Point+spread,Digits);
            if (ObjectFind(nameObjLF)<0) 
            {
               ObjectCreate(nameObjLF, OBJ_FIBO, 0, time2, price2, time1, price1);
               ObjectSet(nameObjLF, OBJPROP_LEVELCOLOR, BuyTriangle);
               ObjectSet(nameObjLF, OBJPROP_STYLE, 0);
               ObjectSet(nameObjLF, OBJPROP_WIDTH, 1);
               ObjectSet(nameObjLF, OBJPROP_RAY,0);
               ObjectSet(nameObjLF, OBJPROP_BACK,1);
            } 
         }
         if (ShowRay)
         {
            string name = copy+":"+time1;
            ObjectDelete(name);
            ObjectCreate(name,OBJ_TREND,0,time1,price1,time3,price3,0);
               Obj

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

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

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

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

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

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

Стоимость полного кода
1 044₽ ≈ $12.76