English Deutsch 日本語
preview
Разработка торговой стратегии: Метод Triple Sine для возврата к среднему значению

Разработка торговой стратегии: Метод Triple Sine для возврата к среднему значению

MetaTrader 5Трейдинг |
87 2
Daniel Opoku
Daniel Opoku

Введение

Традиционные технические индикаторы, такие как «Схождение-расхождение скользящих средних» (MACD), «Индекс денежного потока» (MFI), «Стохастический осциллятор» и «Чудесный осциллятор» (АО), долгое время служили основой для трейдеров и аналитиков, стремящихся определить точки входа и выхода из рынка. Несмотря на различия в их структурах, каждый из этих индикаторов основан на различных математических формулировках, которые преобразуют данные о ценах в осмысленные графические представления, помогая трейдерам интерпретировать поведение и динамику рынка.

В этой статье мы исследуем разработку новой торговой стратегии, которая выходит за рамки этих традиционных инструментов. Мы представляем стратегию возврата к среднему значению, критерии входа которой основаны на специально разработанном индикаторе Triple Sine Oscillator (TSO). Чтобы добиться этого, используем особую тригонометрическую функцию — куб синуса — для разработки осциллятора, использующего масштабированные ценовые данные в качестве основного входного сигнала. Цель состоит в том, чтобы использовать циклический характер тригонометрических функций для выявления в движениях цен потенциальных точек возврата к среднему значению.


Математическое обоснование: Функция куба синуса

В основе индикатора Triple Sine лежит функция куба синуса, математически выраженная следующим образом:

sinecubefxn

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

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

Визуализация синусоидального цикла

На данном этапе важно визуализировать природу функции куба синуса, чтобы получить более четкое представление о ее поведении и о том, как ее можно применять в рамках нашей торговой системы. Для этого построим график функции в заданном диапазоне от –2π до 2π. 

SCplot

Рисунок 1. График куба синуса

На рисунке 1 показана конструкция функции куба синуса. Полученная форма волны демонстрирует циклическую и симметричную конструкцию функции куба синуса. В пределах этого интервала функция завершает полный колебательный цикл, отображая два пика и две впадины. Каждый полуцикл демонстрирует один положительный и один отрицательный экстремум — другими словами, отрицательные входные сигналы (от -2π до 0) приводят к чередованию выходных сигналов +1 и –1, и та же закономерность наблюдается для положительных входных сигналов (от 0 до 2π). 

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

Изучение структуры кода MQL5 для построения графика куба синуса

Перед разработкой индикатора Triple Sine Oscillator крайне важно понимание базовой структуры скрипта MQL5, используемого для построения графика функции куба синуса. Этот процесс позволяет понять, как строятся и визуально передаются графические изображения в среде MetaTrader 5.

Импорт графической библиотеки

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

#include <Graphics/Graphic.mqh>

string g_name = "SineCubePlot";

Файл Graphic.mqh включен сюда для доступа к графическим функциям и классам, необходимым для построения графиков. Переменная g_name определена как SineCubePlot и служит именем графического окна, в котором будет отображаться график куба синуса.

Создание графического объекта и окна

Следующий шаг включает создание экземпляра класса CGraphic и инициализацию окна построения графика:

   // Create graphic object
   CGraphic graphic;
   
   // Create graphic window
   if(!graphic.Create(0, g_name, 0, 30, 30, 1000, 600))
   {
      Print("Error creating graphic!");
      return;
   }

В этом разделе объявляется графический объект с именем graphic. Затем вызывается метод Create() для инициализации графического окна с такими заданными параметрами, как положение и размер (30, 30, 1000, 600). Если создать окно не удается, выводится сообщение об ошибке — «Ошибка при создании графического элемента!» ("Error creating graphic!"), — и программа корректно завершает работу.

Настройка свойств графика для визуализации куба синуса

Важно определить внешний вид и структуру графика. Функция SetupChart() выполняет эту задачу, настраивая цвет фона, границы осей, подписи, размеры шрифтов и свойства сетки, чтобы обеспечить четкость и визуальную привлекательность полученного графика.

