English 中文 Deutsch 日本語
preview
Возвратные стратегии дневной торговли RSI2 Ларри Коннорса

Возвратные стратегии дневной торговли RSI2 Ларри Коннорса

MetaTrader 5Примеры |
804 0
Zhuo Kai Chen
Zhuo Kai Chen

Введение

Ларри Коннорс — известный трейдер и автор книг, наиболее известный своими работами в области количественной (алгоритмизированной) торговли и таких стратегий, как 2-периодный индекс относительной силы RSI (RSI2), помогающих определять краткосрочные состояния перекупленности и перепроданности рынка. В этой статье объясним сначала актуальность нашего исследования, затем воссоздадим три самые известные стратегии Коннорса на языке MQL5 и применим их к внутридневной торговле на индексе CFD S&P 500. Затем проанализируем результаты работы каждой стратегии и познакомимся с концепцией построения модельных систем в трейдинге. Наконец, мы представим предложения по дальнейшему совершенствованию этих стратегий.


Мотивирующие соображения

Ларри Коннорс на протяжении своей карьеры разработал множество количественных стратегий розничной торговли и зафиксировал результаты собственных исследований на своем сайте. Большинство из его стратегий используются в тестировании и торговле на фондовом рынке США с применением дневных таймфреймов, а расширенные тесты на исторических данных подтверждают их прибыльность. Однако немногие трейдеры адаптировали его идеи к более низким таймфреймам для внутридневной торговли. 

Этот подход рассматривается в данной статье посредством кодирования трех самых известных стратегий Коннорса на языке MQL5 и их тестирования на CFD US500 с использованием 30-минунтного таймфрейма. Цель — определить, могут ли его концепции возврата к среднему значению иметь ценность в более высокочастотном трейдинге, когда шум увеличивается, но торговые возможности и размеры выборки расширяются. Мы выбрали индекс CFD US500, чтобы отобразить волатильность фондового рынка США, поскольку Коннорс изначально разрабатывал свои стратегии для акций. 30-минутный таймфрейм обеспечивает баланс, снижая избыточный шум и обеспечивая достаточную торговую активность. Тестирование на исторических данных будет охватывать прошлый год, чтобы обеспечивать актуальность данных.  

Расчет RSI осуществляется следующим образом:

Расчет RSI

Индекс RSI измеряет количество восходящих и нисходящих баров за определенный период и использует метод сглаживания, такой как скользящая средняя, для указания относительной силы движения рынка. Более короткий период придает индексу RSI больше чувствительности, но и повышает его подверженность шуму. Коннор использует эту высокую чувствительность, применяя 2-периодный RSI для определения краткосрочных состояний перепроданности или перекупленности, которые служат сигналами для сделок по возврату к среднему значению в соответствии с общим трендом.  

От традиционных возвратных стратегий, таких как полосы Боллинджера, этот подход отличается по нескольким ключевым параметрам:

  • RSI2 проще и быстрее, скорее реагирует на кратковременные развороты, чем многоэтапный расчет полос Боллинджера.
  • RSI2 предлагает четкие уровни перекупленности (выше 90) и перепроданности (ниже 10) в отличие от менее точных сигналов касания, которые выдают полосы Боллинджера.
  • RSI2 игнорирует ценовой диапазон и особенности тренда, а полосы Боллинджера визуально фиксируют изменения тренда и волатильности.

В целом этот подход в большей степени концентрируется на улавливании мгновенных откатов, чем на экстремальных отклонениях цены.


Стратегия первая — классическая стратегия RSI2 Коннорса (Connors RSI2 Classic)

Классическая стратегия RSI2 Коннорса работает по принципу возврата к среднему значению, извлекая выгоду из временных откатов в рамках устоявшихся трендов. Интуиция подсказывает, что даже активы с ярко выраженным трендом подвержены краткосрочным спадам в связи с фиксацией прибыли или из-за рыночного шума. Мы собираемся использовать 2-периодный индекс RSI для выявления экстремальных условий перепроданности и (или) перекупленности (ниже 5 / выше 95) всего по двум 30-минутным барам и подачи сигналов о потенциальных возможностях отскока. Используем скользящую среднюю для согласования с более обширным трендом, увеличивая вероятность того, что откаты являются временными, а не представляют собой развороты тренда.  

