Разработка инструментария для анализа движения цен (Часть 11): Советник Heikin Ashi Signal
Введение
Математические формулы служат краеугольным камнем анализа ценового движения, предоставляя объективный метод расшифровки рыночных данных и принятия торговых решений. Например, на южноафриканском рынке Форекс трейдер, оценивающий пару ZARUSD, может использовать 50-дневную простую скользящую среднюю для обнаружения разворотов тренда, одновременно применяя стандартное отклонение для оценки волатильности рынка и подтверждения потенциальных прорывов. Использование формул для определения размера позиции и управления рисками, таких как расчет размера сделки на основе установленного процента риска и расстояния стоп-лосса, позволяет трейдеру эффективно управлять рисками и устанавливать четкие цели прибыли с помощью таких инструментов, как уровни коррекции Фибоначчи.
В этой статье мы представим метод Heikin Ashi для расчета разворота тренда, представляющий собой еще один уровень нашей комплексной стратегии, которая сочетает количественный анализ с классическими методами ценового действия. Одним из существенных преимуществ Heikin Ashi является его способность отфильтровывать рыночный шум, что позволяет трейдерам сосредоточиться на основной тенденции, не отвлекаясь на незначительные колебания цен. Такой подход сглаживает колебания рынка и обеспечивает принятие решений на основе данных, предоставляя четкую структуру, применимую к различным финансовым рынкам по всему миру.
Начнем с определения понятия Heikin Ashi и изучения его происхождения. Затем, без лишних отступлений, мы перейдем непосредственно к стратегии, чтобы вы могли понять, как именно она работает. Мы также рассмотрим другие ключевые функции, предоставим полный код и, наконец, рассмотрим результаты, прежде чем завершить статью. Теперь давайте взглянем на содержание.
Heikin Ashi
Методика Heikin Ashi была разработана Мунэхисой Хоммой, японским торговцем рисом, жившим в XVIII веке, которого также считают пионером в области построения графиков японских свечей — основополагающего инструмента технического анализа. Индикатор Heikin Ashi был разработан в Японии, чтобы помочь трейдерам получить более четкое представление о рыночных тенденциях, сосредоточившись на среднем движении цены, а не на отдельных свечных паттернах. В переводе с японского Heikin означает "средний" или "баланс", в то время как Ashi означает "столбец" или "свеча". Это название отражает основной принцип графиков Heikin Ashi — сглаживание ценовых данных для получения более сбалансированного и менее волатильного представления о рыночных движениях. Рисунок ниже иллюстрирует, как традиционный график свечей преобразуется в более сглаженный график Heikin Ashi.

Рис 1. Сглаженный график
В таблице ниже сравниваются традиционный свечной график и Heikin Ashi.
| Свойство | Традиционные свечи | Свечи Heikin Ashi |
|---|---|---|
| Основа расчета | Использует фактические цены открытия, максимума, минимума и закрытия. | Использует модифицированную формулу усреднения данных о ценах. |
| Отображение волатильности | Показывает реальные колебания цен и разрывы. | Сглаживает движение цен, уменьшая шум. |
| Четкость тренда | Может быть изменчивым, с чередованием красных и зеленых свечей даже в трендах. | Обеспечивает более плавные переходы цвета с меньшим количеством изменений. |
| Видимость разрывов | Показывает ценовые разрывы между свечами. | Редко показывает разрывы из-за формулы усреднения. |
| Сигналы разворота | Демонстрирует быстрые развороты и тени. | Развороты отображаются медленнее, но являются более сильными, если подтверждаются. |
| Представление цен | Отражает реальные рыночные цены. | Усредненные цены, то есть последняя цена не соответствует реальной рыночной цене. |
Стратегия
Данная стратегия построена вокруг четырех основных функций советника MQL5: расчета Heikin Ashi, подтверждения тренда, идентификации сигнала разворота и подтверждения сигнала с помощью RSI. Давайте подробно рассмотрим каждую из них ниже.
Расчет Heikin Ashi
Графики Heikin Ashi строятся с использованием четырех ключевых точек данных: цены открытия, максимума, минимума и закрытия для каждого периода. Эти значения обрабатываются для создания свечей Heikin Ashi, которые отличаются от традиционных свечей. Вместо того чтобы отражать сырое ценовое движение, свечи Heikin Ashi используют расчеты усредненных цен, объединяя цены открытия и закрытия, а также максимальные и минимальные цены, чтобы создать более гибкое представление рыночных тенденций.
Этот сглаживающий эффект минимизирует влияние резких колебаний цен, снижая рыночный шум и облегчая выявление трендов. В результате свечи Heikin Ashi часто имеют меньшее тело и более длинные тени, что подчёркивает рыночный импульс и отфильтровывает краткосрочную волатильность. Для реализации стратегии Heikin Ashi следующая блок-схема демонстрирует, как традиционные данные свечей преобразуются в плавный, ориентированный на тренд график Heikin Ashi. Этот процесс отфильтровывает рыночный шум и обеспечивает более четкое представление о преобладающей тенденции. Ниже приведено пошаговое описание того, как это работает:

