Двойная скользящая средняя тенденция в соответствии со стратегией

Автор:Чао Чжан, Дата: 2024-03-22 13:56:44
Тэги:

img

Обзор

Эта стратегия использует перекресток двух скользящих средних для определения изменений тенденций на рынке и принимает решения о покупке/продаже на основе направления тренда.

Принцип стратегии

В основе этой стратегии лежат две скользящие средние: быстрый MA (период 32 по умолчанию) и медленный MA (также период 32 по умолчанию, регулируемый с помощью параметров). Когда цена закрытия пересекает канал, образованный этими двумя MA, это указывает на изменение тренда, и стратегия генерирует соответствующие сигналы покупки / продажи:

  • Когда быстрый MA пересекает над медленным MA, идите длинный
  • Когда быстрый MA пересекает ниже медленный MA, идти короткий
  • При уже состоянии длинной позиции, если быстрый MA пересекается ниже медленного MA, закрыть длинный и перейти на короткий
  • При наличии короткой позиции, если быстрый MA пересекает медленный MA, закрыть короткий и пойти длинный

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

Анализ преимуществ

  1. Следование тенденциям: используя кроссоверы MA для выявления тенденций, стратегия может эффективно отслеживать и отслеживать основные тенденции рынка.
  2. Простая и простая в использовании: логика стратегии ясна, используя только два MA. Настройки параметров просты и просты в понимании и освоении.
  3. Широкое применение: стратегия широко применима к различным инструментам и временным рамкам и может использоваться на различных рынках.
  4. Своевременный стоп-лосс: когда тенденция меняется, стратегия может быстро закрыть позиции, чтобы контролировать потери.

Анализ рисков

  1. Плохая производительность на рыночных рынках: когда рынок находится в боковой модели, частые перекрестные сигналы приведут к чрезмерной торговле и потерям.
  2. Недостаточная реакция на экстремальные движения: стратегия может слишком медленно реагировать на экстремальные ситуации (такие как быстрые всплески или падения), что приводит к большим потерям.
  3. Трудность в оптимизации параметров: оптимизация параметров MA требует большого количества исторических данных и обратного тестирования.

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

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

  1. Подтверждение тренда: после генерации торгового сигнала могут быть включены дополнительные индикаторы подтверждения тренда, такие как MACD или DMI, для дальнейшей фильтрации сигналов.
  2. Динамические стоп-лосс: для лучшего контроля риска используйте такие индикаторы, как ATR, для установки динамических уровней стоп-лосса вместо фиксированных процентных или ценовых стоп-лостов.
  3. Размер позиций: динамически корректировать размеры позиций на основе силы тренда, волатильности и других показателей. Увеличить позиции, когда тенденция сильна, и уменьшить, когда она слаба.
  4. Анализ с использованием нескольких временных рамок: рассмотрим систему с использованием нескольких временных рамок, например, сочетание ежедневных и 4-часовых МР, чтобы отфильтровать и подтвердить друг друга и улучшить точность определения тренда.
  5. Адаптивные параметры: внедрить адаптивные методы оптимизации параметров, такие как генетические алгоритмы, чтобы параметры стратегии могли адаптироваться к различным рыночным условиям.

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

Резюме

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

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

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


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

//study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true)
strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15)

// Backtest Date Range
start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530'))
end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530'))
backtest_range = true

// Inputs
maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA')
sslLen = input(title='SSL Length', defval=32)
showCross = input(title='Show Crossover?', defval=true)
showEntry = input(title='Show Entry?', defval=true)
showTrend = input(title='Show Trend Colors?', defval=true)

// Calc MA for SSL Channel
calc_ma(close, len, type) =>
    float result = 0
    if type == 'SMA'  // Simple
        result := ta.sma(close, len)
        result
    if type == 'EMA'  // Exponential
        result := ta.ema(close, len)
        result
    if type == 'WMA'  // Weighted
        result := ta.wma(close, len)
        result    
    result

// Add SSL Channel
maHigh = calc_ma(high, sslLen, maType)
maLow = calc_ma(low, sslLen, maType)
Hlv = int(na)
Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? maHigh : maLow
sslUp = Hlv < 0 ? maLow : maHigh
ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red)
ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime)

// Conditions
longCondition = ta.crossover(sslUp, sslDown)
shortCondition = ta.crossover(sslDown, sslUp)

// Strategy
if shortCondition
    strategy.close('Long', comment='Long Exit', alert_message='JSON')

if longCondition
    strategy.close('Short', comment='Short Exit', alert_message='JSON')

if backtest_range and longCondition
    strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON')

if backtest_range and shortCondition
    strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON')


// Plots
fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')


Больше