Эта продуманная стратегия подробно описана в работе «Краткосрочные торговые стратегии, которые работают» (2008) и была в свое время тщательно протестирована Коннорсом и его партнером по исследованиям Сезаром Альваресом. Нам хотелось бы увидеть, сохранится ли преимущество спустя годы. 

Правила использования сигналов:

  • Покупайте, когда: RSI2 < 5, последняя цена закрытия > 200-периодной скользящей средней и нет текущих позиций.
  • Продавайте, когда: RSI2 > 95, последняя цена закрытия < 200-периодной скользящей средней и нет текущих позиций.
  • Выходите из покупки, когда: последняя цена закрытия > 5-периодной скользящей средней или последняя цена закрытия < 200-периодной скользящей средней.
  • Выходите из продажи, когда: последняя цена закрытия < 5-периодной скользящей средней или последняя цена закрытия > 200-периодной скользящей средней.
  • Расстояние стоп-лосса составляет 0.15% от текущей цены.

MQL5-код:

//US500 M30
#include <Trade/Trade.mqh>
CTrade trade;

input int Magic = 0;
input double lot = 0.1;

int barsTotal = 0;
int handleMa;
int handleMaFast;
int handleRsi;
const int Max = 5;
const int Min = 95;
const int MaPeriods = 200;
const int MaPeriodsFast = 5;
const double slp = 0.0015;

int OnInit()
  {
   trade.SetExpertMagicNumber(Magic);
   handleMa =iMA(_Symbol,PERIOD_CURRENT,MaPeriods,0,MODE_SMA,PRICE_CLOSE);
   handleMaFast = iMA(_Symbol,PERIOD_CURRENT,MaPeriodsFast,0,MODE_SMA,PRICE_CLOSE);
   handleRsi = iRSI(_Symbol,PERIOD_CURRENT,2,PRICE_CLOSE);
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
  }  

void OnTick()
  {
  int bars = iBars(_Symbol,PERIOD_CURRENT);
  
  if (barsTotal!= bars){
     barsTotal = bars;
     bool NotInPosition = true;
     double ma[];
     double ma_fast[];
     double rsi[];
     CopyBuffer(handleMa,BASE_LINE,1,1,ma);
     CopyBuffer(handleMaFast,BASE_LINE,1,1,ma_fast);
     CopyBuffer(handleRsi,0,1,1,rsi);
     double lastClose = iClose(_Symbol, PERIOD_CURRENT, 1);
     for(int i = PositionsTotal()-1; i>=0; i--){
         ulong pos = PositionGetTicket(i);
         string symboll = PositionGetSymbol(i);
         if(PositionGetInteger(POSITION_MAGIC) == Magic&&symboll== _Symbol){
            NotInPosition = false;
            if((PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY&&(lastClose>ma_fast[0]||lastClose<ma[0]))
            ||(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL&&(lastClose<ma_fast[0]||lastClose>ma[0])))trade.PositionClose(pos);  
            }}
     if(rsi[0]<Max&&NotInPosition&&lastClose>ma[0])executeBuy();
     if(rsi[0]>Min&&NotInPosition&&lastClose<ma[0])executeSell();
    }
 }