Рис 2. Блок-схема
На блок-схеме показано, как традиционные данные OHLC преобразуются в свечи Heiken Ashi. Процесс начинается с необработанных рыночных данных, которые затем сглаживаются путем расчета среднего значения цены закрытия (haClose). Цена открытия (haOpen) определяется с использованием значений предыдущей свечи для создания непрерывности, в то время как haHigh и haLow позволяют убедиться, что свеча отражает весь диапазон движения цен. В результате получается свеча, которая снижает краткосрочную волатильность, делая общие тенденции более заметными. Ниже представлен фрагмент кода MQL5 для функции расчета свечей Heikin Ashi.
void CalculateHeikinAshi() { MqlRates rates[]; int copied = CopyRates(_Symbol, _Period, 0, Bars(_Symbol, _Period), rates); if(copied < TrendCandles + 2) { Print("Failed to copy rates. Copied: ", copied); return; } ArraySetAsSeries(rates, true); // Resize arrays to match the number of copied bars ArrayResize(haClose, copied); ArrayResize(haOpen, copied); ArrayResize(haHigh, copied); ArrayResize(haLow, copied); // Calculate Heikin-Ashi values for each bar for(int i = copied - 1; i >= 0; i--) { haClose[i] = (rates[i].open + rates[i].high + rates[i].low + rates[i].close) / 4.0; haOpen[i] = (i == copied - 1) ? (rates[i].open + rates[i].close) / 2.0 : (haOpen[i + 1] + haClose[i + 1]) / 2.0; haHigh[i] = MathMax(rates[i].high, MathMax(haOpen[i], haClose[i])); haLow[i] = MathMin(rates[i].low, MathMin(haOpen[i], haClose[i])); } Print("Heikin-Ashi Calculation Complete"); }
Результатом является серия свечей Heiken Ashi, которые отфильтровывают большую часть рыночного шума, позволяя базовому тренду стать более очевидным.
Подтверждение тренда
Прежде чем попытаться идентифицировать какие-либо сигналы разворота, советник выполняет подтверждение тренда, чтобы убедиться в наличии сильного направленного движения. Это предполагает анализ определенного количества последовательных свечей Heiken Ashi. При бычьем тренде советник проверяет, что значение haClose каждой свечи выше, чем у последующей свечи, тогда как при медвежьем тренде он проверяет, что значения haClose последовательно ниже. Количество свечей, необходимое для подтверждения тренда, контролируется входными параметрами, что гарантирует рассмотрение только устоявшихся трендов. Эта строгая проверка сводит к минимуму риск ложных сигналов, подтверждая, что рынок решительно движется в тренде, прежде чем переходить к обнаружению разворота.
int consecutive = 0; for(int i = 2; i <= TrendCandles + 1; i++) { if((haClose[i] > haClose[i + 1] && isBullish) || (haClose[i] < haClose[i + 1] && !isBullish)) consecutive++; else break; } if(consecutive < ConsecutiveCandles) return false;
Этот шаг гарантирует, что сигнал будет рассматриваться только тогда, когда есть веские доказательства продолжающегося тренда, что снижает вероятность ложных сигналов из-за случайных колебаний рынка.
Обнаружение сигнала разворота
После подтверждения установившегося тренда советник приступает к выявлению потенциальных сигналов разворота, внимательно изучая структуру следующей свечи Heikin Ashi. На этом этапе советник рассчитывает тело свечи как абсолютную разницу между haClose и haOpen и измеряет тень в зависимости от интересующего направления, уделяя особое внимание нижней тени для бычьего разворота и верхней тени для медвежьего разворота. Ключевым условием является то, что соотношение тени и тела должно превышать заданный порог. Такое высокое соотношение тени и тела свидетельствует о том, что рынок решительно отверг преобладающую тенденцию, о чем свидетельствует длинная тень по отношению к небольшому телу. Такой паттерн служит надежным индикатором того, что может начаться разворот.
// Check for a strong reversal candlestick double body = MathAbs(haClose[1] - haOpen[1]); double shadow = (direction > 0) ? MathAbs(haLow[1] - haOpen[1]) : MathAbs(haHigh[1] - haOpen[1]); // Avoid division by zero and confirm shadow-to-body ratio if(body == 0.0 || (shadow / body) < ShadowToBodyRatio) return false;
Этот шаг отфильтровывает слабые или неоднозначные сигналы, требуя наличия ярко выраженной характеристики разворота в структуре свечи, прежде чем продолжить.
Подтверждение сигнала с помощью RSI
Последний шаг стратегии включает подтверждение сигнала разворота с помощью индекса относительной силы (RSI), что добавляет дополнительный уровень проверки. Как только с помощью критериев Heikin Ashi определяется потенциальный разворот, советник извлекает последнее значение RSI для оценки рыночного импульса. Для сигнала бычьего разворота RSI должен быть ниже заданного порога покупки, что указывает на перепроданность актива; и наоборот, для медвежьего разворота RSI должен превышать заданный порог продажи, что указывает на перекупленность актива. Только когда выполняются как паттерн Heikin Ashi, так и условие RSI, советник генерирует торговый сигнал, например, рисуя на графике стрелку покупки или продажи. Такой подход с двойным подтверждением помогает сократить количество ложных сигналов, гарантируя, что сделки будут совершаться только тогда, когда несколько индикаторов подтверждают разворот рынка.
// Get RSI Value double rsiValue; if(!GetRSIValue(rsiValue)) { Print("Failed to retrieve RSI value."); return; } // Detect potential reversals with RSI confirmation if(DetectReversal(true) && rsiValue < RSI_Buy_Threshold) // Bullish reversal with RSI confirmation { DrawArrow("BuyArrow", iTime(NULL, 0, 0), SymbolInfoDouble(_Symbol, SYMBOL_BID), 233, BuyArrowColor); Print("Bullish Reversal Detected - RSI:", rsiValue); } else if(DetectReversal(false) && rsiValue > RSI_Sell_Threshold) // Bearish reversal with RSI confirmation { DrawArrow("SellArrow", iTime(NULL, 0, 0), SymbolInfoDouble(_Symbol, SYMBOL_ASK), 234, SellArrowColor); Print("Bearish Reversal Detected - RSI:", rsiValue); }
Подтверждение RSI добавляет уровень анализа импульса. Объединяя ценовое действие через (Heikin Ashi) с импульсом через (RSI), советник повышает надежность сигналов, гарантируя, что сделки открываются только при совпадении показаний нескольких индикаторов.
Прочие функции
Входные параметры
Прежде чем углубляться в основную логику, нам необходимо определить набор входных параметров, которые позволят нам точно настроить поведение советника. Эти параметры позволяют нам контролировать правила подтверждения тренда, условия разворота, пороговые значения объема, настройки RSI и визуализацию сигналов — и все это без изменения кода.
input int TrendCandles = 3; // Number of candles for trend detection input double ShadowToBodyRatio = 1.5; // Shadow-to-body ratio for reversal detection input int ConsecutiveCandles = 2; // Consecutive candles to confirm trend input int RSI_Period = 14; // RSI Period input double RSI_Buy_Threshold = 34.0; // RSI level for buy confirmation input double RSI_Sell_Threshold = 65.0; // RSI level for sell confirmation input color BuyArrowColor = clrGreen; // Buy signal color input color SellArrowColor = clrRed; // Sell signal color
Эти параметры дают нам контроль над ключевыми аспектами стратегии. TrendCandles определяет, сколько свечей Heikin Ashi необходимо учитывать при определении трендов. ShadowToBodyRatio гарантирует, что мы рассматриваем только сильные разворотные свечи. ConsecutiveCandles отфильтровывает слабые тренды, требуя как минимум двух свечей для подтверждения направления. RSI_Buy_Threshold и RSI_Sell_Threshold добавляют еще один уровень подтверждения с помощью RSI. BuyArrowColor и SellArrowColor позволяют нам настраивать отображение сигналов на графике.
Глобальные переменные
Чтобы обеспечить эффективность наших вычислений, мы объявляем глобальные массивы для хранения значений Heikin Ashi, а также хэндл индикатора RSI.
double haClose[], haOpen[], haHigh[], haLow[]; int rsiHandle;
Мы используем эти переменные для хранения вычисленных значений Heikin Ashi и динамического извлечения показаний RSI в нашем советнике.
Инициализация (OnInit)
Когда мы прикрепляем советник к графику, сначала запускается функция OnInit(). Она настраивает массивы Heikin Ashi и инициализирует индикатор RSI.
int OnInit() { ArraySetAsSeries(haClose, true); ArraySetAsSeries(haOpen, true); ArraySetAsSeries(haHigh, true); ArraySetAsSeries(haLow, true); if(Bars(_Symbol, _Period) < TrendCandles + 2) { Print("Not enough bars for initialization."); return INIT_FAILED; } rsiHandle = iRSI(_Symbol, _Period, RSI_Period, PRICE_CLOSE); if(rsiHandle == INVALID_HANDLE) { Print("Failed to create RSI indicator."); return INIT_FAILED; } Print("EA Initialized Successfully"); return INIT_SUCCEEDED; }
Здесь мы устанавливаем наши массивы в обратном порядке, поэтому последняя свеча всегда имеет индекс 0. Перед выполнением расчетов мы проверяем наличие достаточного количества баров. Мы инициализируем индикатор RSI и обрабатываем любые ошибки в случае его сбоя. Если все настроено правильно, советник выводит сообщение с подтверждением и начинает работу.
Обработка тиков (OnTick)
Эта функция выполняется при каждом новом ценовом тике, гарантируя непрерывный анализ рынка и выявление потенциальных торговых сигналов.
void OnTick() { if(Bars(_Symbol, _Period) < TrendCandles + 2) { Print("Not enough bars for tick processing."); return; } CalculateHeikinAshi(); double rsiValue; if(!GetRSIValue(rsiValue)) { Print("Failed to retrieve RSI value."); return; } if(DetectReversal(true) && rsiValue < RSI_Buy_Threshold) { DrawArrow("BuyArrow", iTime(NULL, 0, 0), SymbolInfoDouble(_Symbol, SYMBOL_BID), 233, BuyArrowColor); Print("Bullish Reversal Detected - RSI:", rsiValue); } else if(DetectReversal(false) && rsiValue > RSI_Sell_Threshold) { DrawArrow("SellArrow", iTime(NULL, 0, 0), SymbolInfoDouble(_Symbol, SYMBOL_ASK), 234, SellArrowColor); Print("Bearish Reversal Detected - RSI:", rsiValue); } }
Мы генерируем уникальное имя для каждой стрелки на основе временной метки сигнала. Если найдена существующая стрелка с таким же именем, мы удаляем ее, чтобы не загромождать страницу. Затем мы создаем новый объект стрелки и задаем его свойства (цвет, размер и тип). В случае успеха мы выводим сообщение, подтверждающее размещение стрелки.
Очистка при деинициализации (OnDeinit)
При удалении советника с графика нам необходимо освободить ресурсы индикатора, чтобы избежать проблем с памятью.
void OnDeinit(const int reason) { if(rsiHandle != INVALID_HANDLE) IndicatorRelease(rsiHandle); }
Эта функция обеспечивает корректное удаление индикатора RSI при остановке работы советника.
Код MQL5
//+------------------------------------------------------------------+
//| Heikin Ashi Signal EA.mq5 |
//| Copyright 2025, Christian Benjamin. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, Christian Benjamin."
#property link "https://www.mql5.com/en/users/lynnchris"
#property version "1.00"
#property strict
//--- Input parameters
input int TrendCandles = 3; // Number of candles for trend detection
input double ShadowToBodyRatio = 1.5; // Shadow-to-body ratio for reversal detection
input int ConsecutiveCandles = 2; // Consecutive candles to confirm trend
input int RSI_Period = 14; // RSI Period
input double RSI_Buy_Threshold = 34.0; // RSI level for buy confirmation
input double RSI_Sell_Threshold = 65.0; // RSI level for sell confirmation
input color BuyArrowColor = clrGreen; // Buy signal color
input color SellArrowColor = clrRed; // Sell signal color
//--- Global variables
double haClose[], haOpen[], haHigh[], haLow[];
int rsiHandle;
//+------------------------------------------------------------------+
//| Expert initialization |
//+------------------------------------------------------------------+
int OnInit()
{
ArraySetAsSeries(haClose, true);
ArraySetAsSeries(haOpen, true);
ArraySetAsSeries(haHigh, true);
ArraySetAsSeries(haLow, true);
if(Bars(_Symbol, _Period) < TrendCandles + 2)
{
Print("Not enough bars for initialization.");
return INIT_FAILED;
}
// Initialize RSI indicator
rsiHandle = iRSI(_Symbol, _Period, RSI_Period, PRICE_CLOSE);
if(rsiHandle == INVALID_HANDLE)
{
Print("Failed to create RSI indicator.");
return INIT_FAILED;
}
Print("EA Initialized Successfully");
return INIT_SUCCEEDED;
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(Bars(_Symbol, _Period) < TrendCandles + 2)
{
Print("Not enough bars for tick processing.");
return;
}
// Calculate Heikin-Ashi
CalculateHeikinAshi();
// Get RSI Value
double rsiValue;
if(!GetRSIValue(rsiValue))
{
Print("Failed to retrieve RSI value.");
return;
}
// Detect potential reversals with RSI confirmation
if(DetectReversal(true) && rsiValue < RSI_Buy_Threshold) // Bullish reversal with RSI confirmation
{
DrawArrow("BuyArrow", iTime(NULL, 0, 0), SymbolInfoDouble(_Symbol, SYMBOL_BID), 233, BuyArrowColor);
Print("Bullish Reversal Detected - RSI:", rsiValue);
}
else
if(DetectReversal(false) && rsiValue > RSI_Sell_Threshold) // Bearish reversal with RSI confirmation
{
DrawArrow("SellArrow", iTime(NULL, 0, 0), SymbolInfoDouble(_Symbol, SYMBOL_ASK), 234, SellArrowColor);
Print("Bearish Reversal Detected - RSI:", rsiValue);
}
}
//+------------------------------------------------------------------+
//| Calculate Heikin-Ashi |
//+------------------------------------------------------------------+
void CalculateHeikinAshi()
{
MqlRates rates[];
int copied = CopyRates(_Symbol, _Period, 0, Bars(_Symbol, _Period), rates);
if(copied < TrendCandles + 2)
{
Print("Failed to copy rates. Copied: ", copied);
return;
}
ArraySetAsSeries(rates, true);
// Resize arrays to match the number of copied bars
ArrayResize(haClose, copied);
ArrayResize(haOpen, copied);
ArrayResize(haHigh, copied);
ArrayResize(haLow, copied);
// Calculate Heikin-Ashi
for(int i = copied - 1; i >= 0; i--)
{
haClose[i] = (rates[i].open + rates[i].high + rates[i].low + rates[i].close) / 4.0;
haOpen[i] = (i == copied - 1) ? (rates[i].open + rates[i].close) / 2.0 : (haOpen[i + 1] + haClose[i + 1]) / 2.0;
haHigh[i] = MathMax(rates[i].high, MathMax(haOpen[i], haClose[i]));
haLow[i] = MathMin(rates[i].low, MathMin(haOpen[i], haClose[i]));
}
Print("Heikin-Ashi Calculation Complete");
}
//+------------------------------------------------------------------+
//| Detect Reversals with Trend Confirmation |
//+------------------------------------------------------------------+
bool DetectReversal(bool isBullish)
{
int direction = isBullish ? 1 : -1;
// Confirm trend location: Check for consecutive candles in the same direction
int consecutive = 0;
for(int i = 2; i <= TrendCandles + 1; i++)
{
if((haClose[i] > haClose[i + 1] && isBullish) || (haClose[i] < haClose[i + 1] && !isBullish))
consecutive++;
else
break;
}
if(consecutive < ConsecutiveCandles)
return false;
// Check for a strong reversal candlestick
double body = MathAbs(haClose[1] - haOpen[1]);
double shadow = (direction > 0) ? MathAbs(haLow[1] - haOpen[1]) : MathAbs(haHigh[1] - haOpen[1]);
// Avoid division by zero and confirm shadow-to-body ratio
if(body == 0.0 || (shadow / body) < ShadowToBodyRatio)
return false;
// Confirm the reversal with the next candlestick (opposite direction)
return ((haClose[0] - haOpen[0]) * direction < 0);
}
//+------------------------------------------------------------------+
//| Get RSI Value |
//+------------------------------------------------------------------+
bool GetRSIValue(double &rsiValue)
{
double rsiBuffer[];
if(CopyBuffer(rsiHandle, 0, 0, 1, rsiBuffer) > 0)
{
rsiValue = rsiBuffer[0];
return true;
}
return false;
}
//+------------------------------------------------------------------+
//| Draw Arrow |
//+------------------------------------------------------------------+
void DrawArrow(string name, datetime time, double price, int code, color clr)
{
name += "_" + IntegerToString(time);
if(ObjectFind(0, name) != -1)
ObjectDelete(0, name);
if(ObjectCreate(0, name, OBJ_ARROW, 0, time, price))
{
ObjectSetInteger(0, name, OBJPROP_ARROWCODE, code);
ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
ObjectSetInteger(0, name, OBJPROP_WIDTH, 2);
Print("Arrow Drawn: ", name, " at ", price);
}
else
{
Print("Failed to create arrow: ", GetLastError());
}
}
//+------------------------------------------------------------------+
//| Expert deinitialization |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
if(rsiHandle != INVALID_HANDLE)
IndicatorRelease(rsiHandle);
}
//+------------------------------------------------------------------+
Результаты
Я использовал тестирование как на истории, так и на реальном рынке для оценки производительности советника.- Тестирование на истории
Я запустил советник на исторических данных, чтобы проверить его базовую жизнеспособность и выявить его сильные и слабые стороны. Этот этап подтверждает, что подход работает в известных рыночных условиях, хотя он не может полностью воспроизвести реальные факторы, такие как проскальзывание или переменные спреды. Давайте посмотрим на GIF-изображение ниже.

