Общий Разбор кода индикатора 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.
- 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" в зависимости от сигналов.
- 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. Он настраивается через входные параметры и предоставляет простые торговые рекомендации на основе показателей нескольких индикаторов, эффективно обрабатывает сигналы и отправляет уведомления. Этот индикатор особенно полезен для трейдеров, следящих за несколькими таймфреймами и желающих получать уведомления о значительных изменениях на рынке.

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

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

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