//+------------------------------------------------------------------+
//| Set up the chart properties                                      |
//+------------------------------------------------------------------+
void SetupChart(CGraphic &graphic)
{
   // Set background color
   graphic.BackgroundColor(clrWhite);
         
   // Configure X axis
   graphic.XAxis().Min(-2*M_PI);
   graphic.XAxis().Max(2*M_PI);
   graphic.XAxis().Name("x");
   
   // Configure Y axis
   graphic.YAxis().Min(-1.2);
   graphic.YAxis().Max(1.2);
   graphic.YAxis().Name("sin(x)³");
   
   // Add grid
   graphic.XAxis().Color(clrGray);
   graphic.YAxis().Color(clrGray);
   
   // Increase font sizes
   graphic.XAxis().ValuesSize(14);
   graphic.YAxis().ValuesSize(14);
   graphic.XAxis().NameSize(20);
   graphic.YAxis().NameSize(20);
   
   // Add title
   graphic.CurvePlotAll();
   graphic.Update();
}

Функция SetupChart() инициализирует среду построения графиков перед началом процесса визуализации.

  • Чтобы внешний вид был аккуратным и профессиональным, выбран белый цвет фона.
  • Ось X находится в диапазоне от −2π до +2π, что соответствует двум полным циклам синусоидальной волны, а ось Y — в диапазоне от −1.2 до +1.2, немного выходя за пределы естественной амплитуды функции для большей наглядности.
  • На оси заданы обозначения: x — для горизонтальной оси, sin(x)³ — для вертикальной оси.
  • Для улучшения читаемости добавлены линии сетки, окрашенные в серый цвет, благодаря которому они не перекрывают основную кривую.
  • Наконец, для улучшения видимости увеличен размер шрифта как для названий осей, так и для числовых значений.

После конфигурирования всех этих параметров график обновляется с помощью функции graphic.Update(), чтобы применить новые настройки.

Построение и отображение функции куба синуса

После подготовки структуры графика следующим шагом является генерация точек данных для функции куба синуса и их отображение с помощью функции PlotSinCube().

//+------------------------------------------------------------------+
//| Generate and plot sin(x)^3 data                                  |
//+------------------------------------------------------------------+
void PlotSinCube(CGraphic &graphic)
{
   int points = 1000;
   double x[], y[];
   ArrayResize(x, points);
   ArrayResize(y, points);
   
   // Generate data points
   for(int i = 0; i < points; i++)
   {
      x[i] = -2*M_PI + (4*M_PI)*i/(points-1);
      y[i] = MathPow(MathSin(x[i]), 3);
   }
  
   // Get the curve object and set line properties
   CCurve* curve = graphic.CurveAdd(x, y, CURVE_LINES, "sin(x)³");
   if(curve != NULL)
   {
      curve.LinesStyle(STYLE_SOLID);
      curve.LinesWidth(3);
      curve.Color(ColorToARGB(clrBlue, 255));
   }   
   graphic.CurvePlotAll();
}

Эта функция строит куб синуса следующим образом:

  • Определение 1000 равномерно расположенных точек данных в интервале от −2π до +2π.
  • Каждое значение y вычисляется как куб синуса и сохраняется вместе с соответствующим значением x.
  • Использование метода CurveAdd() для построения графика полученной осциллограммы, отобразив сплошную синюю линию шириной в три пикселя для лучшей наглядности.
  • Обновление графика с помощью функции CurvePlotAll() для отображения итоговой кривой.

Соберем все вместе

Сочетание функций SetupChart() и PlotSinCube() позволяет скрипту MQL5 эффективно настраивать и визуализировать математические функции. Разделение настройки графика и генерации данных позволяет скрипту сохранять четкость и модульность.


Индикатор Triple Sine Oscillator (TSO)

Рассмотрев поведение функции куба синуса, мы переходим к построению инструмента Triple Sine Oscillator (TSO) — технический индикатор, который применяет математические принципы функции куба синуса к данным о рыночных ценах.

Цель TSO — преобразовать исходные ценовые движения в ограниченный осцилляторный сигнал, колеблющийся в диапазоне от –1 до +1, что делает его идеальным инструментом для выявления возможностей возврата к среднему значению. Однако, поскольку функция куба синуса эффективно работает в диапазоне входных значений от –6.284 до +6.284 (приблизительно эквивалентном интервалу от –2π до +2π за один полный цикл), исходные данные о цене необходимо соответствующим образом масштабировать перед тем, как применить их к функции.

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

ScaledPriceInput

где:

  • MA = скользящая средняя цены (отражает центральную тенденцию)
  • Std = стандартное отклонение цены (измеряет волатильность)
  • k = коэффициент чувствительности (скалярная константа, определяющая степень колебаний)

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

