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

123PatternsV6

123patternsv6.03 & mtf nmc alerts bt.mq4
Вы автор или правообладатель?

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

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

О программе

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

Индикатор предоставляет гибкую настройку отображения: можно включать или скрывать линии, уровни целей, точки переходов и стрелки. Доступна система уведомлений о событиях — всплывающие окна, электронная почта, push-уведомления и звуковые сигналы с раздельными файлами для бычьих и медвежьих сигналов. На графике размещается интерактивная кнопка для переключения видимости данных.

Сигналы генерируются при пробое построенных линий ценой: бычий сигнал при пробое верхней линии закрытием свечи над ней, медвежий — при пробое нижней линии закрытием свечи под ней. Условия проверяют глубину ретрейса в заданных пределах. Информация о текущем сигнале отображается в виде комментария в левом верхнем углу графика, а данные между таймфреймами передаются через глобальные переменные.

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

НастройкаОписание
Notes Заметки — Текстовый параметр для пользовательских заметок и настроек.
TimeFrame Таймфрейм — Таймфрейм, на котором работает индикатор (например, M1, H1, D1 или Current time frame).
ZigZagDepth Глубина ZigZag — Глубина ZigZag-индикатора, определяющая минимальное расстояние между точками разворота.
RetraceDepthMin Минимальная глубина ретрейса — Минимальная глубина ретрейса для распознавания паттерна 123.
RetraceDepthMax Максимальная глубина ретрейса — Максимальная глубина ретрейса для распознавания паттерна 123.
ShowAllLines Показывать все линии — Отображает или скрывает верхнюю и нижнюю трендовые линии на графике.
ShowAllBreaks Показывать все пробитые линии — Отображает все пробитые линии, включая те, которые не являются паттерном 123.
ShowTargets Показывать уровни целей — Отображает или скрывает уровни целей Target1 и Target2 на графике.
Target1Multiply Множитель первой цели — Множитель для расчёта первого уровня цели относительно диапазона цены.
Target2Multiply Множитель второй цели — Множитель для расчёта второго уровня цели относительно диапазона цены.
HideTransitions Скрывать переходы линий — Скрывает переходы линий между баром и баром, отображая линии только при их изменении.
ahs Заголовок блока уведомлений — Текстовый параметр для заголовка блока настроек уведомлений.
AlertsOnBearSignals Уведомления при медвежьих сигналах — Включает или отключает уведомления при медвежьих сигналах индикатора.
AlertsOnBullSignals Уведомления при бычьих сигналах — Включает или отключает уведомления при бычьих сигналах индикатора.
123 setup (Point2BreakAlerts) Уведомления при пробое точки 2 (паттерн 123) — Включает или отключает уведомления при пробое точки 2 (паттерн 123).
not 123 setup (BreakUpperLineAlerts) Уведомления при пробое верхней линии — Включает или отключает уведомления при пробое верхней линии (не является паттерном 123).
not 123 setup (BreakLowerLineAlerts) Уведомления при пробое нижней линии — Включает или отключает уведомления при пробое нижней линии (не является паттерном 123).
PopupAlerts Всплывающие уведомления — Включает или отключает всплывающие уведомления на графике.
EmailAlerts E-mail уведомления — Включает или отключает отправку уведомлений по электронной почте.
PushNotificationAlerts Push-уведомления — Включает или отключает push-уведомления на мобильное устройство.
SoundAlerts Звуковые уведомления — Включает или отключает звуковые уведомления при срабатывании сигналов.
SoundFileBull Звуковой файл для бычьих сигналов — Файл звукового уведомления для бычьих сигналов.
SoundFileBear Звуковой файл для медвежьих сигналов — Файл звукового уведомления для медвежьих сигналов.
ShowScreenComment Показывать комментарий на графике — Включает или отключает отображение текстового комментария с информацией о сигнале в левом верхнем углу графика.
UniqueID Уникальный идентификатор — Идентификатор для глобальных переменных, используемых для передачи данных между таймфреймами.
button_note1 Заметка кнопки 1 — Текстовая заметка перед настройками кнопки.
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 — Текстовая заметка после настроек кнопки.
Получить полный код

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

