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

MA EMA SMA CROSSOVER
Дата создания: 2025-02-24 10:15:28 Последнее изменение: 2025-02-24 10:15:28
Копировать: 0 Количество просмотров: 423
2
Подписаться
319
Подписчики

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

Обзор

Стратегия представляет собой торговую систему, основанную на скрещивании скользящих средних, поддерживающую два типа скользящих средних - EMA и SMA, и предоставляющую оптимизированные параметры по умолчанию для нескольких временных периодов, таких как 1-часовой, 4-часовой, дневная, круговая и двухугольная. Система генерирует торговые сигналы путем скрещивания скользящих средних и медленных скользящих средних и обеспечивает визуализацию заполнения ценовых зон.

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

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

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

  1. Наука параметрической оптимизации: оптимизация исторических данных, предоставляя оптимизированные комбинации параметров для разных временных периодов
  2. Гибкость: поддержка настройки настраиваемых параметров, изменение длины и типа скользящих средних в зависимости от рыночной ситуации
  3. Визуальная интуиция: разграничение тенденций пополнения пробелов цветами, четко видны торговые сигналы
  4. Многоцикличность: специально оптимизированные параметры для различных периодов времени
  5. Полное представление информации: текущие параметры и параметры политики отображаются в режиме реального времени через информационную панель

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

  1. Риск отставания: скользящие средние по своей сути являются отстающими показателями, которые могут задерживаться при быстрых колебаниях рынка
  2. Не применяется для рынка волатильности: частое перекрестное сигнализирование может привести к непрерывным убыткам в условиях волатильности
  3. Параметрозависимость: параметры оптимизации предоставлены, но могут потребовать корректировки в зависимости от конкретных ситуаций на реальных рынках
  4. Изменения в рыночных условиях: параметры, оптимизированные на основе исторических данных, могут быть недействительны при изменении рыночных условий в будущем

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

  1. Добавление фильтра тренда: можно добавить трендовые индикаторы, такие как ADX, чтобы выполнять торговые сигналы только в случае сильной тенденции
  2. Введение скорректировки волатильности: параметры скорректировки скользящих средних в зависимости от динамики волатильности рынка
  3. Оптимизированный механизм остановки убытков: может включать в себя динамическую позицию остановки убытков с установкой ATR
  4. Увеличение подтверждения объема сделок: добавление анализа объема сделок при генерации сигнала, повышение надежности сигнала
  5. Разработка адаптивных параметров: исследование и разработка системы параметров, которые могут автоматически корректироваться в соответствии с состоянием рынка

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

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

Исходный код стратегии
/*backtest
start: 2024-07-12 00:00:00
end: 2025-02-22 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("MA Crossover [ClémentCrypto]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000,process_orders_on_close=true)

// Groupe pour le choix entre preset et personnalisé
usePreset = input.bool(title="Utiliser Preset", defval=true, group="Mode Selection")

// Inputs pour la stratégie
timeframeChoice = input.string(title="Timeframe Preset", defval="1H", options=["1H", "4H", "1D", "1W", "2W"], group="Preset Settings")
tradeDirection = input.string(title="Trading Direction", defval="Long Only", options=["Long Only", "Short Only", "Both Directions"], group="Strategy Settings")

// Paramètres personnalisés MA
customFastLength = input.int(title="Custom Fast MA Length", defval=23, minval=1, group="Custom MA Settings")
customSlowLength = input.int(title="Custom Slow MA Length", defval=395, minval=1, group="Custom MA Settings")
customMAType = input.string(title="Custom MA Type", defval="EMA", options=["SMA", "EMA"], group="Custom MA Settings")

// Paramètres MA optimisés pour chaque timeframe
var int fastLength = 0
var int slowLength = 0
var string maType = ""

if usePreset
    if timeframeChoice == "1H"
        fastLength := 23
        slowLength := 395
        maType := "EMA"
    else if timeframeChoice == "4H"
        fastLength := 41
        slowLength := 263
        maType := "SMA"
    else if timeframeChoice == "1D"
        fastLength := 8
        slowLength := 44
        maType := "SMA"
    else if timeframeChoice == "1W"
        fastLength := 32
        slowLength := 38
        maType := "SMA"
    else if timeframeChoice == "2W"
        fastLength := 17
        slowLength := 20
        maType := "SMA"
else
    fastLength := customFastLength
    slowLength := customSlowLength
    maType := customMAType

// Calcul des moyennes mobiles
fastMA = maType == "SMA" ? ta.sma(close, fastLength) : ta.ema(close, fastLength)
slowMA = maType == "SMA" ? ta.sma(close, slowLength) : ta.ema(close, slowLength)

// Conditions de trading simplifiées
longEntier = ta.crossover(fastMA, slowMA)
longExit = ta.crossunder(fastMA, slowMA)
shortEntier = ta.crossunder(fastMA, slowMA)
shortExit = ta.crossover(fastMA, slowMA)

// Définition des couleurs
var BULL_COLOR = color.new(#00ff9f, 20)
var BEAR_COLOR = color.new(#ff0062, 20)
var BULL_COLOR_LIGHT = color.new(#00ff9f, 90)
var BEAR_COLOR_LIGHT = color.new(#ff0062, 90)

// Couleurs des lignes MA
fastMAColor = fastMA > slowMA ? BULL_COLOR : BEAR_COLOR
slowMAColor = color.new(#FF6D00, 60)

// Gestion des positions
if tradeDirection == "Long Only"
    if (longEntier)
        strategy.entry("Long", strategy.long)
    if (longExit)
        strategy.close("Long")
        
else if tradeDirection == "Short Only"
    if (shortEntier)
        strategy.entry("Short", strategy.short)
    if (shortExit)
        strategy.close("Short")
        
else if tradeDirection == "Both Directions"
    if (longEntier)
        strategy.entry("Long", strategy.long)
    if (longExit)
        strategy.close("Long")
    if (shortEntier)
        strategy.entry("Short", strategy.short)
    if (shortExit)
        strategy.close("Short")

// Plots
var fastMAplot = plot(fastMA, "Fast MA", color=fastMAColor, linewidth=2)
var slowMAplot = plot(slowMA, "Slow MA", color=slowMAColor, linewidth=1)
fill(fastMAplot, slowMAplot, color=fastMA > slowMA ? BULL_COLOR_LIGHT : BEAR_COLOR_LIGHT)



// Barres colorées
barcolor(fastMA > slowMA ? color.new(BULL_COLOR, 90) : color.new(BEAR_COLOR, 90))