Samsuga SuperTrend MACD-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-03-11 11:24:20
Tags:

img

Übersicht

Diese Strategie kombiniert den SuperTrend-Indikator und den MACD-Indikator, um kleine Trends für den Gewinn zu erfassen. Sie verwendet den SuperTrend-Indikator, um den aktuellen Markttrend und den MACD-Indikator als Hilfsbedingung für den Ein- und Ausstieg zu bestimmen.

Strategieprinzip

  1. Verwenden Sie die Funktion ta.supertrend zur Berechnung des SuperTrend-Indikators mit Parametern für den ATR-Zeitraum und dem Multiplikatorfaktor.
  2. Der SuperTrend-Indikator wird in der Regel von einem Wert von 0 auf einen Wert von 0 angezeigt, wenn der Trend von 0 auf einen Wert von 0 liegt.
  3. Mit der Funktion request.security erhalten Sie die MACD-Indikatorwerte für den 30-minütigen Zeitrahmen, einschließlich der MACD-Linie, der Signallinie und des Histogramms.
  4. Bei einem Aufwärtstrend, wenn das MACD-Histogramm größer als 0 ist, öffnen Sie eine Long-Position und schließen Sie jede vorherige Short-Position.
  5. Bei einem Abwärtstrend, wenn das MACD-Histogramm kleiner als 0 ist, wird eine Short-Position eröffnet und jede vorherige Long-Position geschlossen.

Analyse der Vorteile

  1. Kombiniert Trend- und Dynamikindikatoren, so dass es sich gut an unterschiedliche Marktbedingungen anpassen kann.
  2. Verwendet einen längeren MACD-Zeitrahmen als Hilfsbedingung, die einige falsche Signale effektiv herausfiltern kann.
  3. Die Strategielogik ist einfach und unkompliziert, leicht verständlich und umsetzbar und für Anfänger geeignet.
  4. Die Strategieparameter sind anpassbar und können für verschiedene Märkte und Instrumente optimiert werden.

Risikoanalyse

  1. Die Strategie kann häufige Handelssignale in unruhigen Märkten erzeugen, was zu einer hohen Handelsfrequenz und Schlupfkosten führt.
  2. Der SuperTrend-Indikator ist empfindlich auf Parameter-Einstellungen angewiesen und verschiedene Parameterwerte können unterschiedliche Ergebnisse liefern.
  3. Der MACD-Indikator kann von dem Preis abweichen, was zu falschen Handelssignalen führt.
  4. Die Strategie enthält keine Stop-Loss-Maßnahmen, die sie bei schwacher Trendkontinuität oder unerwarteten Ereignissen einem größeren Risiko aussetzen können.

Optimierungsrichtung

  1. Es sollte in Betracht gezogen werden, weitere Filterbedingungen hinzuzufügen, wie z. B. einen Preisdurchbruch durch wichtige Unterstützungs-/Widerstandsniveaus, Änderungen des Handelsvolumens usw., um die Signalzuverlässigkeit zu verbessern.
  2. Bei unruhigen Märkten sollten Sie einen kürzeren MACD-Indikator oder andere Indikatoren verwenden, die für Bereichsmarkt geeignet sind, um den Trend zu bestimmen.
  3. Einbeziehen Sie Stop-Loss-Maßnahmen, wie beispielsweise Fixpoint-Stop-Loss, Trailing-Stop-Loss usw., um das maximale Risiko pro Handel zu kontrollieren.
  4. Optimierung der Parameter für verschiedene Märkte und Instrumente, um die am besten geeigneten Parameterkombinationen zu finden.

Schlussfolgerung

Durch die Kombination des SuperTrend-Indikators und des MACD-Indikators erfasst diese Strategie kleine Trends und berücksichtigt gleichzeitig die Trendkontinuität, was sie zu einer relativ umfassenden und ausgewogenen Strategie macht. Die Stärken der Strategie liegen in ihrer klaren Logik, der Einfachheit des Verständnisses und der Umsetzung und der Verwendung eines längeren Zeitrahmens MACD-Indikators als Hilfsbedingung, um falsche Signale effektiv auszufiltern. Die Strategie birgt jedoch auch einige Risiken, wie das Potenzial für häufigen Handel in unbeständigen Märkten, Empfindlichkeit gegenüber Parameter-Einstellungen und Mangel an Stop-Loss-Maßnahmen. Um diese Risiken zu beheben, können Verbesserungen durch Hinzufügen von mehr Filterbedingungen, Optimierung von Parametern, Einbeziehung von Stop-Losses usw. vorgenommen werden. Insgesamt kann diese Strategie als grundlegender Strategierahmen dienen, der mit kontinuierlicher Optimierung und Verbesserung das Potenzial hat, eine konsequent prof


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Samsuga supertrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


atrPeriod = input.int(7,    "ATR Length", minval = 1)
factor =    input.float(1.0, "Factor",     minval = 0.01, step = 0.01)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

supertrend := barstate.isfirst ? na : supertrend
upTrend =    plot(direction <= 0 ? supertrend : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend =  plot(direction <= 0 ? na : supertrend, "Down Trend", color = color.red,   style = plot.style_linebr)
bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)
longcondition = direction[1] > direction 
shortCondition = direction[1] < direction 

macdp1 = 3
macdp2=10
macdp3=6

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = "30",expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// plot(macdLine,   title = "MACD",   color = #2962FF)
// plot(signalLine, title = "Signal", color = #FF6D00)
// 8, 21, 5
// 8,13,9
// 12,26,9
//  1--> 3, 17, 5
// 3, 10, 16
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
//  /////////----------------METHOD 1-----------------////////////////
// if(longcondition)
//     if(strategy.opentrades>0)
//         strategy.close("Long","Prev Exit", immediately = true)
//     if( histLine[0] > 0.1)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long")

    
// else if(shortCondition and strategy.openprofit<=0.1) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 2-----------------////////////////
// if(longcondition)
//     if(histLine[0] > 0)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long" )
//         strategy.exit("Long", loss = close*0.2)


    
// else if(shortCondition ) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 3-----------------////////////////
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
if(longcondition)
    if(histLine[0] > 0)    
        strategy.close("Short",comment = "E-S", alert_message = "E-S",disable_alert = true)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
else if(shortCondition) 
    if(histLine[0] < 0)    
        strategy.close("Long",comment = "E-L",alert_message = "E-L",disable_alert = true)
        strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")

Mehr