Überschreitende Strategie für den Ausbruch der Wertzone

Schriftsteller:ChaoZhang, Datum: 2023-12-12 10:58:22
Tags:

img

Übersicht

Die Kernidee dieser Strategie besteht darin, die aktuelle Preisspanne durch Kombination von RSI-Indikatoren verschiedener Zyklen zu bestimmen und entsprechende Kauf- oder Verkaufsaktionen in kleineren Zyklen zu ergreifen, wenn ein Ausbruch im größeren Zyklus RSI vorliegt.

Strategie Logik

Die wichtigsten Schritte dieser Strategie zur Bestimmung der Preisspanne und zur Suche nach Handelsmöglichkeiten sind:

  1. Der RSI-Swing-Hoch- und Swing-Tief wird auf der Grundlage eines größeren Zykluss (z. B. täglich) berechnet.
  2. Bestimmen Sie, ob der größere RSI-Zyklus innerhalb des Rückblickzeitraums ein neues Höchst- oder Tiefwert erreicht hat.
  3. Wenn ein Ausbruch eintritt, beurteilen Sie den Kurstrend (bullisch oder bärisch) in einem kleineren Zyklus (z. B. 5 min) und ergreifen entsprechende Kauf- oder Verkaufsaktionen.

Zum Beispiel, wenn der tägliche RSI seinen vorherigen Höchststand durchbricht, beurteilen wir, dass es sich derzeit um einen Bullenmarkt handelt. Und wenn der tägliche RSI unter seinen vorherigen Tiefpunkt bricht, beurteilen wir ihn als Bärenmarkt. In beiden Fällen nehmen wir in dem 5-minütigen Diagramm Long- und Short-Aktionen.

Analyse der Vorteile

Im Vergleich zu traditionellen Strategien, die sich nur auf einen Zeitraum konzentrieren, hat diese Strategie folgende Vorteile:

  1. Eine genauere Beurteilung des aktuellen relativen Preiswerts. Größere Zyklen wie täglich können kurzfristige Marktlärm filtern und den allgemeinen Trend und Wertbereich bestimmen.

  2. Die Kombination von Indikatoren über Perioden hinweg verbessert die Signalzuverlässigkeit.

  3. Ein großer Zyklus-Ausbruch zeigt die allgemeine Richtung, während wir nur in kleinen Zyklen wie 5 Minuten Chancen finden müssen, um zu profitieren.

  4. Kleine Rückgänge. Durch die Kombination von Querschnittsperioden vermeidet man, gefangen zu werden. Wir können schnell aussteigen, wenn sich große Zyklusindikatoren umkehren.

Risikoanalyse

Die wichtigsten Risiken dieser Strategie bestehen in:

  1. Falsches Urteilsvermögen bei großen Zyklusindikatoren. Ineffiziente Werteberechnung im täglichen RSI usw. kann zu fehlerhaften Signalen führen. Parameter-Tuning des RSI ist erforderlich, um die Genauigkeit zu verbessern.

  2. Die Differenz zwischen kleinen Zyklus Preisbewegung und große Zyklus Bestimmung. Manchmal kurzfristige Bewegungen widersetzen sich großen Bild Trends. Wir müssen richtigen Stop-Loss setzen, um den Verlust zu kontrollieren.

  3. Unzulängliche Risikomanagement. Übermäßige Verluste im Einzelhandel aufgrund einer schlechten Positionsgröße könnten zu einer unwiederbringlichen Rücknahme führen.

Optimierungsrichtlinien

Diese Strategie kann noch weitgehend verbessert werden, vor allem in den folgenden Bereichen:

  1. Test mehr Periodenkombinationen, um optimale Parameter zu finden.

  2. Anpassung der RSI-Parameter, Anpassung der RSI-Lookback-Parameter usw. zur Verbesserung der Richtigkeit des Urteils.

  3. Fügen Sie mehr Indikatoren hinzu. Bringen Sie mehr Indikatoren wie MA ein, um die Trendrichtung zu beurteilen.

  4. Verbessern Sie den Stop-Loss-Mechanismus und anpassen Sie die Stop-Loss-Punkte dynamisch anhand der Drawdown-Bedingungen.

  5. Optimieren Sie die Positionsgrößenregeln und verwalten Sie die spezifischen Positionsgrößen für jeden Handel wissenschaftlicher.

Schlussfolgerung

Diese Strategie realisiert die Querschnittszeit-Arbitrage zwischen verschiedenen Zeitdimensionen, indem sie die bullische Situation in den Querschnittszeit-RSIs bewertet. Eine solche Idee des Querschnittszeit-Urteils verdient weitere Ausbeutung. Wir können sie durch Parameter-Tuning, Stop-Loss-Optimierung, Indikatorenkombinationen verbessern, um sie vorteilhafter zu machen. Insgesamt hat diese Strategie eine einzigartige Idee und ein großes Potenzial zur Verbesserung.


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

//@version=3

strategy("Swing MTF", shorttitle="Swing MTF", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5)
//
otf_period = input(defval=2, title="Look Back Period (2nd Timeframe)")
otf = input(defval="180", title="Second Momentum Timeframe")

// Function to dectect a new bar
is_newbar(res) =>
    t = time(res)
    change(t) != 0 ? true : false

// Check how many bars are in our upper timeframe
since_new_bar = barssince(is_newbar(otf))
otf_total_bars = na
otf_total_bars := since_new_bar == 0 ? since_new_bar[1] : otf_total_bars[1]

//Calculate RSI Values
ctf_rsi = rsi(open, otf_period)

breakline=input(title="Breaks in lines", defval = true, type=bool)

so = request.security(syminfo.tickerid, otf, rsi(open, otf_period))
sc = request.security(syminfo.tickerid, otf, rsi(close, otf_period))


final_otf_so = na
final_otf_so := barstate.isrealtime ? since_new_bar == otf_total_bars ? so : final_otf_so[1] : so

final_otf_sc = na
final_otf_sc := barstate.isrealtime ? since_new_bar == otf_total_bars ? sc : final_otf_sc[1] : sc

barsback = input(11, title='Bars back to check for a swing')
// showsig = input(false, title='Show Signal Markers')
 
swing_detection(index)=>
    swing_high = false
    swing_low = false
    start = (index*2) - 1 // -1 so we have an even number of
    swing_point_high = final_otf_so[index]
    swing_point_low = final_otf_sc[index]
    
    //Swing Highs
    for i = 0 to start
        swing_high := true
        if i < index 
            if final_otf_so[i] > swing_point_high 
                swing_high := false
                break
        // Have to do checks before pivot and after seperately because we can get
        // two highs of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_so[i] >= swing_point_high 
                swing_high := false
                break
        
    //Swing lows
    for i = 0 to start
        swing_low := true
        if i < index
            if final_otf_sc[i] < swing_point_low 
                swing_low := false
                break  
        // Have to do checks before pivot and after seperately because we can get
        // two lows of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_sc[i] <= swing_point_low 
                swing_low := false
                break 
        
    [swing_high, swing_low]
 
// Check for a swing
[swing_high, swing_low] = swing_detection(barsback)
 

long =  final_otf_so > final_otf_sc
short = final_otf_so < final_otf_sc

if swing_low and long
    strategy.entry("My Long Entry Id", strategy.long)


if swing_high and short
    strategy.entry("My Short Entry Id", strategy.short)

Mehr