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

pinbar detector_5391011682577321310.mq5

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

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

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

О программе

Данный индикатор предназначен для обнаружения паттернов пин-баров (pinbar) на графиках цен в платформе MetaTrader 5. Он анализирует свечные данные и отображает найденные паттерны в виде стрелок двух цветов: зелёных для восходящих пин-баров и красных для нисходящих. Индикатор использует четыре буфера — два для значений и два для цветовой индикации.

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

Индикатор поддерживает три типа уведомлений: всплывающие предупреждения, электронные письма и push-уведомления. Каждый тип оповещения включается отдельным переключателем. Уведомления отправляются при обнаружении пин-бара на последнем завершённом баре.

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

НастройкаОписание
BarCount - number of bars to process, 0 = all bars. (BarCount) Количество баров — Количество баров для обработки; значение 0 означает все бары.
ArrowOffset - larger values increase distance from arrows to candles. (ArrowOffset) Смещение стрелок — Увеличение значения увеличивает расстояние от стрелок до свечей.
Enable Alerts (EnableAlerts) Всплывающие уведомления — Включение всплывающих предупреждений.
Enable Email Alerts (set up SMTP in Tools->Options->Emails) (EnableEmailAlerts) Email-уведомления — Включение электронных писем (настройка SMTP в Сервис→Параметры→Почта).
Enable Push Notifications (set up in Tools->Options->Notifications) (EnablePushNotifications) Push-уведомления — Включение push-уведомлений (настройка в Сервис→Параметры→Уведомления).
Use Custom Configuration - if true, apply parameters below: (UseCustomConfig) Пользовательская конфигурация — Использовать пользовательскую конфигурацию — при значении true применяются параметры ниже.
Max ratio of tail body to candle length (CustomMaxTailBodyRatio) Макс. соотношение тела хвоста — Максимальное соотношение тела хвоста к длине свечи.
Position of body in tail candle (e.g., top/bottom 40%) (CustomTailBodyPlacement) Положение тела в хвостовой свече — Положение тела в хвостовой свече (например, верхняя/нижняя часть в процентах).
true = Previous candle direction opposes pattern (CustomPrevCandleOpposite) Направление свечи противоположно паттерну — true — направление предыдущей свечи должно быть противоположно паттерну.
true = Tail candle direction matches pattern (CustomTailSameDirection) Направление хвоста совпадает с паттерном — true — направление хвостовой свечи должно совпадать с паттерном.
true = Tail body is within previous candle body (CustomTailBodyWithinPrevBody) Тело хвоста внутри тела предыдущей свечи — true — тело хвостовой свечи находится внутри тела предыдущей свечи.
Min ratio of previous candle body to its length (CustomPrevCandleMinBodyRatio) Мин. соотношение тела предыдущей свечи — Минимальное соотношение тела предыдущей свечи к её длине.
Min protrusion of tail candle relative to its length (CustomTailProtrusion) Мин. выступание хвостовой свечи — Минимальное выступание хвостовой свечи относительно её длины.
Max ratio of tail body to previous candle body (CustomTailBodyToPrevBody) Макс. соотношение тел свечей — Максимальное соотношение тела хвостовой свечи к телу предыдущей свечи.
Min ratio of tail candle length to previous candle length (CustomTailLengthToPrevLength) Мин. соотношение длин свечей — Минимальное соотношение длины хвостовой свечи к длине предыдущей свечи.
Min depth of previous candle relative to its length (CustomPrevCandleDepth) Мин. глубина предыдущей свечи — Минимальная глубина предыдущей свечи относительно её длины.
Minimum length of tail candle in points (CustomMinTailLength) Мин. длина хвостовой свечи — Минимальная длина хвостовой свечи в пунктах.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 4 // Utilizes 4 buffers (2 for data, 2 for colors)
#property indicator_plots   2 // Two plots: one for upward pinbars, one for downward pinbars

#property indicator_type1   DRAW_COLOR_ARROW
#property indicator_color1  clrLime
#property indicator_width1  2
#property indicator_label1  "Upward Pinbar"

#property indicator_type2   DRAW_COLOR_ARROW
#property indicator_color2  clrRed
#property indicator_width2  2
#property indicator_label2  "Downward Pinbar"