Коэффициент чувствительности (k) позволяет трейдерам регулировать скорость отклика индикатора — более высокое значение k повышает чувствительность к краткосрочным колебаниям цен, в то время как более низкое значение k сглаживает шум для более широкого охвата при выявлении тенденций.

Применив функцию куба синуса к этому масштабированному входному значению цены, мы получаем осциллятор тройного синуса — TSO = sin³ (Scaled_Price) — ограниченный и циклический индикатор, способный обнаруживать зоны перекупленности и перепроданности, а также сигнализировать о потенциальных точках разворота цены на рынке.

Структура кода индикатора TSO

Прежде чем продемонстрировать, как Triple Sine Oscillator (TSO) работает в условиях торговли в реальном времени, крайне важно сначала понять структуру кода, управляющего функционированием этого инструмента. Индикатор TSO построен на простой, но мощной основе, предназначенной для преобразования данных о рыночных ценах в колебательные сигналы с использованием функции куба синуса. Его структуру можно кратко описать следующими ключевыми этапами:

Раздел инициализации

Раздел «Инициализация» определяет базовую структуру и визуальное оформление индикатора TSO. Сюда входят название индикатора, режим отображения, цветовая схема и предопределенные уровни, которые помогают в интерпретации сигнала.

#property description "Triple-Sine Oscillator — (sin(x))^3"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1

//--- plot settings
#property indicator_label1  "Triple-Sine Oscillator"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrYellowGreen
#property indicator_width1  2

//--- indicator levels
#property indicator_level1   0.7
#property indicator_level2  -0.7
#property indicator_level3   0
#property indicator_levelcolor clrGray

Для такой настройки:

  • Индикатор обозначен как Triple-Sine Oscillator — (sin(x))³ («Осциллятор тройного синуса — (sin(x))³»), что отражает его математическую основу.
  • Он отображается в отдельном окне индикатора, что делает его независимым от основного ценового графика.
  • Используется только один буфер графика, который хранит и отображает вычисленные значения TSO.
  • Линия на графике отображается желто-зеленым цветом и имеет ширину в два пикселя для лучшей видимости.
  • К данным добавлены три опорных уровня: +0.7, –0.7 и 0, окрашенные в серый цвет. Эти уровни визуально определяют зоны перекупленности, перепроданности и нейтральной зоны (возврата к среднему значению).

Внешние параметры советника

Индикатор принимает два ключевых параметра, определяющих скорость его отклика и характер сглаживания:

//--- input parameters
input int mPeriod = 20;      // Period for SMA and StdDev
input double Ksense = 0.5;   // Sensitivity multiplier

  • Период скользящей средней (mPeriod) — определяет окно ретроспективного обзора для расчета простой скользящей средней (SMA) и стандартного отклонения (StdDev). Период по умолчанию составляет 20 баров.
  • Коэффициент чувствительности (Ksense) — определяет, насколько сильно индикатор реагирует на отклонения цены. Более высокое значение обеспечивает более высокую скорость отклика, а более низкое значение сглаживает выходные данные. По умолчанию k = 0.5.

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

Определение функции тройного синуса

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

//+------------------------------------------------------------------+
//| TripleSine function                                              |
//+------------------------------------------------------------------+
double TripleSine(double x)
  {
   return(MathPow(MathSin(x), 3));
  }

Основная логика вычислений

В основном цикле расчетов индикатор вычисляет масштабированную цену для каждого бара и преобразует ее с помощью функции тройного синуса (Triple Sine).

   int limit =rates_total- MathMax(mPeriod, prev_calculated - 1);

   for(int i = limit; i>=0; i--)
     {
      if(sd[i] == 0) { TripleSineBuffer[i] = 0; continue; }

      double scaled = Ksense * (price[i] - ma[i]) / sd[i];
      TripleSineBuffer[i] = TripleSine(scaled);
     }

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

Затем масштабированная цена передается в функцию куба синуса. Это преобразует нормализованные данные в ограниченный осцилляторный сигнал, изменяющийся в диапазоне от –1 до +1.

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

Демонстрация индикатора TSO

На данном этапе настало время протестировать недавно разработанный TSO на платформе MetaTrader 5. Этот этап позволяет нам проверить эффективность индикатора, его визуальное поведение и реакцию на реальные рыночные данные.

TSOdemo

Рисунок 2. Индикатор Triple Sine Oscillator 

В ходе демонстрации TSO было сделано важное наблюдение относительно влияния коэффициента чувствительности (k) на то, как индикатор реагирует на движение цен.