#define INDICATOR_VERSION    20101105       // VERSION 6
#define INDICATOR_NAME       "123PatternsV6"
#define RELEASE_LEVEL        "Public"
#define MT4_BUILD            226

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1  DodgerBlue   // UpperLine
#property indicator_color2  OrangeRed    // LowerLine
#property indicator_color3  LimeGreen    // Target1
#property indicator_color4  LimeGreen    // Target2
#property indicator_color5  DodgerBlue   // BuyArrow
#property indicator_color6  OrangeRed    // SellArrow
#property indicator_color7  DodgerBlue   // BullDot
#property indicator_color8  OrangeRed    // BearDot
#property indicator_width1  1
#property indicator_width2  1
#property indicator_width3  1
#property indicator_width4  1
#property indicator_width5  3  // BuyArrow
#property indicator_width6  3  // SellArrow
#property indicator_width7  3  // BullDot
#property indicator_width8  3  // BearDot

extern string Notes           = "15pip RangeBars Basic Setup";
extern string TimeFrame       = "Current time frame";
extern int    ZigZagDepth     = 4;
extern double RetraceDepthMin = 0.4;
extern double RetraceDepthMax = 1.0;
extern bool   ShowAllLines    = True;
extern bool   ShowAllBreaks   = True;
extern bool   ShowTargets     = False;
extern double Target1Multiply = 1.5;
extern double Target2Multiply = 3.0;
extern bool   HideTransitions = True;

extern string ahs="***** ALERT settings:";
extern bool AlertsOnBearSignals  = true;
extern bool AlertsOnBullSignals  = true;
extern bool Point2BreakAlerts = true;//123 setup
extern bool BreakUpperLineAlerts = true;//not 123 setup
extern bool BreakLowerLineAlerts = true;//not 123 setup

extern bool PopupAlerts         = true;
extern bool EmailAlerts         = false;
extern bool PushNotificationAlerts = false;
extern bool SoundAlerts         = false;
extern string SoundFileBull = "alert.wav";
extern string SoundFileBear = "alert2.wav";
extern bool  ShowScreenComment = true;
int lastP2BreakAlert=3;
int lastLineBreakAlert=3;
string msg;

/*
extern bool   alertsOn        = true;
extern bool   alertsOnCurrent = false;
extern bool   alertsMessage   = true;
extern bool   alertsSound     = false;
extern bool   alertsNotify    = true;
extern bool   alertsEmail     = true;

*/
extern string UniqueID        = "GlobalVariable1";
extern string             button_note1          = "------------------------------";
extern ENUM_BASE_CORNER   btn_corner            = CORNER_LEFT_UPPER; 
extern string             btn_text              = "123";
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           = "123 OFF";            
extern string             btn_unpressed         = "123 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             = 70;                                 
extern int                btn_Height            = 20;                                
extern string             soundBT               = "tick.wav";  
extern string             button_note2          = "------------------------------";

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

double UpperLine[];
double LowerLine[];
double Target1[];
double Target2[];
double BuyArrow[];
double SellArrow[];
double BullDot[];
double BearDot[];

double   firsthigh, firstlow, lasthigh, lastlow, prevhigh, prevlow, signalprice, brokenline;
datetime firsthightime, firstlowtime, lasthightime, lastlowtime, prevhightime, prevlowtime, signaltime;
datetime redrawtime;  // remember when the indicator was redrawn

int     signal;
#define NOSIG   0
#define BUYSIG  1
#define SELLSIG 2

string indicatorFileName;
bool   returnBars;
bool   calculateValue;
int    timeFrame;

string GenerateIndicatorName(const string target)
{
   string name = target;
   int try = 2;
   while (WindowFind(name) != -1)
   {
      name = target + " #" + IntegerToString(try++);
   }
   return name;
}
int init()
{
      // код доступен только после оплаты
   } // end of init()
void createButton(string buttonID,string buttonText,int width,int height,string font,int fontSize,color bgColor,color borderColor,color txtColor)
{

      ObjectCreate (ChartID(),buttonID,OBJ_BUTTON,WindowOnDropped(),0,0);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_COLOR,txtColor);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_BGCOLOR,bgColor);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_BORDER_COLOR,borderColor);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_XSIZE,width);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_YSIZE,height);
      ObjectSetString (ChartID(),buttonID,OBJPROP_FONT,font);
      ObjectSetString (ChartID(),buttonID,OBJPROP_TEXT,buttonText);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_FONTSIZE,fontSize);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_SELECTABLE,0);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_CORNER,btn_corner);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_HIDDEN,1);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_XDISTANCE,9999);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_YDISTANCE,9999);
}
 bool recalc = true;
 void handleButtonClicks()
{
   if (ObjectGetInteger(ChartID(), buttonId, OBJPROP_STATE))
   {
      ObjectSetInteger(ChartID(), buttonId, OBJPROP_STATE, false);
      show_data = !show_data;
      GlobalVariableSet(IndicatorName + "_visibility", show_data ? 1.0 : 0.0);
      recalc = true;
      start();
   }
}

