Динамическая стратегия SMA-ATR

Автор:Чао Чжан, Дата: 2024-02-06 10:06:29
Тэги:

img

Обзор

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

Логика стратегии

Стратегия использует SMA 200 для определения направления основного тренда и устанавливает линию стоп-лосса динамически с ATR 14, реализуя динамическую последующую стоп-лосс. В частности, сигнал покупки запускается, когда цена закрытия прорывается через SMA 200 плюс ATR 14. Этот прорыв означает, что текущий рынок остается в восходящей тенденции. Сигнал стоп-лосса запускается, когда цена закрытия прорывается через SMA 200 минус ATR 14. Этот прорыв означает, что восходящая тенденция нарушена.

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

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

  1. Высокое соотношение прибыли/убытка.

  2. Динамическая стоп-лосс с ATR уменьшает влияние спорадических шоков на рынке.

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

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

Некоторые риски этой стратегии должны быть рассмотрены:

  1. Риск изменения тренда. Сама стратегия не может определить изменение тренда, что может привести к огромным потерям, если внезапно произойдет изменение тренда.

  2. Риск отставания SMA. SMA имеет определенный эффект отставания, который не может мгновенно отражать изменение тренда.

  3. Неправильное установление параметров ATR может повлиять на эффективность стратегии.

Решения:

  1. Добавить другие индикаторы для определения обратного тренда, например, MACD.
  2. Испытайте различные комбинации параметров, чтобы найти оптимальный баланс.

Руководство по оптимизации

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

  1. Испытать различные комбинации параметров SMA и ATR, чтобы найти оптимальный.

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

  3. Оптимизировать механизм стоп-лосса с отслеживанием стоп-лосса, движением стоп-лосса и т.д.

  4. Объедините фундаментальные факторы, чтобы избежать покупки акций с слабыми фундаментальными показателями.

Заключение

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


/*backtest
start: 2023-01-30 00:00:00
end: 2024-02-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA+ATR Strategie", overlay=true)

// Benutzer-Inputs für SMA, ATR und die Anzeigeoption
smaLength = input(200, title="SMA Länge")
atrLength = input(14, title="ATR Länge")
showSMAandATR = input(true, title="Zeige SMA und ATR-Bänder")

// Berechnung von SMA und ATR
sma = ta.sma(close, smaLength)
atr = ta.atr(atrLength)

// Kauf- und Verkaufslogik basierend auf SMA und ATR
buyCondition = close > sma + atr
sellCondition = close < sma - atr

// Variable zum Speichern des Eintrittspreises
var float entryPrice = na

// Kauf- und Verkaufssignale
if (buyCondition)
    strategy.entry("Buy", strategy.long)
    entryPrice := close // Speichere den Eintrittspreis

if (sellCondition)
    // Nur wenn ein Kauf stattgefunden hat
    if not na(entryPrice)
        // Berechne die Performance seit dem Kaufsignal
        performanceSinceBuy = ((close - entryPrice) / entryPrice) * 100
        // Anzeigen der Performance
        // Wähle die Box-Farbe basierend auf dem Vorzeichen der Performance
        plColor = performanceSinceBuy >= 0 ? color.green : color.red
        // Anzeigen der Performance in der entsprechenden Farbe
        plBox = "P/L: " + str.tostring(performanceSinceBuy, "#.##") + "%"
        label.new(bar_index, high, text=plBox, color=plColor, textcolor=color.white, style=label.style_label_center, yloc=yloc.price)
        
    // Schließe den Trade und setze den Eintrittspreis zurück
    strategy.close("Buy")
    entryPrice := na

// Optionale Anzeige von SMA und ATR-Band
plot(showSMAandATR ? sma : na, color=color.blue, title="SMA 200")
plot(showSMAandATR ? sma + atr : na, color=color.green, title="SMA 200 + ATR")
plot(showSMAandATR ? sma - atr : na, color=color.red, title="SMA 200 - ATR")

Больше