input int  BarCount = 0; // BarCount - number of bars to process, 0 = all bars.
input int  ArrowOffset = 5; // ArrowOffset - larger values increase distance from arrows to candles.
input bool EnableAlerts = true; // Enable Alerts
input bool EnableEmailAlerts = false; // Enable Email Alerts (set up SMTP in Tools->Options->Emails)
input bool EnablePushNotifications = false; // Enable Push Notifications (set up in Tools->Options->Notifications)
input bool UseCustomConfig = false; // Use Custom Configuration - if true, apply parameters below:
input double CustomMaxTailBodyRatio = 0.33; // Max ratio of tail body to candle length
input double CustomTailBodyPlacement = 0.4; // Position of body in tail candle (e.g., top/bottom 40%)
input bool   CustomPrevCandleOpposite = true; // true = Previous candle direction opposes pattern
input bool   CustomTailSameDirection = false; // true = Tail candle direction matches pattern
input bool   CustomTailBodyWithinPrevBody = false; // true = Tail body is within previous candle body
input double CustomPrevCandleMinBodyRatio = 0.1; // Min ratio of previous candle body to its length
input double CustomTailProtrusion = 0.5; // Min protrusion of tail candle relative to its length
input double CustomTailBodyToPrevBody = 1; // Max ratio of tail body to previous candle body
input double CustomTailLengthToPrevLength = 0; // Min ratio of tail candle length to previous candle length
input double CustomPrevCandleDepth = 0.1; // Min depth of previous candle relative to its length
input int    CustomMinTailLength = 1; // Minimum length of tail candle in points

double UpwardPinbar[];
double UpwardColor[];
double DownwardPinbar[];
double DownwardColor[];

int    LastProcessedBars = 0;
double MaxTailBodyRatio = 0.33;
double TailBodyPlacement = 0.4;
bool   PrevCandleOpposite = true;
bool   TailSameDirection = false;
bool   TailBodyWithinPrevBody = false;
double PrevCandleMinBodyRatio = 0.1;
double TailProtrusion = 0.5;
double TailBodyToPrevBody = 1;
double TailLengthToPrevLength = 0;
double PrevCandleDepth = 0.1;
int    MinCandleLength = 1;

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

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &Open[],
                const double &High[],
                const double &Low[],
                const double &Close[],
                const long &tickvolume[],
                const long &volume[],
                const int &spread[])
{
      // код доступен только после оплаты
   }
    int BarsToProcess;
    double TailLength, TailBody, PrevCandleBody, PrevCandleLength;

    ArraySetAsSeries(Open, true);
    ArraySetAsSeries(High, true);
    ArraySetAsSeries(Low, true);
    ArraySetAsSeries(Close, true);

    if (LastProcessedBars == rates_total) return rates_total;
    BarsToProcess = rates_total - LastProcessedBars;
    if ((BarCount > 0) && (BarsToProcess > BarCount)) BarsToProcess = BarCount;
    LastProcessedBars = rates_total;
    if (BarsToProcess == rates_total) BarsToProcess--;

    UpwardPinbar[0] = EMPTY_VALUE;
    DownwardPinbar[0] = EMPTY_VALUE;

    for (int i = BarsToProcess; i >= 1; i--)
    {

        UpwardPinbar[i] = EMPTY_VALUE;
        DownwardPinbar[i] = EMPTY_VALUE;

        if (i == rates_total - 1) continue;

        TailLength = High[i] - Low[i];
        if (TailLength < MinCandleLength * _Point) continue; // Tail candle too short
        if (TailLength == 0) TailLength = _Point;
        PrevCandleLength = High[i + 1] - Low[i + 1];
        if (PrevCandleLength == 0) PrevCandleLength = _Point;
        TailBody = MathAbs(Open[i] - Close[i]);
        if (TailBody == 0) TailBody = _Point;
        PrevCandleBody = MathAbs(Open[i + 1] - Close[i + 1]);
        if (PrevCandleBody == 0) PrevCandleBody = _Point;

        if (

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

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

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

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

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

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

Стоимость полного кода
734,80₽ ≈ $8.98