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


Дата создания: 2024-03-22 13:56:44 Последнее изменение: 2024-03-22 13:56:44
Копировать: 1 Количество просмотров: 501
1
Подписаться
1617
Подписчики

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

Обзор

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

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

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

  • Когда вы пересекаете медленную среднюю линию на быстрой, сделайте больше.
  • Сделайте пробел, когда скорость пересекает медленную среднюю
  • Когда у вас уже есть много, быстро пересекайте медленную среднюю линию под быстрой средней линией, сверните много и сделайте пустоту
  • Когда у вас есть свободный билет, пройдите медленную среднюю линию на скоростной средней линии, пусто и сделайте больше

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

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

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

Анализ риска

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

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

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

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

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

Резюме Summary

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

Исходный код стратегии
/*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')