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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.