При увеличении значения чувствительности с 0.5 до 2.3 осциллятор стал более чувствительным к колебаниям рынка. Повышенная чувствительность позволила линии TSO чутко реагировать даже на незначительные изменения цен, что делает ее идеальной для краткосрочной или высоковолатильной торговли, где решающее значение имеют быстрые сигналы.

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

Оптимизируя как коэффициент чувствительности (k), так и период скользящего среднего (mPeriod), индикатор TSO можно точно настроить для эффективной адаптации к различным финансовым инструментам — от быстро меняющихся валютных пар и сырьевых товаров до более медленных, ориентированных на тренды акций.

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


Торговая стратегия TSO: Метод возврата к среднему значению

Теперь, когда индикатор TSO полностью сформирован, мы можем использовать его для разработки полноценной торговой стратегии, основанной на возврате к среднему значению (Mean Reversion Trading Strategy). Прежде чем углубляться в саму стратегию, крайне важно понять лежащую в ее основе концепцию возврата к среднему значению на финансовых рынках.

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

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

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

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

Логика и условия торговли

1. Условие на продажу

Открытие короткой позиции (позиции на продажу) происходит, когда осциллятор указывает на то, что ценовой моментум переместился намного выше зоны равновесия. Это происходит, когда:

Предыдущий TSO < 0.7, а текущий TSO > 0.7

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

2. Условие на покупку

Длинная позиция (позиция на покупку) открывается, когда осциллятор выявляет отклонение от среднего значения в сторону снижения — потенциальное состояние перепроданности. Критерии следующие:

Предыдущий TSO > − 0.7, а текущий TSO < − 0.7 

Такое пересечение указывает на возможное ослабление давления со стороны продавцов, что увеличивает вероятность коррекции вверх.

3. Условие выхода

Все открытые позиции будут закрыты при достижении пороговых значений Take Profit (TP) или Stop Loss (SL). Это гарантирует сохранение прибыли и эффективное управление рисками снижения стоимости активов.

4. Правило множественного входа

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

  • Когда активна позиция на покупку, позиции на продажу не открываются.
  • Дополнительные сделки на покупку могут быть добавлены только в том случае, если условие покупки будет снова выполнено, пока первоначальная сделка остается открытой.
  • То же правило применяется и к позициям на продажу — новые продажи разрешены только в том случае, если существующие активны, а условие продажи выполняется повторно.

Для предотвращения избыточного объема торговли и обеспечения достаточного движения рынка между точками входа система устанавливает интервал в 10 баров перед проверкой наличия нового сигнала на вход.

Кроме того, максимальное количество входов в одном направлении ограничено 5 (пятью). Это ограничение обеспечивает баланс между потенциальной прибылью и контролируемым уровнем риска, избегая чрезмерного накопления позиций в периоды волатильности.

Структура кода советника TSO

Первая операция в рамках функции OnTick() — определить, сформировался ли новый бар (свеча). Это делается с помощью пользовательской функции IsNewBar().

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

    if(!IsNewBar()) return;
    
    // Calculate TSO values
    CalculateTSO();
    
    // Check entry conditions
    CheckEntryConditions();
После подтверждения нового бара советник вызывает функцию CalculateTSO(). 

Эта функция вычисляет самые последние значения индикатора Triple Sine Oscillator (TSO) на основе текущих ценовых данных. Внутри нее выполняются следующие операции:

  • обновление скользящей средней (MA) и стандартного отклонения (Std) цены;
  • масштабирует цену с использованием коэффициента чувствительности (k);
  • применяет функцию куба синуса для генерации значения TSO.

Затем вычисленные значения осциллятора (предыдущие и текущие) сохраняются в буферы для использования на этапе оценки сигнала.

После вычисления обновленных показаний TSO советник переходит к оценке торговой логики с помощью функции CheckEntryConditions().

Функция CheckEntryConditions() составляет ядро процесса принятия решений в советнике Triple Sine Mean Reversion, отвечая за проверку торговых сигналов и управление входом в позиции на основе значений индикатора TSO. Она объединяет отслеживание позиций, контроль направления сделок и проверку сигналов, чтобы гарантировать, что каждая сделка соответствует логике системы и параметрам риска.

