Dynamische Ausgleichsstrategien für den Alltag in Kombination mit dem Hypertrend

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

均线与超级趋势结合的日内多空动态平衡策略

Strategieübersicht

Die Dynamic Balance Strategy in Kombination mit dem Hypertrend ist eine quantitative Handelsstrategie, die auf der Basis von Pine ScriptTM 5 geschrieben wurde. Die Strategie nutzt MACD und Hypertrend, um Trendchancen zu erfassen und Risiken durch dynamische Hypertrends und Stop-Loss-Schaltungen zu kontrollieren.

Die Strategie

Im Mittelpunkt der Strategie steht die Kombination von MACD und Supertrendindikatoren, um die Trendrichtung des Marktes zu bestimmen.

  1. Die Verwendung von Supertrend-Anzeigen zeigt die aktuelle Trendrichtung. Wenn sich die Supertrend-Anzeige ändert, zeigt dies eine Trendwende an.
  2. Die Veränderung der Dynamik wird anhand des MACD-Stabdiagramms beurteilt. Der MACD-Stabdiagramm zeigt eine Erhöhung der Aufwärtsbewegung, wenn er negativ umgewandelt wird; der MACD-Stabdiagramm zeigt eine Erhöhung der Abwärtsbewegung, wenn er positiv umgewandelt wird.
  3. Öffnen Sie eine Überposition, wenn der Supertrend-Indikator und der MACD gleichzeitig mehrsignalisiert werden; Öffnen Sie eine Leere, wenn der Supertrend-Indikator und der MACD gleichzeitig mehrsignalisiert werden.
  4. Vergleiche alle Positionen zu einer festen Zeit (z. B. 15:15) an jedem Handelstag, um das Übernachtungsrisiko zu vermeiden.
  5. Auf einem neuen Handelstag (z. B. 09:30) werden die Positionen gemäß den Anweisungen des Supertrend-Indikators und des MACD-Indikators wieder geöffnet.

Durch dynamische Multi-Space-Switching kann die Strategie sich an Marktveränderungen anpassen und Trendchancen erfassen. Gleichzeitig hilft die Konzeption von Festzeit-Platzierungen, Risiken zu kontrollieren.

Strategische Vorteile

  1. Trendverfolgung: Durch die Kombination von Supertrend-Indikatoren und MACD-Indikatoren kann die Strategie Trends in den Märkten effektiv erfassen.
  2. Dynamische Multi-Spaces-Switching: Diese Strategie passt die Positionsrichtung dynamisch an, je nachdem, wie sich der Indikator ändert.
  3. Risikokontrolle: Diese Strategie ermöglicht eine bessere Risikokontrolle durch Festzeit-Platzierung und dynamische Multi-Space-Switching.
  4. Flexibilität der Parameter: Die Parameter der Strategie (z. B. ATR-Zyklus, Faktoren usw.) können anhand von Marktmerkmalen und persönlichen Vorlieben angepasst werden.

Strategische Risiken

  1. Indikator-Fehlerrisiko: In bestimmten Marktumgebungen können MACD-Indikatoren und Supertrend-Indikatoren falsche Signale senden, was zu einem Strategie-Fehler führt.
  2. Parameteroptimierungsrisiken: Die Performance der Strategie hängt von der Wahl der Parameter ab, und falsche Parameter können zu einer schlechten Performance der Strategie führen.
  3. Stop-Loss-Risiko: Die Strategie hat keine klare Stop-Loss-Logik, was zu größeren Verlusten in extremen Marktbedingungen führen kann.
  4. Übernachtungsrisiko: Obwohl die Strategie tagsüber ausgeglichen wird, kann es bei einem Übernachtungsgeschäft immer noch zu einem Risiko für eine Übernachtungslücke kommen.

Optimierung

  1. Erhöhung der Stop-Loss-Logik: Eine eindeutige Stop-Loss-Logik, wie einen festen Stop-Loss-Prozentsatz oder einen ATR-Stop-Loss, wird in die Strategie aufgenommen, um das Risiko weiter zu kontrollieren.
  2. Optimierung der Parameter: Optimierung der wichtigsten Parameter der Strategie, z. B. ATR-Zyklen, Faktoren, MACD-Parameter, um die Stabilität und Ertragsfähigkeit der Strategie zu verbessern.
  3. Signalfilterung: Hinzufügen von mehr Signalfilterungsbedingungen, wie Preisdurchbruch, Handelsvolumen, etc., um die Zuverlässigkeit des Signals zu verbessern.
  4. Multi-Markt-Tests: Die Strategie wird in verschiedenen Märkten und Sorten getestet, um ihre Anwendbarkeit und Stabilität zu bewerten.

Zusammenfassung

Die dynamische Balance-Strategie mit einem hypertrendigen Kurs ist eine Handelsstrategie, die auf Trendverfolgung und Dynamikentscheidung basiert. Durch die Kombination von hypertrendigen und MACD-Indikatoren kann die Strategie die Position dynamisch anpassen, um sich an Marktveränderungen anzupassen und Trendchancen zu erfassen.

Allerdings bestehen auch Risiken und Unzulänglichkeiten, wie z. B. Risiko von Indikatorfehlern, Risiko von Parameteroptimierung, Risiko von Stoppverlusten usw. Eine weitere Verbesserung der Strategie besteht darin, die Stoppverlustlogik, die Optimierung von Parametern, die Einführung von mehr Signalfilterbedingungen und die Prüfung in mehreren Märkten zu verbessern.

Im Allgemeinen bietet die dynamische Gleichgewichtsstrategie mit einer Kombination aus dem Gleichgewicht und dem Supertrend eine Idee zur Trendverfolgung und zur Risikokontrolle. In der Praxis sollten Trader ihre Risikopräferenzen und die Merkmale des Marktes kombinieren, die Strategie angemessen anpassen und optimieren und mit Bedacht anwenden.


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



Weitere Informationen