void OnChartEvent(const int id, 
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   handleButtonClicks();
   if (id==CHARTEVENT_OBJECT_CLICK && ObjectGet(sparam,OBJPROP_TYPE)==OBJ_BUTTON)
   {
   if (soundBT!="") PlaySound(soundBT);     
   }
}

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

void StatusMessage()
   {
   if(IsTesting() == True) return; // do no more
   if (timeFrame!=Period())
   {
      signal      = GlobalVariableGet(UniqueID+":0");
      signaltime  = GlobalVariableGet(UniqueID+":1");
      signalprice = GlobalVariableGet(UniqueID+":2");
   }
   string symbol = Symbol(); if (StringSubstr(symbol,0,2)=="_t") symbol = StringSubstr(symbol,2);
   double multi  = 1;
  	int    digits = MarketInfo(symbol,MODE_DIGITS);
   if (digits==3 || digits==5) multi = 10.0;
   string msg = INDICATOR_NAME+"  "+TimeToStr(TimeCurrent(),TIME_MINUTES)+"  ";
   if(signal == NOSIG) msg = msg + "NOSIG  ";
   if(signal == BUYSIG) msg = msg + "BUYSIG  "+ TimeToStr(signaltime,TIME_MINUTES)+"  "+DoubleToStr(signalprice,Digits)+"  ";
   if(signal == SELLSIG) msg = msg + "SELLSIG  "+ TimeToStr(signaltime,TIME_MINUTES)+"  "+DoubleToStr(signalprice,Digits)+"  ";
   msg = msg + "ZigZagDepth="+ZigZagDepth+"  ";

   msg = msg + "Spread="+DoubleToStr(MarketInfo(symbol,MODE_SPREAD)/ multi,2)+"  ";
   msg = msg + "Range="+(iHigh(symbol,timeFrame,0) - iLow(symbol,timeFrame,0))/(MarketInfo(symbol,MODE_POINT)*multi)+"  ";
   Comment(msg);
      if (timeFrame==Period() || calculateValue)
      {
         GlobalVariableSet(UniqueID+":0",signal);
         GlobalVariableSet(UniqueID+":1",signaltime);
         GlobalVariableSet(UniqueID+":2",signalprice);
      }      
   }

int start2()
{

if(redrawtime == Time[0]) {StatusMessage(); return(0);} // if already redrawn on this candle then do no more
else redrawtime = Time[0];                              // remember when the indicator was redrawn

   if (calculateValue || timeFrame == Period())
   {
      double   zigzag, range, retracedepth, one, two, three;
      datetime onetime, twotime, threetime;
      int      shift = Bars-1;
      while(shift >= 0)
      {

         UpperLine[shift] = UpperLine[shift+1];
         LowerLine[shift] = LowerLine[shift+1];
         Target1[shift]   = Target1[shift+1];
         Target2[shift]   = Target2[shift+1];
         BuyArrow[shift]  = EMPTY_VALUE;
         SellArrow[shift] = EMPTY_VALUE;
         BullDot[shift]   = EMPTY_VALUE;
         BearDot[shift]   = EMPTY_VALUE;
         zigzag           = iCustom(NULL,0,"ZigZag",ZigZagDepth,5,3,0,shift);
         if(zigzag == High[shift])
         {
            UpperLine[shift] = High[shift];
            firsthigh = prevhigh; firsthightime = prevhightime;
            prevhigh = lasthigh;  prevhightime = lasthightime;
            lasthigh = zigzag;    lasthightime = Time[shift];
         }
         if(zigzag == Low[shift])
         {
            LowerLine[shift] = Low[shift];
            f

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

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

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

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

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

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

Стоимость полного кода
1 992,60₽ ≈ $24.35