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

fvggengulfing.mq5

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

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

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

О программе

Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 4, написанный на языке MQL4. Он предназначен для обнаружения двух типов ценовых паттернов: имбалансов Fair Value Gap (FVG) и паттернов поглощения (Engulfing) на настраиваемых таймфреймах.

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

Индикатор также распознаёт бычье и медвежье поглощение на заданном таймфрейме. Бычье поглощение определяется по условиям: предыдущая свеча медвежья, текущая бычья, закрытие текущей свечи выше открытия предыдущей и минимум текущей ниже минимума предыдущей. Для медвежьего поглощения условия инвертированы. Результаты отображаются соответствующими прямоугольниками.

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

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

НастройкаОписание
FVG Timeframe (Inp_fvgTf) Таймфрейм FVG — Таймфрейм, на котором выполняется поиск имбалансов Fair Value Gap (FVG).
Engulfing Timeframe (Inp_engulfingTf) Таймфрейм Engulfing — Таймфрейм, на котором выполняется поиск паттернов поглощения (Engulfing).
Short FVG Color (shortFvgColor) Цвет медвежьего FVG — Цвет залитого прямоугольника, обозначающего медвежий FVG.
Long FVG Color (longFvgColor) Цвет бычьего FVG — Цвет залитого прямоугольника, обозначающего бычий FVG.
Short Engulfing Color (shortEngulfingColor) Цвет бычьего поглощения — Цвет прямоугольника, обозначающего паттерн бычьего поглощения.
Long Engulfing Color (longEngulfingColor) Цвет медвежьего поглощения — Цвет прямоугольника, обозначающего паттерн медвежьего поглощения.
Send Alerts (sendAlerts) Отправка уведомлений — Включает или отключает отправку уведомлений через встроенный механизм Alert.
Send Telegram Notifications (sendTelegramNotifications) Отправка в Telegram — Включает или отключает отправку уведомлений в Telegram.
Chat ID (chatID) ID чата — Идентификатор чата Telegram для отправки уведомлений.
Получить полный код

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

#property version "1.00"

#property indicator_chart_window

input ENUM_TIMEFRAMES Inp_fvgTf = PERIOD_H4;       // FVG Timeframe
input ENUM_TIMEFRAMES Inp_engulfingTf = PERIOD_D1; // Engulfing Timeframe
input color shortFvgColor = clrMaroon;             // Short FVG Color
input color longFvgColor = clrDarkGreen;           // Long FVG Color
input color shortEngulfingColor = clrMaroon;       // Short Engulfing Color
input color longEngulfingColor = clrDarkGreen;     // Long Engulfing Color
input bool sendAlerts = true;                      // Send Alerts
input bool sendTelegramNotifications = true;       // Send Telegram Notifications
input string chatID = "";                          // Chat ID
input string token = "";                           // Token

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

void OnDeinit(const int reason)
{
}

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

class CisNewBar
{
protected:
    datetime m_lastbar_time;

    string m_symbol;
    int m_period;

    uint m_retcode;
    int m_new_bars;

public:
    void CisNewBar()
    {
        m_retcode = 0;
        m_lastbar_time = 0;
        m_symbol = Symbol();
        m_period = Period();
    }

    uint GetRetCode() const { return (m_retcode); }
    string GetSymbol() const { return (m_symbol); }
    int GetPeriod() const { return (m_period); }

    void SetSymbol(string symbol) { m_symbol = (symbol == NULL || symbol == "") ? Symbol() : symbol; }
    void SetPeriod(int period) { m_period = (period == PERIOD_CURRENT) ? Period() : period; }

    bool isNewBar()
    {
        m_retcode = 0;

        if (m_lastbar_time > iTime(m_symbol, m_period, 0))
        {
            m_retcode = -1;
            return (false);
        }

        if (m_lastbar_time == 0)
        {
            m_lastbar_time = iTime(m_symbol, m_period, 0);
            return (false);
        }

        if (m_lastbar_time < iTime(m_symbol, m_period, 0))
        {
            m_lastbar_time = iTime(m_symbol, m_period, 0);
            return (true);
        }

        return (false);
    }
};
CisNewBar fvgTF;
CisNewBar engulfingTF;

bool GetPostData(char &postData[], string &headers, string chat, string text, string filename)
{
    ResetLastError();

    if (!FileIsExist(filename))
    {
        Print("File '%s' does not exist", filename);
        return false;
    }

    int flags = FILE_READ | FILE_BIN;
    int file = FileOpen(filename, flags);
    if (file == INVALID_HANDLE)
    {
        int err = GetLastError();
        Print("Could not open file '%s', error=%i", filename, err);
        return false;
    }

    int fileSize = (int)FileSize(file);
    uchar photo[];
    ArrayResize(photo, fileSize);
    FileReadArray(file, photo, 0, fileSize);
    FileClose(file);

    string hash = "";
    AddPostData(postData, hash, "chat_id", chat);
    if (StringLen(text) > 0)
    {
        AddPostData(postData, hash, "caption", text);
    }
    AddPostData(postData, hash, "photo", photo, filename); // Send local file as binary data
    ArrayCopy(postData, "--" + hash + "--\r\n");

    headers = "Content-Type: multipart/form-data; boundary=" + hash + "\r\n";
    return true;
}

void AddPostData(uchar &data[], string &hash, string key = "", string value = "")
{
    uchar valueArr[];
    StringToCharArray(value, valueArr, 0, StringLen(value));
    AddPostData(data, hash, key, valueArr);
}

void AddPostData(uchar &data[], string &hash, string key, uchar &value[], string fileName = "")
{
    if (hash == "")
    {
        hash = Hash();
    }

    ArrayCopy(data, "\r\n");
    ArrayCopy(data, "--" + hash + "\r\n");
    if (fileName == "")
    {
        ArrayCopy(data, "Content-Disp

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

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

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

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

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

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

Стоимость полного кода
1 167,50₽ ≈ $14.27