void executeSell() {      
       double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
       bid = NormalizeDouble(bid,_Digits);
       double sl = bid*(1+slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Sell(lot,_Symbol,bid,sl);    
}
    
void executeBuy() {
       double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
       ask = NormalizeDouble(ask,_Digits);
       double sl = ask*(1-slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Buy(lot,_Symbol,ask,sl);
}

Типичная сделка будет выглядеть примерно так:

Демо-версия RSI2 V1

Ниже представлены результаты тестирования на истории для US500 (M30) с 1 января 2024 года по 1 марта 2025 года.

Настройки RSI2 V1

параметры

Кривая капитала RSI2 V1

Результат RSI2 V1

Частота сделок здесь довольно высока по сравнению с другими стратегиями дневной торговли, составляя в среднем около 1–2 сделок в день, если считать, что в году 252 торговых дня. Вероятно, это происходит из-за того, что индекс RSI2 сверхреактивен и часто выдает сигналы даже при экстремальных условиях входа. Средняя прибыль примерно соответствует среднему убытку, что является хорошим показателем для возвратной стратегии, где процент выигрышей обычно превосходит 50%. Несмотря на полную симметричность правил торговли, существует разрыв между процентным количеством выигрышных коротких и длинных сделок: у коротких сделок был более высокий процент выигрышей при меньшем количестве самих сделок на бычьем рынке в 2024 году. Это говорит о том, что может оказаться сложнее отыгрывать откат вверх с помощью этой стратегии.


Стратегия вторая — откат RSI2 (RSI2 Pullback) 

Стратегия отката RSI2 повышает качество торговли с возвратом к среднему значению, поскольку требует нескольких последовательных экстремальных значений RSI. Идея заключается в том, что актив, находящийся в долгосрочном тренде, настраивается на отскок, если сталкивается с резким многобарным откатом. При использовании RSI2 с немного более высоким порогом, чем в традиционной версии, и в сочетании с тремя последовательными значениями RSI выше или ниже этого порога, сигнал становится сильнее, предполагая уступку и повышая вероятность быстрого разворота.

Эта стратегия основана на концепции Ларри Коннорса, но я модифицировал ее, добавив требование нескольких последовательных экстремальных показаний RSI и введя необычное правило выхода. Выходим из позиции, как только цена пройдет максимум или минимум предыдущей свечи. Эта идея выхода связано с замеченной особенностью: краткосрочные развороты часто показывают разворотный бар, преодолевший максимум или минимум предыдущей свечи, что позволяет нам быстро выйти из сделки и зафиксировать небольшую прибыль.

Правила использования сигналов:

  • Покупайте, когда: последние три значения RSI2 < 10, последняя цена закрытия > 200-периодной скользящей средней и нет текущих позиций.
  • Продавайте, когда: последние три значения RSI2 > 90, последняя цена закрытия < 200-периодной скользящей средней и нет текущих позиций.
  • Выходите из покупки, когда: последняя цена закрытия > максимума предпоследней свечи или последняя цена закрытия < 200-периодной скользящей средней.
  • Выходите из продажи, когда: последняя цена закрытия < минимума предпоследней свечи или последняя цена закрытия > 200-периодной скользящей средней.
  • Расстояние стоп-лосса составляет 0.15% от текущей цены.

MQL5-код:

//US500 M30
#include <Trade/Trade.mqh>
CTrade trade;

input int Magic = 0;
input double lot = 0.1;

int barsTotal = 0;
int handleMa;
int handleRsi;
const int Max = 10;
const int Min = 90;
const int MaPeriods = 200;
const double slp = 0.0015;

int OnInit()
  {
   trade.SetExpertMagicNumber(Magic);
   handleMa =iMA(_Symbol,PERIOD_CURRENT,MaPeriods,0,MODE_SMA,PRICE_CLOSE);
   handleRsi = iRSI(_Symbol,PERIOD_CURRENT,2,PRICE_CLOSE);
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
  }
  
void OnTick()
  {
  int bars = iBars(_Symbol,PERIOD_CURRENT);
  
  if (barsTotal!= bars){
     barsTotal = bars;
     bool NotInPosition = true;
     double ma[];
     double rsi[];
     CopyBuffer(handleMa,BASE_LINE,1,1,ma);
     CopyBuffer(handleRsi,0,1,3,rsi);
     double lastClose = iClose(_Symbol, PERIOD_CURRENT, 1);
     double lastlastHigh = iHigh(_Symbol,PERIOD_CURRENT,2);
     double lastlastLow = iLow(_Symbol,PERIOD_CURRENT,2);
     for(int i = PositionsTotal()-1; i>=0; i--){
         ulong pos = PositionGetTicket(i);
         string symboll = PositionGetSymbol(i);
         if(PositionGetInteger(POSITION_MAGIC) == Magic&&symboll== _Symbol){
            NotInPosition = false;
            if((PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY&&(lastClose>lastlastHigh||lastClose<ma[0]))
            ||(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL&&(lastClose<lastlastLow||lastClose>ma[0])))trade.PositionClose(pos);  
            }}
     if(rsi[0]<Max&&rsi[1]<Max&&rsi[2]<Max&&NotInPosition&&lastClose>ma[0])executeBuy();
     if(rsi[0]>Min&&rsi[1]>Min&&rsi[2]>Min&&NotInPosition&&lastClose<ma[0])executeSell();
    }
 }

void executeSell() {      
       double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
       bid = NormalizeDouble(bid,_Digits);
       double sl = bid*(1+slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Sell(lot,_Symbol,bid,sl);    
}
    
void executeBuy() {
       double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
       ask = NormalizeDouble(ask,_Digits);
       double sl = ask*(1-slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Buy(lot,_Symbol,ask,sl);
}

Типичная сделка будет выглядеть примерно так:

Демо-версия RSI2 V2

Ниже представлены результаты тестирования на истории для US500 (M30) с 1 января 2024 года по 1 марта 2025 года.

Настройки RSI2 V2

параметры

Кривая капитала RSI2 V2

Результат RSI2 V2

Эту стратегию используют в торговле реже, чем предыдущую, в основном потому, что для входа теперь требуются три последовательных экстремальных значения RSI. Процент выигрышей по длинным сделкам не особенно впечатляет. Как мы отметили в отношении предыдущей стратегии, поскольку мы скальпируем крошечные отскоки (обычно 2–3 свечи), не обязательно в полной мере получится извлечь прибыль из большой волитальности бычьего тренда в 2024 году. Эту ситуацию можно было бы уравновесить, если мы проведем тестирование в течение нескольких лет, собирая данные о различных рыночных условиях.


Стратегия третья — RSI2 перекупленности/перепроданности

Стратегия перекупленности/перепроданности RSI2 обеспечивает более высокую гибкость, поскольку уровень выхода корректируется в зависимости от того, насколько трендовым является актив. Она также предполагает, что экстремальные показания RSI2 означают, что акция ушла слишком далеко, слишком быстро и должна развернуться, что позволяет трейдерам покупать на спадах (перепроданность) или краткосрочных подъемах (перекупленность). В отличие от двух предыдущих стратегий, у этой есть более динамичный выход на основе настраиваемого порогового значения RSI. Загвоздка в том, что она может быть рискованнее в связи с рисками, вызванными явлениями «толстых хвостов», поскольку RSI, даже при настройке на 2 периода, сглажен и отстает от движения цены. Таким образом, если сделка быстро развернется против нас, позицию спасет только стоп-лосс.

Кроме того, 200-периодная скользящая средняя обычно используется для долгосрочных трендов на бычьих фондовых рынках. Вот почему в двух предыдущих стратегиях Ларри использовал только длинные позиции. Поскольку мы здесь занимаемся внутридневной торговлей CFD, я адаптировал все стратегии к торговле как длинными, так и короткими позициями. Однако Ларри упомянул, что эта стратегия позволяет торговать по обе стороны рынка, включая короткие продажи акций. Она использует 50-периодную скользящую среднюю вместо 200-периодной для фильтрации тренда, что делает ее более чувствительной к изменениям тренда, поскольку короткие продажи часто связаны с быстрыми изменениями, а не с долгосрочными трендами фондового рынка.

Эта стратегия основана на исследованиях Ларри Коннорса и выделена в его трудах и на семинарах как гибкий способ использования индикатора, подходящий в зависимости от рынка и для длинных, и для коротких сделок.

Правила использования сигналов:

  • Покупайте, когда: RSI2 < 5, последняя цена закрытия > 50-периодной скользящей средней и нет текущих позиций.
  • Продавайте, когда: RSI2 > 95, последняя цена закрытия < 50-периодной скользящей средней и нет текущих позиций.
  • Выходите из позиции на покупку, когда: RSI2 > 70.
  • Выходите из позиции на продажу, когда: RSI2 < 30.
  • Расстояние стоп-лосса составляет 1% от текущей цены.

MQL5-код:

//US500 M30
#include <Trade/Trade.mqh>
CTrade trade;

input int Magic = 0;
input double lot = 0.1;

const int Max = 5;
const int Min = 95;
const int MaPeriods = 50;
const double slp = 0.01;

int barsTotal = 0;
int handleMa;
int handleRsi;

int OnInit()
  {
   trade.SetExpertMagicNumber(Magic);
   handleMa =iMA(_Symbol,PERIOD_CURRENT,MaPeriods,0,MODE_SMA,PRICE_CLOSE);
   handleRsi = iRSI(_Symbol,PERIOD_CURRENT,2,PRICE_CLOSE);
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
  }
  
void OnTick()
  {
  int bars = iBars(_Symbol,PERIOD_CURRENT);
  
  if (barsTotal!= bars){
     barsTotal = bars;
     bool NotInPosition = true;
     double ma[];
     double rsi[];
     CopyBuffer(handleMa,BASE_LINE,1,1,ma);
     CopyBuffer(handleRsi,0,1,1,rsi);
     double lastClose = iClose(_Symbol, PERIOD_CURRENT, 1);
     for(int i = PositionsTotal()-1; i>=0; i--){
         ulong pos = PositionGetTicket(i);
         string symboll = PositionGetSymbol(i);
         if(PositionGetInteger(POSITION_MAGIC) == Magic&&symboll== _Symbol){
            NotInPosition = false;
            if((PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY&&rsi[0]>70)
            ||(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL&&rsi[0]<30))trade.PositionClose(pos);  
            }}
     if(rsi[0]<Max&&NotInPosition&&lastClose>ma[0])executeBuy();
     if(rsi[0]>Min&&NotInPosition&&lastClose<ma[0])executeSell();
    }
 }

void executeSell() {      
       double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
       bid = NormalizeDouble(bid,_Digits);
       double sl = bid*(1+slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Sell(lot,_Symbol,bid,sl);    
}
    
void executeBuy() {
       double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
       ask = NormalizeDouble(ask,_Digits);
       double sl = ask*(1-slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Buy(lot,_Symbol,ask,sl);
}

Типичная сделка будет выглядеть примерно так:

Демо-версия RSI2 V3

Ниже представлены результаты тестирования на истории для US500 (M30) с 1 января 2024 года по 1 марта 2025 года.

Настройки RSI2 V3

параметры

Кривая капитала RSI2 V3

Результат RSI2 V3

По сравнению с двумя предыдущими стратегиями эта стратегия показывает более высокий процент выигрышей, но также и более сильную плавающую просадку капитала, как можно видеть по зеленым линиям на кривой капитала. Это связано с упомянутым ранее риском, вызванным явлением «толстых хвостов», а также с необходимостью установить более широкий диапазон стоп-лосса, чем обычно. Риск «толстых хвостов» описывает более высокую вероятность экстремальных событий в распределении, что может послужить причиной существенных потерь в рамках возвратной стратегии, предполагающей возвращение цен к своему историческому среднему значению. В этих стратегиях неожиданные большие колебания цен, более частые в распределениях с «толстыми хвостами», могут помешать ожидаемому возврату и привести к усилению рисков или потерь по сравнению с возможными прогнозами, которые ожидаются от нормального распределения. Хотя эта стратегия и обеспечивает более высокий фактор прибыли, для обеспечения ее практической значимости и пригодности для торговли необходимо решить проблему просадок.

Распределение «толстых хвостов»


Рассуждения

Оглядываясь назад на три рассмотренные нами стратегии, можно сказать, что они довольно схожи по коду и правилам обработки сигналов. В основном это связано с тем, что все они основаны на модельной системе «Возврат к среднему значению RSI2» (RSI2 Mean-Reversion). Как только у вас появится надежная модельная система, скорректировать несколько правил для реализации различных стратегий будет довольно просто. Разберем, что представляет собой модельная система в сравнении с отдельной стратегией в CTA-трейдинге.

Отдельная стратегия привязана к конкретному таймфрейму и активу, а правила обработки сигналов описаны подробно, и их нелегко поменять местами. Однако модельная система — это скорее общая отправная точка для поиска вашего преимущества на основе исторически подтвержденных концепций, таких как возврат к среднему, следование за трендом, моментум (скорость рынка) или прорыв. Отсюда конкретная модельная система объединяет ключевые источники сигналов с такой крупной концепцией, например с RSI2 Mean-Reversion для данной статьи. Модельные системы более гибкие на всех таймфреймах, для всех активов и при любых правилах обработки сигналов, что упрощает разработку многочисленных стратегий на их основе и эффективное формирование диверсифицированного портфеля.

Для создания модельной системы и разработки на ее основе стратегий неплохо будет сделать следующее:

  • Рассчитывайте все сигналы или ценовые расстояния стационарным способом, нормализуя их, или используйте проценты от цены, чтобы сделать их более масштабируемыми для различных активов и таймфреймов.
  • В своем коде избегайте жесткого кодирования таймфрейма и символа. Используйте _Symbol и PERIOD_CURRENT для автоматической корректировки во время тестирования на истории в различных условиях.
  • Разделите стратегию на четкие правила входа и выхода, перечислите их в виде списка и рассмотрите альтернативные правила, которые по-прежнему будут отражать ту же мотивацию, ориентированную на достижение цели.
  • Поместите многократно используемый код в функции для поддержания его чистоты и эффективности, что упрощает последующую настройку правил обработки сигналов.

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

  • Протестируйте стратегии на различных таймфреймах и активах, не только на US500 M30, чтобы выяснить, существуют ли лучшие условия, чем те, которые мы используем в настоящее время. Обязательно совершайте все открытия на внутривыборочных данных, чтобы избежать ошибок прогнозирования.
  • Измените индикаторы моментума и трендовые индикаторы, например заменив RSI на ROC или VIX либо переключив скользящие средние к фильтру Калмана.
  • Комбинируйте правила входа и выхода с другими возвратными стратегиями, используя, например, полосы Боллинджера для входа и придерживаясь правила выхода из этой статьи.

Это основные методы, на которые опытные исследователи количественной торговли CTA опираются для более эффективного построения стратегий. Предложение идей по созданию новых стратегий никогда не подразумевало изобретение чего-то совершенно неслыханного. Речь скорее идет о настройки или комбинировании имеющихся проверенных моделей, которые существуют, но недостаточно прибыльны сами по себе. Эта часть работы достаточно абстрактна, чтобы ее не могли взять на себя машины, но в то же время достаточно структурирована, чтобы люди по-прежнему методично извлекали данные, следуя определенному процессу.


Заключение

В этой статье мы начали с объяснения причин, по которым решили строить внутридневные стратегии на основе концепции возврата к среднему значению RSI2. Затем мы рассмотрели три известные стратегии Ларри Коннорса, подробно объясняя логику, на основе которой построены их правила обработки сигналов, указав точные условия входа и выхода, а также протестировав их на исторических данных в MetaTrader 5. После этого мы представили идею создания стратегий на основе модельных систем, дали практические советы по применению этого подхода и предложили способы разработки более прибыльных стратегий возврата к среднему значению RSI2 в будущем. В целом, в этой статье излагается четкая структура для трейдеров: возьмите популярную, общедоступную онлайн-стратегию, немного доработайте ее и протестируйте на MQL5 для дальнейшего усовершенствования концепции. Трейдеры легко могут освоить этот процесс и повысить эффективность разработки своей стратегии.

Таблица файлов

Название файла Использование файла
RSI2_V1.mq5 Советник по первой стратегии
RSI2_V2.mq5 Советник по второй стратегии
RSI2_V3.mq5 Советник по третьей стратегии

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/17636

Прикрепленные файлы |
RSI2.zip (3.1 KB)
От новичка до эксперта: Создание анимированного советника для новостей в MQL5 (I) От новичка до эксперта: Создание анимированного советника для новостей в MQL5 (I)
Доступность новостей является критическим фактором при торговле в терминале MetaTrader 5. Несмотря на наличие множества новостных API, многие трейдеры сталкиваются с трудностями доступа к ним и их эффективной интеграции в свою торговую среду. В ходе настоящего обсуждения нашей целью является разработать оптимизированное решение, которое выводило бы новости непосредственно на график — там, где они больше всего нужны. Мы добьемся этого, создав советника «Заголовки новостей», который отслеживает и отображает обновления новостей в режиме реального времени из источников API.
Форекс советник на нейросети N-BEATS Network Форекс советник на нейросети N-BEATS Network
Реализация архитектуры N-BEATS для форекс-трейдинга в MetaTrader 5 с квантильным прогнозированием и адаптивным риск-менеджментом. Архитектура адаптирована через билинейную нормализацию и специализированные функции потерь для финансовых данных. Тестирование на данных 2025 года показало неспособность генерировать прибыль, подтверждая разрыв между теоретическими достижениями и практической торговой эффективностью.
Разработка инструментария для анализа движения цен (Часть 6): Возврат к среднему значению Разработка инструментария для анализа движения цен (Часть 6): Возврат к среднему значению
Хотя некоторые концепции на первый взгляд кажутся простыми, воплотить их в жизнь на практике может быть довольно сложно. В статье ниже мы рассмотрим инновационный подход к автоматизации советника, который анализирует рынок, используя стратегию возврата к среднему значению.
Нейросети в трейдинге: Модель адаптивной графовой диффузии (модуль внимания) Нейросети в трейдинге: Модель адаптивной графовой диффузии (модуль внимания)
В этой статье мы подробно рассмотрим практическую реализацию ключевых компонентов фреймворка SAGDFN. Покажем, как организованы разреженное внимание и выбор значимых соседей для прогнозирования временных рядов. Представленные подходы демонстрируют баланс между точностью прогнозов и эффективностью вычислений.