Dynamische Intraday-Lang-Short-Balancing-Strategie, die gleitenden Durchschnitt und Supertrend kombiniert

Schriftsteller:ChaoZhang, Datum: 2024-03-11 11:33:47
Tags:

img

Strategieübersicht

Die Dynamic Intraday Long-Short Balancing Strategy Combining Moving Average and Supertrend ist eine quantitative Handelsstrategie, die in Pine ScriptTM 5 geschrieben wurde. Die Strategie nutzt den MACD-Indikator und den Supertrend-Indikator, um Trendchancen auf dem Markt zu erfassen und gleichzeitig das Risiko durch dynamische Long-Short-Switching und Stop-Loss/Take-Profit zu kontrollieren.

Strategieprinzipien

Der Kern dieser Strategie besteht darin, den MACD-Indikator und den Supertrend-Indikator zu kombinieren, um die Trendrichtung des Marktes zu bestimmen.

  1. Wenn sich der Supertrend-Indikator ändert, zeigt er eine Umkehr des Trends an.
  2. Verwenden Sie das Histogramm des MACD-Indikators, um die Veränderung der Dynamik zu beurteilen. Wenn das MACD-Histogramm von negativ auf positiv wechselt, zeigt es eine Zunahme der Aufwärtsdynamik an; wenn das MACD-Histogramm von positiv auf negativ wechselt, zeigt es eine Zunahme der Abwärtsdynamik an.
  3. Öffnen einer Long-Position, wenn sowohl der Supertrend-Indikator als auch der MACD-Indikator ein Long-Signal geben; Öffnen einer Short-Position, wenn sowohl der Supertrend-Indikator als auch der MACD-Indikator ein Short-Signal geben.
  4. Schließen Sie alle Positionen zu einer festgelegten Zeit (z. B. 15:15) an jedem Handelstag, um ein Übernachtungsrisiko zu vermeiden.
  5. Wiedereröffnung von Positionen an einem neuen Handelstag (z. B. um 9:30 Uhr) gemäß den Indikatoren Supertrend und MACD.

Durch dynamisches Long-Short-Switching kann sich die Strategie an Marktveränderungen anpassen und Trendchancen erfassen.

Strategische Vorteile

  1. Trendverfolgung: Durch die Kombination des Supertrend-Indikators und des MACD-Indikators kann die Strategie Trendchancen auf dem Markt effektiv erfassen.
  2. Dynamisches Long-Short-Switching: Die Strategie passt die Positionsrichtung dynamisch an Veränderungen der Indikatoren an und passt sich den Marktveränderungen an.
  3. Risikokontrolle: Durch das Schließen von Positionen zu fester Zeit und dynamisches Long-Short-Switching kann die Strategie das Risiko relativ gut kontrollieren.
  4. Parameterflexibilität: Die Parameter der Strategie (z. B. ATR-Zeitraum, Faktor usw.) können an die Merkmale des Marktes und persönliche Vorlieben angepasst werden, was eine gewisse Flexibilität bietet.

Strategische Risiken

  1. Risiko eines Ausfalls des Indikators: In einigen Marktumgebungen können der MACD-Indikator und der Supertrend-Indikator falsche Signale geben, was zu einem Strategieversagen führt.
  2. Parameteroptimierungsrisiko: Die Leistung der Strategie hängt von der Wahl der Parameter ab, und unangemessene Parameter können zu einer schlechten Strategieleistung führen.
  3. Das Risiko eines Stop-Loss: Die Strategie verfügt nicht über eine explizite Stop-Loss-Logik, die in extremen Marktumgebungen zu erheblichen Verlusten führen kann.
  4. Overnight-Risiko: Obwohl die Strategie Positionen innerhalb des Tages schließt, kann sie bei der Öffnung von Positionen über Nacht immer noch mit dem Risiko von Overnight-Lapses konfrontiert sein.