//+------------------------------------------------------------------+
//| Check entry conditions                                           |
//+------------------------------------------------------------------+
void CheckEntryConditions()
{
    // Count current positions
    CountPositions();
    
    // Check if we can open new positions
    if(buyCount + sellCount >= MaxEntries)
    {
        Print("Maximum entries reached: ", MaxEntries);
        return;
    }
    
    // Check Buy condition: PrevTSO > -0.7 && CurTSO < -0.7
    if(prevTSO > -TSO_Threshold && curTSO < -TSO_Threshold)
    {
        Print("Buy condition met");
        if(CanOpenBuy())
        {
            OpenBuyPosition();
        }
    }
    
    // Check Sell condition: PrevTSO < 0.7 && CurTSO > 0.7
    if(prevTSO < TSO_Threshold && curTSO > TSO_Threshold)
    {
        Print("Sell condition met");
        if(CanOpenSell())
        {
            OpenSellPosition();
        }
    }
}

Ниже показано, как работает эта функция:

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

Перед открытием каких-либо новых сделок советник проверяет, не превышает ли общее количество позиций установленный максимум.

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

Затем система оценивает условия сигнала на покупку, которые возникают, когда предыдущее значение TSO превышает –0.7, а текущее значение TSO пересекает уровень –0.7 сверху вниз.

Если данное условие выполняется, это сигнализирует о потенциальной перепроданности на рынке.

Перед исполнением нового ордера на покупку советник вызывает вспомогательную функцию CanOpenBuy(), которая гарантирует, что:

  • нет открытых позиций на продажу (для поддержания односторонней торговли);
  • прошло минимальное количество баров (10 баров) с момента последнего входа.

После проверки этих условий советник исполняет новый ордер на покупку при помощи функции OpenBuyPosition().

Аналогичным образом, условие продажи проверяется, когда предыдущее значение TSO меньше +0.7, а текущее значение TSO пересекает уровень +0.7 снизу вверх.

Это указывает на состояние перекупленности и предполагает, что цена может снова снизиться. Функция CanOpenSell() гарантирует отсутствие активных позиций на покупку и соблюдение минимального расстояния между барами перед открытием новой сделки на продажу.

Фильтрация и контроль сделок


С помощью сочетания функций CountPositions(), CanOpenBuy() и CanOpenSell() система обеспечивает следующие меры защиты:

  • Постоянство направления: в любой момент времени активно только одно направление сделки (покупка или продажа)
  • Управление позициями: одновременно могут быть открыты не более пяти позиций.
  • Критерии выбора времени операций: для рассмотрения возможности открыть новую позицию должно пройти не менее 10 баров.

Демонстрация работы советника TSO

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

В процессе развертывания советник непрерывно отслеживает рыночные данные в режиме реального времени и оценивает условия входа при открытии каждой новой свечи. Как только будет обнаружен действительный сигнал — на основе поведения TSO в окрестностях пересечений, — советник автоматически запускает ордера на покупку или продажу в соответствии с ранее определенными правилами.

Демоверсия советника TSO

Рисунок 3. Демонстрация советника TSO

На рисунке 3 показано, как советник TSO исполняет эти ордера в реальных рыночных условиях. Каждая операция покупки и продажи точно соответствует пересечениям пороговых значений осциллятора. 

Кроме того, можно наблюдать множественные входы в одном направлении, что отражает способность советника увеличивать существующие позиции при повторном возникновении тех же условий — в том случае, если будут соблюдаться 10-барный интервал и максимальный предел входа.

Благодаря такому автоматизированному процессу исполнения, советник TSO преобразует математическое обнаружение сигналов в точные рыночные действия, обеспечивая согласованность, скорость и дисциплину в управлении сделками.


Заключение

В представленной статье мы успешно разработали новый подход к торговле, интегрируя в технический анализ математическое моделирование. Начав с функции куба синуса, мы построили осциллятор тройного синуса (Triple Sine Oscillator, TSO) — уникальный индикатор, предназначенный для отслеживания циклического поведения рынка и выявления возможностей возврата к среднему значению. Мы дополнительно расширили эту концепцию, разработав полноценную стратегию возврата к среднему значению, подробно описали ее структуру, логику кода и процесс исполнения сделок в режиме реального времени.

Математическая основа индикатора TSO позволяет ему эффективно выявлять состояния перекупленности и перепроданности, предоставляя своевременные сигналы для входа на рынках, движущихся в диапазоне. Благодаря внедрению множественных входов, эта стратегия позволяет трейдерам «наращивать позицию по мере развития движения» и увеличивать до максимума потенциальную прибыль во время сильных фаз возврата к среднему значению. Однако эта же функция создает дополнительные риски, то есть она, хотя и может увеличить прибыль, также несет в себе более высокий риск сложных убытков при неожиданном изменении рыночных условий.

