Strategie für einen Supertrend mit doppelten gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 2024-01-16 15:19:09
Tags:

img

Übersicht

Die Super Trend Dual Moving Average Strategie ist eine quantitative Handelsstrategie, die auf dem Super Trend Indikator und dem einfachen gleitenden Durchschnitt basiert.

Strategie Logik

Die Strategie setzt auf zwei Indikatoren:

  1. Super Trend Indikator: Berechnet die oberen und unteren Schienen basierend auf der wahren Volatilität ATR und einem Multiplikator. Wenn der Schlusskurs höher als die oberen Schienen ist, zeigt er eine bullische Sicht an. Wenn er niedriger als die unteren Schienen ist, zeigt er eine bärische Sicht an.

  2. 200-tägiger einfacher gleitender Durchschnitt: Er erfasst den arithmetischen Durchschnitt der Schlusskosten der letzten 200 Tage. Wenn der Schlusskurs über dieser Linie liegt, stellt er einen großen Aufwärtstrend dar. Wenn er unter dieser Linie liegt, stellt er einen großen Bärentrend dar.

Strategie Logik:

  1. Wenn der Super Trend-Indikator ein bullisches Signal gibt (Super Trend-Wert größer als 0) und der Schlusskurs höher als der 200-Tage-MA ist, gehen Sie lang.

  2. Wenn der Super Trend-Indikator ein bärisches Signal gibt (Super Trend-Wert kleiner als 0) und der Schlusskurs unter dem 200-Tage-MA liegt, wird kurz gehandelt.

  3. Schließen Sie die Position, wenn der Super Trend-Indikator ein umgekehrtes Signal gegenüber der vorherigen gibt.

  4. Der Stop-Loss beträgt 25%.

Analyse der Vorteile

Die Strategie kombiniert den Super Trend-Indikator zur Bestimmung des kurzfristigen Trends und den 200-Tage-MA zur Bestimmung des langfristigen Trends, der falsche Ausbrüche effektiv filtern, die Handelsfrequenz reduzieren und gleichzeitig die Gewinnrate verbessern kann.

Risikoanalyse

Das Hauptrisiko dieser Strategie besteht darin, dass der Stop-Loss-Bereich relativ groß ist. Es kann das Risiko einer erzwungenen Liquidation bei hohen Hebelwirkungssituationen erhöhen. Darüber hinaus wird der Super Trend-Indikator redundante Signale erzeugen, wodurch die Transaktionskosten und die Handelsfrequenz erhöht werden.

Das Risiko kann durch angemessene Anpassung der ATR-Periode, Multiplikatorparameter und Stop-Loss-Bereich verringert werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Anpassung der ATR-Periode und Multiplikatorparameter zur Optimierung des Super Trend-Indikators.

  2. Versuchen Sie, andere MA-Indikatoren wie EMA und VIDYA zu ersetzen.

  3. Zusätzliche Hilfsindikatoren wie BOLL-Kanal oder KD-Indikator für eine weitere Signalfilterung hinzufügen.

  4. Optimieren Sie die Stop-Loss-Strategie, z. B. bewegen Sie sie zu einem Breakeven-Punkt oder zu einem Trailing-Stop zusammen mit höheren Zeitrahmen.

Zusammenfassung

Insgesamt ist diese Strategie sehr praktisch. Sie berücksichtigt sowohl kurzfristige Trendbeurteilung als auch langfristige Trendbeurteilung mit angemessenen Stop-Loss-Einstellungen. Sie kann durch Parameteranpassung und Optimierung bessere Ergebnisse erzielen, was eine echte Handelsverifizierung und Anwendung wert ist.


/*backtest
start: 2023-12-16 00:00:00
end: 2024-01-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5

strategy("Smart SuperTrend Strategy ", shorttitle="ST Strategy", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.01)


// Parametry wskaźnika SuperTrend
atrLength = input(10, title="Lenght ATR")
factor = input(3.0, title="Mult.")

// Parametry dla SMA
lengthSMA = input(200, title="Lenght SMA")

// Parametry dla Stop Loss
sl = input.float(25.0, '% Stop Loss', step=0.1)

// Obliczanie ATR
atr = ta.atr(atrLength)

// Obliczanie podstawowej wartości SuperTrend
up = hl2 - (factor * atr)
dn = hl2 + (factor * atr)

// Obliczanie 200-SMA
sma200 = ta.sma(close, lengthSMA)

// Inicjalizacja zmiennych
var float upLevel = na
var float dnLevel = na
var int trend = na
var int trendWithFilter = na

// Logika SuperTrend
upLevel := close[1] > upLevel[1] ? math.max(up, upLevel[1]) : up
dnLevel := close[1] < dnLevel[1] ? math.min(dn, dnLevel[1]) : dn

trend := close > dnLevel[1] ? 1 : close < upLevel[1] ? -1 : nz(trend[1], 1)

// Filtr SMA i aktualizacja trendWithFilter
trendWithFilter := close > sma200 ? math.max(trend, 0) : math.min(trend, 0)

// Logika wejścia
longCondition = trend == 1  
shortCondition = trend == -1  

// Wejście w pozycje
if (longCondition) and  close > sma200
    strategy.entry("Long", strategy.long)
if (shortCondition) and close < sma200
    strategy.entry("Short", strategy.short)

// Warunki zamknięcia pozycji
Long_close = trend == -1 and close > sma200
Short_close = trend == 1  and close < sma200

// Zamknięcie pozycji
if (Long_close)
    strategy.close("Long")
if (Short_close)
    strategy.close("Short")

// Kolory superTrendu z filtrem sma200
trendColor = trendWithFilter == 1 ? color.green : trendWithFilter == -1 ? color.red : color.blue

//ploty
plot(trendWithFilter == 1 ? upLevel : trendWithFilter == -1 ? dnLevel : na, color=trendColor, title="SuperTrend")

// Stop Loss ( this code is from author RafaelZioni, modified by wielkieef )
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
// --------------------------------------------------------------------------------------------------------------------

strategy.exit('SL',loss=per(sl))



//by wielkieef


Mehr