Optimierungsrichtlinien

  1. Hinzufügen einer Stop-Loss-Logik: Hinzufügen einer expliziten Stop-Loss-Logik zur Strategie, wie beispielsweise einem festen Prozentsatz von Stop-Loss oder ATR-Stop-Loss, um das Risiko weiter zu kontrollieren.
  2. Optimierung der Parameter: Optimierung der wichtigsten Parameter der Strategie, wie ATR-Periode, Faktor, MACD-Parameter usw., um die Robustheit und Rentabilität der Strategie zu verbessern.
  3. Signalfilterung: Hinzufügen von mehr Signalfilterbedingungen, wie Preisdurchbruch, Handelsvolumen usw., um die Zuverlässigkeit der Signale zu verbessern.
  4. Multi-Markt-Tests: Die Strategie wird auf verschiedenen Märkten und Instrumenten getestet, um ihre Anwendbarkeit und Stabilität zu bewerten.

Zusammenfassung

Die Dynamic Intraday Long-Short Balancing Strategy Combining Moving Average and Supertrend ist eine Handelsstrategie, die auf Trendverfolgung und Momentumbeurteilung basiert. Durch die Kombination des Supertrend-Indikators und des MACD-Indikators und die dynamische Anpassung der Positionsrichtung kann sich die Strategie an Veränderungen auf dem Markt anpassen und Trendchancen erfassen. Gleichzeitig hilft das Design von Schließpositionen zu einem festen Zeitpunkt auch, das Übernachtrisiko zu kontrollieren.

Die Strategie hat jedoch auch einige Risiken und Mängel, wie z. B. das Risiko eines Ausfalls der Indikatoren, das Risiko der Optimierung von Parametern, das Stop-Loss-Risiko usw. Um die Strategie weiter zu verbessern, kann man erwägen, Stop-Loss-Logik hinzuzufügen, Parameter zu optimieren, mehr Signalfilterbedingungen hinzuzufügen und in mehreren Märkten zu testen.

Insgesamt bietet die Dynamic Intraday Long-Short Balancing Strategy, die Moving Average und Supertrend kombiniert, eine Denkweise für die Trendverfolgung und Risikokontrolle. In der Praxis sollten Händler die Strategie entsprechend ihren eigenen Risikopräferenzen und Marktmerkmalen anpassen und optimieren und sie vorsichtig verwenden. Quantitative Handelsstrategien können Handelsideen liefern, aber der Markt verändert sich ständig, und keine Strategie kann Gewinne garantieren. Anleger müssen die Prinzipien und Risiken der Strategie verstehen, Positionen vernünftigerweise kontrollieren, Verluste strikt stoppen und immer wachsam bleiben, um langfristig auf dem Markt zu überleben.


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © smj31071995

//@version=5
strategy("EQ - INTRA - Samsuga supertrend prod", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick = false)


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

[supertrend, direction] =request.security(symbol = syminfo.tickerid, timeframe = st_tf,expression =  ta.supertrend(factor, atrPeriod),lookahead=barmerge.lookahead_on)

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 = 2
macdp2=8
macdp3=4

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = macd_tf,expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
timezone_input = input("Asia/Kolkata", title="Timezone")
// log.info(timezone_input)
if(hour==15 and minute==15)
    strategy.close_all(comment = "DAY EXIT",alert_message = "X-D")
else if(hour==9 and minute==30)
    if(longcondition or histLine[1]>0)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "DL",alert_message = "L")
    else if(shortCondition or histLine[1]<0) 
        strategy.entry(id= "Short", direction=strategy.short,  comment = "DS",alert_message = "S")
else
    if(longcondition)
        strategy.close("Short",comment = "X-S", alert_message = "X-S")
        if(histLine[1]>0)    
            strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
    else if(shortCondition) 
        strategy.close("Long",comment = "X-L",alert_message = "X-L")
        if(histLine[1]<0)    
            strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")


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



Mehr