
Разработка инструментария для анализа движения цен (Часть 3): Советник Analytics Master
Содержание
- Введение
- Обзор предыдущего инструмента
- Обзор Analytic Master
- Код советника
- Разбор кода
- Реализация кода и тестирование
- Заключение
Введение
Разработав скрипт аналитических комментариев, описанный в предыдущей статье, я выявил его ограничения относительно свойств скрипта, которые я изложу ниже. Признавая преимущества скрипта аналитических комментариев, я, тем не менее, разработал советник (EA) под названием Analytics Master. Он предлагает те же возможности, а также дополнительные метрики для более глубокого понимания торговли. Этот новый инструмент обладает рядом преимуществ, включая возможность непрерывного обновления метрик каждые два часа, в отличие от скрипта, который может указывать информацию только один раз.
В некоторых случаях советник может интегрировать функции скрипта для расширения своей функциональности. Это означает, что вы можете реализовать в коде советника определенные задачи, которые напоминают действия, обычно выполняемые автономными скриптами. Советник эффективно сочетает в себе кодирование, настраиваемые параметры, торговую логику и управление рисками для эффективной автоматизации торговых стратегий. Ниже я составил таблицу сравнения скрипта и советника.
Скрипт | Советник |
---|---|
Предназначены для выполнения определенной задачи и завершают ее выполнение практически мгновенно. Завершают работу после выполнения задачи и не могут работать непрерывно. | Непрерывно работают в фоновом режиме, отслеживая рыночные условия и совершая сделки на основе заранее определенных условий. |
Не могут обрабатывать такие события, как тики или таймеры. Скрипт может выполнить свой код только при ручном запуске. | Могут реагировать на рыночные события и изменения (например, OnTick, OnTimer, OnTrade), обеспечивая большую оперативность в торговых стратегиях. |
Обычно скрипт может выполнять сделки (открытие, изменение или закрытие), но не управляет текущими сделками. После выполнения не может отслеживать или реагировать на состояние сделок. | Советники могут динамически управлять открытыми позициями, отслеживать условия торговли, применять трейлинг-стопы и динамически корректировать свои стратегии в зависимости от рыночных условий. |
Обычно разрабатываются для однократного выполнения и могут требовать определенных настроек (например, входных параметров) каждый раз, когда запускаются пользователем вручную. | Могут поддерживать заданные пользователем параметры во время торговой сессии и работать без взаимодействия с пользователем после запуска. |
Лучше всего подходят для простых задач, требующих выполнения действий (например, пакетное закрытие ордеров или применение индикаторов). | Могут включать сложную логику, алгоритмы и системы, требующие постоянного принятия решений и адаптации к рыночным условиям. |
Хотя скрипты могут анализировать исторические данные, они не могут непрерывно адаптироваться или учиться на новых входящих данных без повторного запуска. | Могут анализировать исторические данные и принимать решения на основе поступающих в режиме реального времени данных, что позволяет разрабатывать адаптивные стратегии. |
Поскольку они выполняются и завершаются быстро, также оказывают ограниченное влияние на производительность при запуске по сравнению с непрерывно работающими советниками. | Поскольку советники работают постоянно, это может привести к повышенному потреблению ресурсов процессора и памяти, особенно если они управляют большим количеством сделок или используют сложные алгоритмы. |
Обзор предыдущего инструмента (скрипт аналитических комментариев)
Наш предыдущий инструмент, скрипт аналитических комментариев (Analytical Comment Script), был разработан для анализа ключевых показателей предыдущего торгового дня, включая:
- Цену открытия предыдущего дня
- Цену закрытия предыдущего дня
- Объем предыдущего дня
- Объем текущего дня
- Уровни поддержки и сопротивления
Данная информация представлена в виде вертикально организованной таблицы. Кроме того, прогноз возможных движений рынка был рассчитан на основе предыдущих цен открытия и закрытия, а также объемов торгов, как показано на рисунке 1 ниже.
Рис 1. Представление данных
Наш скрипт успешно рисовал линии тренда на графике, выделяя ключевые уровни поддержки и сопротивления. Прогноз направления движения рынка также оказался положительным. На рисунке 2 мы обобщаем результаты нашего аналитического инструмента.
Рис 2. Результат работы скрипта аналитических комментариев
Узнать больше о скрипте можно здесь:https://www.mql5.com/ru/articles/15927
Обзор советника Analytic Master
При переходе от скрипта к советнику некоторая информация, ранее предоставленная скриптом, по-прежнему будет доступна через советник, как упоминалось в обзоре предыдущего инструмента. Однако советник также предоставляет дополнительную информацию и выполняет задачи, выходящие за рамки возможностей исходного скрипта.
Кроме того, наш советник теперь может рассчитывать волатильность рынка, рыночный спред, эквити, баланс, а также минимально и максимально возможные размеры лотов на основе баланса счета. Я предоставлю дополнительные объяснения того, почему эту информацию необходимо знать.
- Волатильность рынка
Волатильность — это статистическая мера дисперсии данных вокруг своего среднего значения за определенный период. Расчет волатильности рынка имеет решающее значение для эффективного управления рисками, осуществления сделок и стратегического планирования на финансовых рынках. Советник автоматизирует расчет волатильности рынка, упрощая работу пользователя. Хотя волатильность рынка обычно измеряется с помощью приведенной ниже формулы, наш советник упрощает эту функцию для большего удобства.
Рис. 3. Формула волатильности
Чтобы рассчитать волатильность, мы начинаем с определения стандартного отклонения, как описано выше. Чтобы получить годовую волатильность, можно умножить стандартное отклонение на квадратный корень общего количества торговых дней в году, что приблизительно равно 252. Узнать больше: https://quantra.quantinsti.com/glossary/Volatility
- Рыночный спред
Рыночный спред, часто называемый просто "спредом", представляет собой разницу между ценой спроса и предложения на определенный актив на финансовом рынке. Значение рыночного спреда необходимо знать минимум для того, чтобы оценивать торговые издержки. Понимание спреда помогает трейдерам и инвесторам оценить издержки, связанные с открытием и закрытием позиций.
Более узкий спред обычно указывает на более низкие транзакционные издержки и лучшее исполнение сделок, что особенно важно для высокочастотных трейдеров или тех, кто совершает множество сделок ежедневно. И наоборот, более широкий спред может сигнализировать о более высоких издержках и может побудить трейдеров пересмотреть свои стратегии или выбрать другие активы для торговли, чтобы минимизировать издержки. Таким образом, знание величины рыночного спреда напрямую влияет на прибыльность сделок и общую эффективность инвестиций.
Рис 4. Формула рыночного спреда
- Возможные размеры лотов
Чтобы улучшить опыт трейдера, советник (EA) упрощает расчеты рыночных данных и обновляет их каждые два часа. Это гарантирует, что трейдеры будут в курсе самых последних данных о рынке, что позволит им принимать более обоснованные решения.
Код советника (основные функции и особенности)
Код включает в себя несколько функций:
- Извлечение и отображение торговых данных за предыдущие и текущие дни.
- Анализ направления рынка на основе движения цен.
- Построение линий тренда на графике.
- Расчет размера позиции на основе принципов управления рисками.
Ниже приведен код советника:
//+------------------------------------------------------------------+ //| Analytics Master EA.mq5| //| Copyright 2024, Christian Benjamin| //| https://www.mql5,com| //+------------------------------------------------------------------+ #property copyright "2024, MetaQuotes Software Corp." #property link "https://www.mql5.com/en/users/lynnchris" #property description "EA for market analysis and commenting" #property version "1.0" #property strict // Inputs for risk management input double RiskPercentage = 1.0; // Percentage of account balance to risk per trade input double StopLossMultiplier = 1.0; // Multiplier for determining the stop loss distance input int ATR_Period = 14; // Period for ATR calculation // Global variables for storing values datetime lastUpdateTime = 0; double previousDayOpen, previousDayClose, previousDayHigh, previousDayLow; double previousDayVolume; double currentDayVolume; double support, resistance; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { lastUpdateTime = 0; // Set the initial update time return INIT_SUCCEEDED; } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0); // Clean up any drawn objects on the current chart } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { UpdateMetrics(); // Call to the function that fetches and displays the metrics } //+------------------------------------------------------------------+ //| Update metrics and display them | //+------------------------------------------------------------------+ void UpdateMetrics() { // Check if 2 hours have passed since the last update if(TimeCurrent() - lastUpdateTime >= 2 * 3600) { // Fetch previous day's data datetime prevDay = iTime(NULL, PERIOD_D1, 1); previousDayOpen = iOpen(NULL, PERIOD_D1, 1); previousDayClose = iClose(NULL, PERIOD_D1, 1); previousDayHigh = iHigh(NULL, PERIOD_D1, 1); previousDayLow = iLow(NULL, PERIOD_D1, 1); previousDayVolume = iVolume(NULL, PERIOD_D1, 1); // Fetch current day's volume currentDayVolume = iVolume(NULL, PERIOD_D1, 0); // Volume for today // Calculate support and resistance support = previousDayLow - (previousDayHigh - previousDayLow) * 0.382; // Fibonacci level resistance = previousDayHigh + (previousDayHigh - previousDayLow) * 0.382; // Fibonacci level // Determine market direction string marketDirection = AnalyzeMarketDirection(previousDayOpen, previousDayClose, previousDayHigh, previousDayLow); // Calculate possible lot size based on risk management double lotSize = CalculateLotSize(support, resistance); // Retrieve account metrics double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE); double accountEquity = AccountInfoDouble(ACCOUNT_EQUITY); // Calculate market spread manually double marketBid = SymbolInfoDouble(_Symbol, SYMBOL_BID); double marketAsk = SymbolInfoDouble(_Symbol, SYMBOL_ASK); double marketSpread = marketAsk - marketBid; // Calculate spread double minLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); double maxLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); // Calculate market volatility using ATR int atrHandle = iATR(NULL, PERIOD_H1, ATR_Period); // Get the ATR handle double atrValue = 0.0; if(atrHandle != INVALID_HANDLE) // Check if the handle is valid { double atrBuffer[]; // Array to hold the ATR values if(CopyBuffer(atrHandle, 0, 0, 1, atrBuffer) > 0) // Copy the latest ATR value { atrValue = atrBuffer[0]; // Retrieve the ATR value from the buffer } IndicatorRelease(atrHandle); // Release the indicator handle } // Create the output string including the last update time string lastUpdateStr = TimeToString(TimeCurrent(), TIME_DATE | TIME_MINUTES); string infoStr = StringFormat("Prev Day Open: %.2f\nPrev Day Close: %.2f\nPrev Day High: %.2f\nPrev Day Low: %.2f\n" "Prev Day Volume: %.0f\nCurrent Day Volume: %.0f\nMarket Direction: %s\n" "Support: %.2f\nResistance: %.2f\nAccount Balance: %.2f\nAccount Equity: %.2f\n" "Market Spread: %.2f\nMin Lot Size: %.2f, Max Lot Size: %.2f\n" "Market Volatility (ATR): %.2f\nLast Update Time: %s\nPossible Lot Size: %.2f", previousDayOpen, previousDayClose, previousDayHigh, previousDayLow, previousDayVolume, currentDayVolume, marketDirection, support, resistance, accountBalance, accountEquity, marketSpread, minLotSize, maxLotSize, atrValue, lastUpdateStr, lotSize); // Log the information Print(infoStr); // Display information on the chart Comment(infoStr); // Remove old trend lines and create new ones for previous day's high/low ObjectsDeleteAll(0); // Draw continuous trend lines DrawContinuousTrendLine("PrevDayHigh", previousDayHigh); DrawContinuousTrendLine("PrevDayLow", previousDayLow); // Update last update time lastUpdateTime = TimeCurrent(); } } //+------------------------------------------------------------------+ //| Analyze market direction | //+------------------------------------------------------------------+ string AnalyzeMarketDirection(double open, double close, double high, double low) { string direction; if(close > open) { direction = "Bullish"; } else if(close < open) { direction = "Bearish"; } else { direction = "Neutral"; } // Include current trends or patterns based on high and low for further analysis if(high > open && high > close) { direction += " with bullish pressure"; // Example addition for context } else if(low < open && low < close) { direction += " with bearish pressure"; // Example addition for context } return direction; } //+------------------------------------------------------------------+ //| Draw a continuous trend line to the left on the chart | //+------------------------------------------------------------------+ void DrawContinuousTrendLine(string name, double price) { datetime startTime = TimeCurrent() - 720 * 3600; // Extend 24 hours into the past ObjectCreate(0, name, OBJ_TREND, 0, startTime, price, TimeCurrent(), price); ObjectSetInteger(0, name, OBJPROP_COLOR, (StringFind(name, "High") >= 0) ? clrRed : clrBlue); ObjectSetInteger(0, name, OBJPROP_WIDTH, 2); // Set thickness of the line ObjectSetInteger(0, name, OBJPROP_XSIZE, 0); // Set this property to extend the line infinitely to the left } //+------------------------------------------------------------------+ //| Calculate the lot size based on risk management | //+------------------------------------------------------------------+ double CalculateLotSize(double support, double resistance) { double stopLossDistance = MathAbs((support - resistance) * StopLossMultiplier); double riskAmount = AccountInfoDouble(ACCOUNT_BALANCE) * (RiskPercentage / 100.0); // Get the tick size for the current symbol double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); // Calculate the lot size based on the stop loss and tick size double lotSize = riskAmount / (stopLossDistance / tickSize); // Adjusted for the correct pip size lotSize = NormalizeDouble(lotSize, 2); // Normalize the lot size to two decimal places // Ensure lot size is above minimum lot size allowed by broker double minLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); if(lotSize < minLotSize) lotSize = minLotSize; return lotSize; } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+
Разбор кода
1. Инициализация и свойства
input double RiskPercentage = 1.0; // Percentage of account balance to risk per trade input double StopLossMultiplier = 1.0; // Multiplier for determining the stop loss distance input int ATR_Period = 14; // Period for ATR calculation // Global variables for storing values datetime lastUpdateTime = 0; double previousDayOpen, previousDayClose, previousDayHigh, previousDayLow; double previousDayVolume; double currentDayVolume; double support, resistance;
Входные параметры позволяют пользователям настраивать поведение советника в соответствии со своими торговыми предпочтениями. Глобальные переменные объявлены для хранения исторических данных, включая цены открытия, закрытия, максимальные и минимальные цены предыдущего дня, а также объемы и уровни поддержки/сопротивления.
2. Функции OnInit и OnDeinit
int OnInit() { lastUpdateTime = 0; // Set the initial update time return INIT_SUCCEEDED; }
OnInit: Эта функция выполняется при инициализации советника. Обнуляет время последнего обновления.
void OnDeinit(const int reason) { ObjectsDeleteAll(0); // Clean up any drawn objects on the current chart }
OnDeinit: Эта функция вызывается при удалении или остановке советника, выполняя очистку путем удаления всех объектов графика.
3. Основная логика в OnTick
void OnTick() { UpdateMetrics(); // Call to the function that fetches and displays the metrics }
Эта функция срабатывает при каждом тике (изменении цены). Вызывает функцию UpdateMetrics для сбора и анализа данных.
4. Функция UpdateMetrics
void UpdateMetrics() { if (TimeCurrent() - lastUpdateTime >= 2 * 3600) // Check if 2 hours have passed since last update { // Fetch previous day's data datetime prevDay = iTime(NULL, PERIOD_D1, 1); previousDayOpen = iOpen(NULL, PERIOD_D1, 1); previousDayClose = iClose(NULL, PERIOD_D1, 1); previousDayHigh = iHigh(NULL, PERIOD_D1, 1); previousDayLow = iLow(NULL, PERIOD_D1, 1); previousDayVolume = iVolume(NULL, PERIOD_D1, 1); // Fetch current day's volume currentDayVolume = iVolume(NULL, PERIOD_D1, 0); // Volume for today // Calculate support and resistance support = previousDayLow - (previousDayHigh - previousDayLow) * 0.382; resistance = previousDayHigh + (previousDayHigh - previousDayLow) * 0.382; // Determine market direction string marketDirection = AnalyzeMarketDirection(previousDayOpen, previousDayClose, previousDayHigh, previousDayLow); // Calculate possible lot size based on risk management double lotSize = CalculateLotSize(support, resistance); // Retrieve account metrics double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE); double accountEquity = AccountInfoDouble(ACCOUNT_EQUITY); // Calculate market spread manually double marketBid = SymbolInfoDouble(_Symbol, SYMBOL_BID); double marketAsk = SymbolInfoDouble(_Symbol, SYMBOL_ASK); double marketSpread = marketAsk - marketBid; // Calculate market volatility using ATR int atrHandle = iATR(NULL, PERIOD_H1, ATR_Period); double atrValue = 0.0; if (atrHandle != INVALID_HANDLE) // Check if the handle is valid { double atrBuffer[]; if (CopyBuffer(atrHandle, 0, 0, 1, atrBuffer) > 0) { atrValue = atrBuffer[0]; } IndicatorRelease(atrHandle); // Release the indicator handle } // Create the output string including the last update time string lastUpdateStr = TimeToString(TimeCurrent(), TIME_DATE | TIME_MINUTES); string infoStr = StringFormat("Prev Day Open: %.2f\nPrev Day Close: %.2f\nPrev Day High: %.2f\nPrev Day Low: %.2f\n" "Prev Day Volume: %.0f\nCurrent Day Volume: %.0f\nMarket Direction: %s\n" "Support: %.2f\nResistance: %.2f\nAccount Balance: %.2f\nAccount Equity: %.2f\n" "Market Spread: %.2f\nMin Lot Size: %.2f, Max Lot Size: %.2f\n" "Market Volatility (ATR): %.2f\nLast Update Time: %s\nPossible Lot Size: %.2f", previousDayOpen, previousDayClose, previousDayHigh, previousDayLow, previousDayVolume, currentDayVolume, marketDirection, support, resistance, accountBalance, accountEquity, marketSpread, minLotSize, maxLotSize, atrValue, lastUpdateStr, lotSize); // Log the information Print(infoStr); // Display information on the chart Comment(infoStr); // Remove old trend lines and create new ones for previous day's high/low ObjectsDeleteAll(0); // Draw continuous trend lines DrawContinuousTrendLine("PrevDayHigh", previousDayHigh); DrawContinuousTrendLine("PrevDayLow", previousDayLow); // Update last update time lastUpdateTime = TimeCurrent(); } }
- Проверка времени - функция выполняется только если с момента последнего обновления прошло 2 часа, что позволяет минимизировать излишние вычисления.
- Извлечение данных - iTime, iOpen, iClose, iHigh, iLow и iVolume используются для сбора данных за последний и текущий день.
- Поддержка и сопротивление - скрипт рассчитывает уровни Фибоначчи на основе минимальных и максимальных цен предыдущего дня.
- Анализ направления рынка - вызывает функцию AnalyzeMarketDirection для оценки рыночных условий.
- Расчет размера лота - вызывает функцию CalculateLotSize для определения объема торговли на основе принципов управления рисками.
- Метрики счета и рынка - возвращает баланс счета, эквити и рыночный спред для принятия более обоснованных торговых решений.
- Расчет ATR - извлекает средний истинный диапазон (ATR) для измерения волатильности рынка.
- Выходные данные - форматирует и отображает соответствующие показатели в строке infoStr и регистрирует их с помощью Print.
- Создание линии тренда - очищает старые линии тренда и создает новые на основе максимальных и минимальных цен предыдущего дня.
5. Анализ направления рынка
string AnalyzeMarketDirection(double open, double close, double high, double low) { string direction; if (close > open) { direction = "Bullish"; } else if (close < open) { direction = "Bearish"; } else { direction = "Neutral"; } // Include current trends or patterns based on high and low for further analysis if (high > open && high > close) { direction += " with bullish pressure"; // Example addition for context } else if (low < open && low < close) { direction += " with bearish pressure"; // Example addition for context } return direction; }
- Определение направления рынка - эта функция использует цены открытия, закрытия, максимума и минимума предыдущего дня, чтобы определить, является ли рынок бычьим, медвежьим или нейтральным.
- Дополнительные сведения - проверяет индикаторы давления на основе максимумов и минимумов, обеспечивая более контекстный анализ рыночных условий.
6. Отрисовка линии тренда
void DrawContinuousTrendLine(string name, double price) { datetime startTime = TimeCurrent() - 24 * 3600; // Extend 24 hours into the past ObjectCreate(0, name, OBJ_TREND, 0, startTime, price, TimeCurrent(), price); ObjectSetInteger(0, name, OBJPROP_COLOR, (StringFind(name, "High") >= 0) ? clrRed : clrBlue); ObjectSetInteger(0, name, OBJPROP_WIDTH, 2); // Set thickness of the line ObjectSetInteger(0, name, OBJPROP_XSIZE, 0); // Set this property to extend the line infinitely to the left }
- Отрисовка линий тренда - функция создает линию тренда на графике для максимума или минимума предыдущего дня, продлевая ее на 24 часа назад.
- Настройка - каждая линия имеет цвет (красный для высокого, синий для низкого) и определенную ширину.
7. Расчет размера лота
double CalculateLotSize(double support, double resistance) { double stopLossDistance = MathAbs((support - resistance) * StopLossMultiplier); double riskAmount = AccountInfoDouble(ACCOUNT_BALANCE) * (RiskPercentage / 100.0); // Get the tick size for the current symbol double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); // Calculate the lot size based on the stop loss and tick size double lotSize = riskAmount / (stopLossDistance / tickSize); lotSize = NormalizeDouble(lotSize, 2); // Normalize the lot size to two decimal places // Ensure lot size is above minimum lot size allowed by broker double minLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); if (lotSize < minLotSize) lotSize = minLotSize; return lotSize; }
- Управление рисками - функция рассчитывает размер лота на основе заданного процента риска относительно баланса счета пользователя и рассчитанного расстояния стоп-лосса.
- Нормализация - гарантирует, что размер лота находится в приемлемых пределах, установленных брокером.
Реализация кода и тестирование
Реализация советника в MetaTrader 5: пошаговое руководство- Откройте MetaTrader 5: запустите торговую платформу MetaTrader 5 на своем компьютере.
- Войдите в MetaEditor: выберите "Сервис" > "Редактор MetaQuotes Language" или просто нажмите F4. Кроме того, если у вас отдельно установлен MetaEditor, вы можете запустить его напрямую.
- Добавьте советник: в MetaEditor выберите "Файл" > "Создать" > "Советник" или откройте существующий файл советника (.mq5). При создании нового советника следуйте подсказкам, чтобы назвать его и дать определение.
- Скомпилируйте советник: после редактирования кода советника нажмите "Компилировать" (или нажмите F7). Убедитесь в отсутствии ошибок; успешная компиляция приведет к созданию исполняемого файла.
- Загрузите советник в MetaTrader 5: вернитесь в платформу MetaTrader 5 и откройте панель "Навигатор" (Ctrl + N). Найдите скомпилированный вами советник в разделе "Советники".
- Прикрепите советник к графику: перетащите советник на нужный график или щелкните правой кнопкой мыши по советнику и выберите "Присоединить к графику". Появится окно настройки параметров.
- Включите автоматическую торговлю : Убедитесь, что функция AutoTrading включена, нажав зеленую кнопку AutoTrading на панели инструментов MetaTrader 5. При необходимости включите опцию "Разрешить автоматическую торговлю" в настройках советника.
- Отслеживайте производительность: следите за работой советника на графике. При необходимости используйте тестер стратегий для тестирования на истории.
- Если нужно, меняйте настройки: Вы можете изменять параметры или настройки непосредственно из окна настроек советника, щелкнув правой кнопкой мыши по графику.
Рис. 5. Результат анализа
Figure 5 illustrates the attachment of the EA to the chart, resulting in the outcomes displayed.
Рис. 6. Результат анализа
На рисунке 6 выше показана общая производительность нашего советника, который способен автоматически рассчитывать ключевые рыночные показатели и представлять их в виде графика. Советник рисует линии тренда на основе уровней поддержки и сопротивления предыдущего дня. Он регулярно обновляет рыночную информацию каждые два часа, как показано на последних двух графиках, на которых также отображаются временные метки последних обновлений.
Заключение
Подводя итог, можно сказать, что успешное развертывание советника Analytics Master знаменует собой значительный шаг вперед в области автоматизированной торговли. Советник не только автоматизирует анализ ключевых показателей рынка, но и предоставляет ценную информацию об уровнях поддержки и сопротивления, помогая трейдерам принимать более взвешенные решения. Благодаря интеграции эффективного управления рисками и предоставлению обновлений в реальном времени, советник помогает трейдерам уверенно ориентироваться в сложных рыночных условиях. В целом инструмент повышает эффективность торговли и позволяет пользователям оставаться в курсе событий и принимать проактивные решения в своих торговых стратегиях.
Уделите время тестированию советника на исторических данных, чтобы понять его эффективность в различных рыночных условиях. Это поможет вам точно настроить параметры в соответствии с вашим стилем торговли. Регулярно проверяйте показатели и информацию, предоставляемую советником. Рыночные условия могут быстро меняться, поэтому для принятия своевременных решений крайне важно оставаться в курсе событий. Всегда придерживайтесь своей стратегии управления рисками. Отрегулируйте настройки процентного значения риска в соответствии с вашей личной толерантностью к риску и размером счета. Дополните советник образовательными ресурсами по торговым стратегиям, поведению рынка и техническому анализу. Если у вас возникли проблемы или есть предложения по улучшению, пожалуйста, отправьте отзыв разработчику. Вклад пользователей бесценен для будущих улучшений.
Следуя этим рекомендациям, вы сможете максимально повысить эффективность советника Analytics Master и улучшить свою торговлю.
Дата | Название инструмента | Описание | Версия | Обновления | Примечания |
---|---|---|---|---|---|
01/10/24 | Chart Projector | Скрипт для наложения эффекта призрака на движение цены за предыдущий день. | 1.0 | Первоначальная версия | Первый инструмент в Lynnchris Tools Chest |
18/11/24 | Analytical Comment | Предоставляет информацию за предыдущий день в табличном формате, а также прогнозирует будущее направление рынка. | 1.0 | Первоначальная версия | Второй инструмент в Lynnchris Tools Chest |
27/11/24 | Analytics Master | Регулярное обновление рыночных показателей каждые два часа | 1.01 | Second Release | Третий инструмент в Lynnchris Tools Chest |
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/16434
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Данная статья написана пользователем сайта и отражает его личную точку зрения. Компания MetaQuotes Ltd не несет ответственности за достоверность представленной информации, а также за возможные последствия использования описанных решений, стратегий или рекомендаций.





- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте, Ifeanyichukwu Ikwecheghe,
Благодарим вас за положительный отзыв! Я рад слышать, что вы находите этот инструмент ценным.
Чтобы ответить на ваши вопросы:
1. Инструмент не открывает сделки за вас; вместо этого он предоставляет анализ и сигналы, которые вы можете использовать для принятия обоснованных торговых решений. Вы будете вручную заключать сделки, основываясь на его прогнозах.
2. Сигналы периодически обновляются, примерно каждые два часа, что позволяет вам адаптироваться к меняющимся рыночным условиям. Хотя они не отражают изменений в реальном времени в течение сессии, обновления помогут вам понять изменения настроений на рынке, будь то смена медвежьего настроения на бычье или наоборот.
Ваши мнения и дальнейшие предложения приветствуются для обсуждения.
Первые два инструмента являются независимыми:
Таким образом, второй не является обновленной версией первого. Настоящим продолжением является советник Analytics Master EA, который расширяет возможности Analytical Comment.
Этот скрипт/EA доступен только для MT5. Версии для MT4 не существует, так как MT4 снят с производства и больше не поддерживается, поэтому разработка имеет смысл только для MT5.