Количественная торговая стратегия отслеживания тренда с пересечением двойных скользящих средних

SMA MA 趋势跟踪 均线交叉 交易信号 自动反转
Дата создания: 2025-03-25 14:58:39 Последнее изменение: 2025-03-25 14:58:39
Копировать: 0 Количество просмотров: 353
2
Подписаться
319
Подписчики

Количественная торговая стратегия отслеживания тренда с пересечением двойных скользящих средних Количественная торговая стратегия отслеживания тренда с пересечением двойных скользящих средних

Обзор

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

Стратегический принцип

В основе стратегии лежит взаимодействие двух простых скользящих средних (SMA):

  1. Краткосрочная скользящая средняя: по умолчанию на 9 циклов, отражающая более недавние ценовые движения
  2. Длительная скользящая средняя: по умолчанию на 21 цикл, отражает более длительные ценовые тенденции

Логика генерирования торговых сигналов:

  • Многоусловие: когда краткосрочная средняя линия пересекает долгосрочную среднюю линию вверх (ta.crossover), система генерирует многоусловие
  • Условия пустоты: система генерирует сигнал пустоты, когда краткосрочная средняя линия пересекает долгосрочную среднюю линию вниз (та.crossunder функция)

Процесс исполнения сделки:

  • При запуске многосигнала система сначала немедленно устраняет любые пустые позиции, а затем открывает новые.
  • Когда сигнал пустоты срабатывает, система сначала немедленно устраняет любые существующие позиции, а затем открывает новые.
  • Система четко обозначает цены входа на графике с помощью ярлыков, многоголовые ярлыки отображаются выше линии K, пустые ярлыки - ниже линии K

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

Стратегические преимущества

В результате глубокого анализа кода стратегии мы можем выделить следующие очевидные преимущества:

  1. Простая и понятная: четкая логика стратегии, без сложных комбинаций индикаторов или условных суждений, что позволяет трейдерам легко понимать и применять
  2. Визуальная интуиция: система рисует две средние линии на графике и различает их цветами (краткосрочная средняя линия - красная, долгосрочная средняя линия - синяя), а также визуально отображает входные точки и цены в виде ярлыков
  3. Автоматический обратный механизм: когда появляются новые сигналы, стратегия автоматически устраняет обратные позиции и создает новые позиции, гарантируя, что трейдер всегда следует за текущим трендом
  4. Сильная настраиваемость: пользователи могут настраивать источники цены и средний цикл в соответствии со своими предпочтениями, чтобы адаптироваться к различным рыночным условиям или временным рамкам торгов
  5. Вычисления в реальном времени: стратегия устанавливает параметр calc_on_every_tick=true, который обеспечивает вычисления при каждом изменении цены и предоставляет самые своевременные сигналы
  6. Безпараметрическая пересогласованность: стратегия использует только два среднелинейных параметра, снижая риск пересогласованности и повышая устойчивость стратегии в различных рыночных условиях
  7. Яркий указатель на этикетках: трейдер может четко видеть цену входа, чтобы облегчить управление рисками, заранее разместив этикетку на следующей позиции линии K

Стратегический риск

Несмотря на то, что эта стратегия была разработана в кратком и эффективном виде, существуют следующие потенциальные риски:

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

    • Решение: можно добавить дополнительные фильтрующие условия, такие как индикатор ADX, подтверждающий силу тренда, или установить минимальный срок удержания позиции
  2. Отсталость: скользящие средние по своей сути являются отсталыми, сигналы могут быть сделаны только тогда, когда тренд уже развился или близок к завершению

    • Решение: в сочетании с другими ведущими индикаторами, такими как RSI или MACD, или с использованием более коротких среднелинейных периодов для уменьшения отставания
  3. Риск ложного прорыва: цены могут пересечь среднюю линию и вернуться к прежней тенденции, что приведет к ложному сигналу

    • Решение: добавление механизмов подтверждения, например, требование, чтобы цена оставалась на определенное время или величину после перехода, чтобы инициировать торговлю
  4. Отсутствие механизмов остановки убытков: отсутствие четких установок для остановки убытков в текущей стратегии может привести к большим убыткам в сильной обратной ситуации

    • Решение: применение стратегии фиксированного или динамического остановки на основе волатильности
  5. Чувствительность параметров: эффективность стратегии чувствительна к выбору длины среднелинейного цикла, неправильные параметры могут привести к значительному изменению эффективности стратегии

    • Решение: провести обратную оптимизацию и найти комбинацию параметров, которые будут стабильно работать в различных рыночных условиях