С помощью этой статьи мы продемонстрировали, как математическую функцию можно преобразовать в новый осциллятор, а затем на его основе сформировать структурированную торговую стратегию, основанную на возврате к среднему значению. Метод тройного синуса (Triple Sine) демонстрирует, как творческий подход к математическому проектированию может привести к созданию инновационных торговых инструментов, имеющих практическое применение.

В нашей следующей статье мы оценим эффективность работы системы (TSO) в сочетании с индикаторами следования за трендом, проверим его устойчивость и адаптивность к различным рыночным условиям, чтобы определить его сильные стороны, ограничения и потенциал оптимизации.

Имя файла Описание
SineCube.mq5 В файле показана математическая функция синуса в диапазоне от -2π до +2π. После построения графика необходимо обновить шаблон, чтобы удалить график.
TripleSineOscillator.mq5 Этот файл генерирует индикатор-осциллятор в окне графика.
TSO_EA.mq5 Этот файл представляет собой советника, который совершает сделки в режиме реального времени.

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

Прикрепленные файлы |
SineCube.mq5 (5.61 KB)
TSO_EA.mq5 (9.64 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (2)
Paul Afolabi
Paul Afolabi | 15 нояб. 2025 в 17:56
Пожалуйста, могу ли я получить это для тестирования
Juvenille Emperor Limited
Eleni Anna Branou | 15 нояб. 2025 в 18:44
Paul Afolabi #:
Пожалуйста, могу ли я получить это для тестирования
Вы найдете его в статье в первом посте.
Разработка инструментария для анализа Price Action (Часть 60): Объективное построение трендовых линий по свингам для структурного анализа Разработка инструментария для анализа Price Action (Часть 60): Объективное построение трендовых линий по свингам для структурного анализа
Мы предлагаем подход к трендовым линиям на основе четких правил, который не опирается на опорные точки индикаторов и использует упорядоченные свинги, полученные непосредственно из ценовых данных. В статье разбираются выявление свингов, проверка их размера по ATR или фиксированным порогам, а также подтверждение восходящих и нисходящих структур, после чего эти правила реализуются на языке MQL5 без перерисовки и с избирательным выводом. Вы получаете четкий и воспроизводимый способ отслеживать структурные уровни поддержки и сопротивления, который надежно работает в разных рыночных условиях.
Разработка инструментария для анализа Price Action (Часть 59): Выявление точных пробоев при фрактальной консолидации с помощью геометрической асимметрии Разработка инструментария для анализа Price Action (Часть 59): Выявление точных пробоев при фрактальной консолидации с помощью геометрической асимметрии
Изучая широкий спектр сетапов пробоя, я заметил, что неудачные пробои редко были связаны с нехваткой волатильности и гораздо чаще – со слабой внутренней структурой. Это наблюдение легло в основу подхода, представленного в этой статье. Подход выявляет паттерны, в которых последний ценовой отрезок заметно превосходит предыдущий по длине, наклону и скорости, что служит явным признаком накопления импульса перед направленным расширением. Обнаруживая эти тонкие геометрические дисбалансы внутри консолидации, трейдер может заранее распознавать пробои с более высокой вероятностью еще до выхода цены из диапазона. Далее показано, как этот геометрический подход на основе фракталов преобразует структурный дисбаланс в точные сигналы пробоя.
Особенности написания экспертов Особенности написания экспертов
Написание и тестирование экспертов в торговой системе MetaTrader 4.
Переосмысливаем классические стратегии (Часть 19): Подробный разбор стратегий на пересечении скользящих средних Переосмысливаем классические стратегии (Часть 19): Подробный разбор стратегий на пересечении скользящих средних
В этой статье мы возвращаемся к классической стратегии пересечения скользящих средних и исследуем, почему она часто терпит неудачу на шумных, быстро меняющихся рынках. В ней представлены пять альтернативных методов фильтрации, предназначенных для улучшения качества сигнала и устранения слабых или убыточных сделок. Обсуждение показывает, как статистические модели могут обучаться и исправлять ошибки, которые пропускает человеческая интуиция и традиционные правила. Читатели получают более четкое представление о том, как модернизировать устаревшую стратегию, и о подводных камнях, связанных с опорой исключительно на такие показатели, как RMSE, в финансовом моделировании.