Strategie basierend auf dem Supertrend-Indikator und dem einfachen gleitenden Durchschnitt


Erstellungsdatum: 2024-01-16 15:19:09 zuletzt geändert: 2024-01-16 15:19:09
Kopie: 0 Klicks: 616
1
konzentrieren Sie sich auf
1617
Anhänger

Strategie basierend auf dem Supertrend-Indikator und dem einfachen gleitenden Durchschnitt

Überblick

Die Übertrend-Doppel-Gleichgewichts-Strategie ist eine quantitative Handelsstrategie, die auf dem Übertrend-Indikator und dem einfachen gleitenden Durchschnitt basiert. Die Strategie verwendet den Übertrend-Indikator, um die Richtung des Markttrends zu bestimmen, und filtert dann in Verbindung mit dem 200-Tage-Simplem-Gleitenden Durchschnitt, um Positionen in der Richtung des großen Trends zu eröffnen und mehr zu machen.

Strategieprinzip

Die Strategie verwendet zwei Indikatoren:

  1. Der Hypertrend-Indikator: Er berechnet Auf- und Abwärtskurse anhand der realen ATR-Wellenlänge und eines Multiplikators. Wenn der Schlusskurs über der Oberbahn liegt, ist er auf Kurs, und wenn er unter der Unterbahn liegt, ist er auf Kurs.

  2. Ein 200-Tage-Simplemoving-Average: Es ist ein arithmetischer Durchschnitt der letzten 200 Tage der Schließungspreise. Die Schließungspreise, die höher als die Linie sind, sind bullish und die Linie, die niedriger ist, ist bullish.

Strategische Logik:

  1. Wenn der Übertrend-Indikator positiv ist (der Wert des Übertrend-Indikators ist größer als 0) und der Schlusskurs oberhalb der 200-Tages-Durchschnittslinie liegt, wird ein Übertrend-Eintritt durchgeführt.

  2. Eintritt in einen Short-Off, wenn der Übertrend-Indikator nach unten geht (< 0) und der Schlusskurs unter dem 200-Tagesdurchschnitt liegt.

  3. Wenn der Übertrend-Indikator mit dem vorherigen Signal umgekehrt ist, ist der Ausgang ausgeglichen.

  4. Die Stop-Loss-Einstellung beträgt 25%.

Analyse der Stärken

Die Strategie kombiniert die Übertrend-Indikatoren, um die kurzfristige Tendenz zu bestimmen, und die 200-Tage-Durchschnittslinie, um die langfristige Tendenz zu bestimmen. Sie filtert effektiv falsche Durchbrüche und reduziert die Handelsfrequenz, während die Gewinnrate erhöht wird. In großen Märkten ist der Trend eindeutig genug, um einen großen Stop-Loss- und einen großen Gewinnraum zu haben.

Risikoanalyse

Das Hauptrisiko dieser Strategie besteht darin, dass ein hoher Stop-Loss-Margin und ein hoher Leverage das Risiko einer gezwungenen Liquidation erhöhen. Darüber hinaus erzeugen Übertrend-Indikatoren zusätzliche Signale, wenn sich die Marktlage zusammenbildet, was die Häufigkeit und die Kosten des Handels erhöht.

Das Risiko kann durch eine angemessene Anpassung der ATR-Zyklen, der Multiplikatorparameter und der Stop-Loss-Marge verringert werden.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Anpassung der ATR-Periode und der Multiplikatorparameter zur Optimierung der Parameter für den Übertrendindikator;

  2. Versuchen Sie, andere Gleichgewichtsindikatoren wie EMA, VIDA und andere zu ersetzen.

  3. Hinzufügen anderer Hilfsindikatoren, wie BOLL-Kanäle oder KD-Indikatoren, um die Signalfilter weiter zu filtern;

  4. Optimierung von Stop-Loss-Strategien, wie z. B. Umstellung auf die Verlust-Gleichgewichtspunkte oder Stop-Loss-Strategien auf Großebene.

Zusammenfassen

Diese Strategie ist sehr praktisch für die Gesamtheit, sowohl die kurzfristige Trendentscheidung als auch die langfristige Trendentscheidung berücksichtigt. Die Stop-Loss-Einstellung ist auch vernünftig. Durch die Anpassung und Optimierung der Parameter können noch bessere Effekte erzielt werden, die es wert sind, in der Praxis zu überprüfen und zu verwenden.

Strategiequellcode
/*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