Рис. 3. Тестирование индекса V100 на истории
Ниже я представил дополнительные результаты тестирования на истории для трех различных пар за период 27 дней, чтобы оценить точность сигналов. Сигнал считался успешным, если после подтверждения рынок менял направление.
- EURUSD
| Сигнал | Итого | True | Точность в % |
|---|---|---|---|
| Покупка | 20 | 17 | 85% |
| Продажа | 10 | 8 | 80% |
- Индекс Crash 900
| Сигнал | Итого | True | Точность в % |
|---|---|---|---|
| Покупка | 18 | 14 | 77,8% |
| Продажа | 25 | 15 | 60% |
- Индекс Step
| Сигнал | Итого | True | Точность в % |
|---|---|---|---|
| Покупка | 18 | 15 | 83,3% |
| Продажа | 22 | 14 | 63,6% |
Советник доказал свою высокую эффективность, достигнув минимальной точности 77,8% для сигналов на покупку и минимальной точности 60% для сигналов на продажу по всем протестированным парам.
- Тестирование на реальном рынке

Рис 4. Тестирование индекса V25 в реальных условиях
Ключевой вывод
Тестирование на истории подтверждает стратегию в теории, а тестирование на практике демонстрирует ее практическую эффективность. Оба этапа имеют решающее значение для совершенствования советника и обеспечения его достаточной надежности для реальной торговли.
Заключение
Метод Heikin Ashi особенно эффективен для фильтрации рыночных колебаний. Я также нашел его полезным для определения точек разворота рынка. Протестировав его, как и любой другой инструмент, я обнаружил, что он работает более эффективно при использовании в сочетании с другими стратегиями. Важно экспериментировать с входными данными кода и тестировать их на демо-счете или на истории, добиваясь наилучшей производительности в соответствии со своими предпочтениями. Буду рад вашим предложениям.
| Дата | Название инструмента | Описание | Версия | Обновления | Примечания |
|---|---|---|---|---|---|
| 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 | Вторая версия | Третий инструмент в Lynnchris Tools Chest |
| 02/12/24 | Analytics Forecaster | Регулярное обновление рыночных показателей каждые два часа с интеграцией с Telegram | 1.1 | Третья версия | Инструмент номер 4 |
| 09/12/24 | Volatility Navigator | Советник анализирует рыночные условия с помощью полос Боллинджера, RSI и ATR. | 1.0 | Первоначальная версия | Инструмент номер 5 |
| 19/12/24 | Mean Reversion Signal Reaper | Анализирует рынок и генерирует сигналы, используя стратегию возврата к среднему | 1.0 | Первоначальная версия | Инструмент номер 6 |
| 9/01/25 | Signal Pulse | Анализирует несколько таймфреймов | 1.0 | Первоначальная версия | Инструмент номер 7 |
| 17/01/25 | Metrics Board | Панель с кнопками для анализа | 1.0 | Первоначальная версия | Инструмент номер 8 |
| 21/01/25 | External Flow | Аналитика с помощью внешних библиотек | 1.0 | Первоначальная версия | Инструмент номер 9 |
| 27/01/25 | VWAP | Взвешенная по объему средняя цена | 1.3 | Первоначальная версия | Инструмент номер 10 |
| 02/02/25 | Heikin Ashi Signal EA | Сглаживание тренда и обнаружение сигналов разворота | 1.0 | Первоначальная версия | Инструмент номер 11 |
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/17021
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Данная статья написана пользователем сайта и отражает его личную точку зрения. Компания MetaQuotes Ltd не несет ответственности за достоверность представленной информации, а также за возможные последствия использования описанных решений, стратегий или рекомендаций.
Нейросети в трейдинге: Спайково-семантический подход к пространственно-временной идентификации (Окончание)
От начального до среднего уровня: Struct (V)
Алгоритм искусственной коронарной циркуляции — Artificial Coronary Circulation System (ACCS)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования