Общий Разбор кода индикатора Trade Assistant

Общий Разбор

Этот индикатор, созданный на языке MQL4, предназначен для платформы MetaTrader 4. Он предоставляет торговые рекомендации на основе значений индикаторов Stochastic, RSI и CCI. Кроме того, он отображает сигналы в отдельном окне графика и может отправлять уведомления о состоянии торговых сигналов.

Заголовок и Свойства

#property copyright "https://t.me/ForexEaPremium"
#property link      "https://t.me/ForexEaPremium"
#property version   "1.02"
#property strict

Тут указаны основные свойства пользовательской библиотеки:

  • Авторские права и ссылку на ресурс разработчика.
  • Версию индикатора.
  • Использование строгого режима strict, что подразумевает явное объявление переменных.

Описание индикатора

#property description "Trade Assistant - an indicator that shows simple trade recommendations based on the Stochastic, RSI, and CCI readings."
#property description "Alerts on indicator confluence."
#property description "Supported timeframes: M1, M5, M15, M30, H1, H4, D1, W1, MN1."

Здесь идет описание функциональности индикатора и поддерживаемых таймфреймов.

Объявление переменных

enum enum_candle_to_check
{
    Current,
    Previous
};
// Input parameters
input enum_candle_to_check CheckCandle = Previous; // CheckCandle: Affects both indications and alerts.

Здесь объявляется перечисляемый тип enum_candle_to_check для выбора свечи, по которой будет осуществляться проверка — текущей или предыдущей. Входной параметр CheckCandle определяет, что по умолчанию будет использоваться предыдущая свеча.

Настройки индикаторов и уведомлений

input string Stochastic_Settings = "=== Stochastic Settings ===";
input int    PercentK            = 8;
input int    PercentD            = 3;
input int    Slowing             = 3;
input string RSI_Settings        = "=== RSI Settings ===";
input int    RSIP1               = 14;
input int    RSIP2               = 70;

Это определения входных параметров для настройки индикаторов Stochastic и RSI. Параметры включают длину и уровни для RSI (например, уровни перекупленности и перепроданности).

Таймфреймы и Цвета

input string Timeframe_Settings  = "=== Timeframe Settings ===";
input bool   Enable_M1           = false; // Enable M1
input bool   Enable_M5           = true;  // Enable M5
input bool   Enable_M15          = true;  // Enable M15
// и так далее для остальных таймфреймов.

Здесь пользователь может включить или отключить различные таймфреймы для индикатора.

Цвета для визуального отображения сигналов:

input color  TFColor             = clrLightSteelBlue; // Timeframe Color
input color  IndicatorColor      = clrPaleGoldenrod;  // Indicator Color
input color  BuyColor            = clrLime;           // Buy Color
input color  SellColor           = clrRed;            // Sell Color
input color  NeutralColor        = clrKhaki;          // Neutral Color

Глобальные переменные

int IndicatorWindow = -1;
string ShortName = "Trade Assistant";

IndicatorWindow отвечает за идентификацию окна индикатора, а ShortName задает его короткое название.

Основные функции

Инициализация

int OnInit()
{
    IndicatorShortName(ShortName);
    if ((!Enable_M1) && (!Enable_M5) && (!Enable_M15) && (!Enable_M30) && (!Enable_H1) && (!Enable_H4) && (!Enable_D1) && (!Enable_W1) && (!Enable_MN1)) return INIT_FAILED;
    return INIT_SUCCEEDED;
}

Функция OnInit вызывается при инициализации индикатора. Она задает название индикатора и проверяет, активированы ли хотя бы один таймфрейм.

Деинициализация

void OnDeinit(const int reason)
{
    ObjectsDeleteAll(ChartID(), IndicatorWindow, OBJ_LABEL);
}

При деинициализации индикатора удаляются все созданные объекты (ярлыки) с графика.

Основной расчет

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& tick_volume[],
                const long& volume[],
                const int& spread[])

Функция OnCalculate выполняет основной расчет значений индикаторов и отображает их на графике. Она принимает текущие данные о ценах, объеме и временными метками.

Внутренние процессы
  • Проверка, были ли уже инициализированы окна для отображения индикатора.
  • Создание объектов для отображения меток и сигналов для каждого таймфрейма.
  • Основные вычисления для Stochastic и RSI.

В случае с Stochastic:

if ((iStochastic(NULL, TF[x], PercentK, PercentD, Slowing, MODE_SMA, 0, MODE_MAIN, CheckCandle)) >
    (iStochastic(NULL, TF[x], PercentK, PercentD, Slowing, MODE_SMA, 0, MODE_SIGNAL, CheckCandle)))
{
    ObjectSetText(name_arrow, CharToString(sBuy), fontSize, "Wingdings", BuyColor);
    ObjectSetText(name_text, " BUY", 9, "Arial Bold", BuyColor);
    Confluence[x]++;
}

Здесь формируется логика определения сигналов для Buy и Sell на основе значений Stochastic и RSI.

Основные секции кода

Обработка сигналов CCI

Код обрабатывает сигналы для двух типов CCI: Entry CCI и Trend CCI.

  1. Entry CCI
// Entry CCI arrows and text.
name_arrow = "dI" + IntegerToString(x) + "2";
name_text = "tI" + IntegerToString(x) + "2";
if ((iCCI(NULL, TF[x], eCCI[x], PRICE_TYPICAL, CheckCandle)) > 0) // If entry CCI is greater than zero.
{
    if ((iCCI(NULL, TF[x], eCCI[x], PRICE_TYPICAL, CheckCandle)) > (iCCI(NULL, TF[x], eCCI[x], PRICE_TYPICAL, CheckCandle + 1)))
    {...}
}

В данном блоке проверяется значение CCI (Commodity Channel Index) для определённого таймфрейма. Если значение CCI больше нуля, проверяется, повышается ли оно по сравнению с предыдущим значением завтрашнего дня. На основании этого устанавливаются эмодзи (стрелки) и текст "BUY"/"SELL" в зависимости от сигналов.

 

  1. Trend CCI

Код для обработки Trend CCI аналогичен, но с использованием другого массива (tCCI).

// Trend CCI arrows and text.
name_arrow = "dI" + IntegerToString(x) + "3";
name_text = "tI" + IntegerToString(x) + "3";
if ((iCCI(NULL, TF[x], tCCI[x], PRICE_TYPICAL, CheckCandle)) > 0) // If trend CCI greater than zero.
{...}

Генерация предупреждений

После обработки сигналов от CCI, индикатор может отправлять предупреждения в зависимости от состояния согласия сигналов:

// Alerts
if ((EnableNativeAlerts) || (EnableEmailAlerts) || (EnablePushAlerts))
{
    string buy_text = "Buy confluence:";
    string sell_text = "Sell confluence:";
    bool need_alert = false, buy = false, sell = false;
    static string Text_prev = "";
    for (int x = 0; x < 9; x++)
    {
        if (Confluence[x] == 4)
        {...}
    }
    // Confluence alert
    if (need_alert)
    {
        string Text = "TA: " + Symbol() + " - ";
        if (buy) {...}
        if (Text != Text_prev)
        {
            if (EnableNativeAlerts) Alert(Text);
            if (EnableEmailAlerts) SendMail("TA Alert", Text);
            if (EnablePushAlerts) SendNotification(Text);
            Text_prev = Text;
        }
    }
}

Логика

  • buy_text и sell_text собирают текстовую информацию о таймфреймах, где есть полное согласие сигналов для покупок или продаж.
  • Переменные need_alert, buy, и sell отслеживают необходимость в отправке предупреждений и определяют, было ли достигнуто полное согласие.
  • Используется static string Text_prev, чтобы избежать отправки одинаковых сообщений несколько раз.

Проверка таймфреймов

//+------------------------------------------------------------------+
//| Returns true if the given TF is enabled.                         |
//+------------------------------------------------------------------+
bool TimeframeCheck(ENUM_TIMEFRAMES tf)
{
    if ((tf == PERIOD_M1)  && (!Enable_M1))  return false;
    if ((tf == PERIOD_M5)  && (!Enable_M5))  return false;
    if ((tf == PERIOD_M15) && (!Enable_M15)) return false;
    if ((tf == PERIOD_M30) && (!Enable_M30)) return false;
    if ((tf == PERIOD_H1)  && (!Enable_H1))  return false;
    if ((tf == PERIOD_H4)  && (!Enable_H4))  return false;
    if ((tf == PERIOD_D1)  && (!Enable_D1))  return false;
    if ((tf == PERIOD_W1)  && (!Enable_W1))  return false;
    if ((tf == PERIOD_MN1) && (!Enable_MN1)) return false;
    return true;
}

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

Индикатор Trade Assistant представляет собой мощный инструмент для трейдеров на платформе MetaTrader 4. Он настраивается через входные параметры и предоставляет простые торговые рекомендации на основе показателей нескольких индикаторов, эффективно обрабатывает сигналы и отправляет уведомления. Этот индикатор особенно полезен для трейдеров, следящих за несколькими таймфреймами и желающих получать уведомления о значительных изменениях на рынке.

obschiy-razbor-koda-indikatora-trade-assistant


152 11.02.2025
Связанные товары
Последние Новости
Что такое виртуальный сервер VPS в трейдинге
Что такое виртуальный сервер VPS в трейдинге

В последние годы виртуальные частные серверы (VPS) стали популярным инструментом среди трейдеров, использующих автоматизированные ..

Общее про форекс
12.02.2025 185
Общий Разбор кода индикатора Trade Assistant
Общий Разбор кода индикатора Trade Assistant

Общий Разбор Этот индикатор, созданный на языке MQL4, предназначен для платформы MetaTrader 4. Он предоставляет торговые рекоменд..

Исходный код
11.02.2025 152
Обзор работы советника MACD Expert Advisor
Обзор работы советника MACD Expert Advisor

Разбор исходного кода советника MACD для MetaTrader 4 В данной статье мы подробно рассмотрим исходный код советника, который реал..

Исходный код
10.02.2025 156
Наш сайт использует cookie. Продолжая им пользоваться, вы соглашаетесь на обработку персональных данных в соответствии с политикой конфиденциальности.