Направление оптимизации стратегии

На основе глубокого анализа кода, я предлагаю следующие направления оптимизации:

  1. Добавление фильтра тренда: введение ADX, индикатора интенсивности тренда или оценки относительной позиции цены к средней линии, генерирование сигналов только в подтвержденной трендовой среде, избежание частых торгов на колеблющихся рынках

    • Пояснение: Это уменьшит количество ложных сигналов и повысит эффективность торговли.
  2. Внедрение механизма динамического остановки: установление динамического уровня остановки на основе ATR или других показателей волатильности, защита прибыли и ограничение максимального риска для одной сделки

    • Эффективное управление рисками является ключом к долгосрочному успеху.
  3. Оптимизация времени входа: рассмотреть возможность использования небольших циклов подтверждения или ожидания обратного вызова после генерации сигнала для получения лучшей цены исполнения

    • Пояснение: оптимизация цены входа может значительно повысить долгосрочную доходность.
  4. Повышение фильтрации объемов сделок: увеличение подтверждения объемов сделок на основе перекрестных сигналов и выполнение сделок только в том случае, если объем сделок также поддерживает изменение направления

    • Пояснение: объем сделок является важным фактором подтверждения эффективности изменения цен
  5. Реализация адаптивных среднелинейных циклов: автоматическая коррекция среднелинейных циклов в зависимости от волатильности рынка, использование более длинных циклов в условиях высокой волатильности и более коротких циклов в условиях низкой волатильности

    • Пояснение: Это позволяет стратегии лучше адаптироваться к различным состояниям и циклам рынка.
  6. Добавление механизма для открытия и сохранения складов в группах: вместо того, чтобы создавать все склады за один раз, они будут создаваться поэтапно, чтобы снизить риск выбора временных точек

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

Подвести итог

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

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

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

Исходный код стратегии
/*backtest
start: 2025-01-01 00:00:00
end: 2025-03-24 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//@version=6
//
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// @author = Da_mENIZ
// © denis_zvegelj
// last change	20.Mar.2025
//
// Simple MA Crossover strategy that shows on the chart with Long/Short indicators. Feel free to use it to suit 
// your needs
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
strategy("DZ Simple MA Crossover Strategy", shorttitle="DZ_MACross", overlay=true, calc_on_every_tick=true)

// Define the moving average lengths
i_src_price = input.source  (open, "Price source",                                                                                                                     group="Main Settings")
i_shMA_len  = input.int		(9, 	"Short MA Length", 		minval=1,																									group="Main Settings")
i_loMA_len  = input.int		(21,	"Long MA Length", 		minval=6,																									group="Main Settings")

// Calculate the moving averages
short_MA = ta.sma(i_src_price, i_shMA_len)
long_MA = ta.sma(i_src_price, i_loMA_len)

// Plot the moving averages on the chart
plot(short_MA, color=color.red, linewidth=2, title="Short MA")
plot(long_MA, color=color.blue, linewidth=2, title="Long MA")

// Generate the buy and sell signals
long_Cond = ta.crossover(short_MA, long_MA)
short_Cond = ta.crossunder(short_MA, long_MA)

// Place the orders based on conditions
if (long_Cond)
    strategy.close("Short", immediately = true, comment = "Close")
    strategy.entry("Long", strategy.long, comment = "Enter")
    label.new(bar_index+1, open, "Long\n" + str.tostring(open), style=label.style_label_down, color=color.blue, textcolor=color.white, yloc=yloc.abovebar)



if (short_Cond)
    strategy.close("Long", immediately = true, comment = "Close")
//    strategy.entry("Short", strategy.short, comment = "Short\n" + str.tostring(open))
    strategy.entry("Short", strategy.short, comment = "Enter")
    label.new(bar_index+1, open, "Short\n" + str.tostring(open), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)