Strategie für den Ausbruch des Schwingungskanals

Schriftsteller:ChaoZhang, Datum: 2023-11-15 16:01:09
Tags:

img

Übersicht

Dies ist eine Breakout-Handelsstrategie, die auf Kanalindikatoren basiert. Sie nutzt die Schwingungscharakteristik der Kanalbänder, um lang zu gehen, wenn der Preis über das obere Band bricht, und kurz zu gehen, wenn er unter das untere Band bricht. Sie gehört zur Kategorie der Trendfolgestrategie.

Strategie Logik

Die Strategie verwendet zunächst SMA, um die Mittellinie des Kanals zu berechnen. Das obere Band wird als Mittellinie plus ein Parameterwert gesetzt, und das untere Band ist Mittellinie minus der Parameterwert, was einen Preiskanal bildet. Es beurteilt dann, ob der Preis aus den oberen oder unteren Banden ausbricht, kombiniert mit einem Anstieg des Handelsvolumens als Eröffnungssignal. Wenn der Preis zurück in den Kanal fällt, dient er als Schlusssignal.

Insbesondere ist die Handelslogik wie folgt:

  1. Berechnung der Mittellinie: SMA (nahe, N)

  2. Oberer Band: Mittellinie + Parameterwert

  3. Unterer Band: Mittellinie - Parameterwert

  4. Wenn der Preis über den oberen Bereich bricht, wenn das Handelsvolumen größer als das 2x des vorherigen Zeitraums ist, gehen Sie lang.

  5. Wenn der Preis wieder in den Kanal fällt, schließen Sie die Long-Position.

  6. Wenn der Preis unterhalb der unteren Bandbreite ausbricht, wenn das Handelsvolumen mehr als das Zweifache des vorherigen Zeitraums beträgt, gehen Sie kurz.

  7. Wenn der Preis wieder in den Kanal fällt, schließen Sie die Short-Position.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Die Verwendung eines Kanalindikators kann die Preisentwicklung effektiv verfolgen.

  2. Die Kombination mit einem Anstieg des Handelsvolumens filtert falsche Ausbrüche gut.

  3. Der Rückgang in den Kanal dient als Stop-Loss-Mechanismus und begrenzt den Verlust pro Handel.

  4. Die Oszillationscharakteristik passt zur Erfassung mittelfristiger Trends.

  5. Einfache Logik macht es leicht zu verstehen und umzusetzen.

Risikoanalyse

Es gibt auch einige Risiken:

  1. Nach aufeinanderfolgenden, in die gleiche Richtung gerichteten Trades, wenn der Preis für lange Zeit auf einer Seite des Kanals bleibt und das Verlustrisiko steigt.

  2. Eine unsachgemäße Einstellung der Kanalparameter kann zu übermäßigen falschen Signalen führen.

  3. Falsche Kriterien für einen Anstieg des Handelsvolumens können wahre Breakout-Signale verpassen.

  4. Der Stop-Loss-Mechanismus kann zu konservativ sein und größere Bewegungen verpassen.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimierung der Kanalparameter für die unterschiedlichen Marktmerkmale.

  2. Verbessern Sie die Kriterien für offene Positionen, z. B. die Berücksichtigung von MA-Crossover- oder Candlestick-Mustern, um falsche Ausbrüche zu vermeiden.

  3. Optimieren Sie den Stop-Loss-Mechanismus, ermöglichen Sie einen größeren Stop-Loss-Bereich, um einen vorzeitigen Ausstieg zu vermeiden.

  4. Hinzufügen von Positionsgrößenregeln zur Anpassung der Positionsgröße und der Kapitalverwertung an die Marktbedingungen.

  5. Einbeziehen Sie mehr Indikatoren, um die allgemeine Trendrichtung zu bestimmen, und vermeiden Sie den Handel gegen den Haupttrend.

Zusammenfassung

Zusammenfassend ist dies eine einfache und praktische Trendfolgestrategie. Durch die Nutzung der Kanalschwingung kann es mittelfristige Trends effektiv erfassen. Aber Parameter-Tuning ist notwendig, um auf verschiedene Märkte anzupassen, und Risiken sollten überwacht werden. Weitere Optimierungen mit mehr Indikatoren und Techniken können seine Stabilität und Rentabilität verbessern.


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

//Copyright, 2022, Cache_that_pass.  You are free to use this script however you see fit and reproduce it in any manner.

//@version=5

            //////  Name the strategy between the 2 quotation marks.  Consider setting commission type and value in strategy header to match exchanges rates. //////

strategy("Oscillating SSL Channel Strategy", "O-SSL Strat", overlay=true, pyramiding=1, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 100, calc_on_order_fills=true)



            //////  Inputs and calculations used by script  //////

period = input(title='Period', defval=25)
len = input(title='Period', defval=25)
smaHigh = ta.sma(high, len)
smaLow = ta.sma(low, len)
Hlv = int(na)
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

            //////  Show me the money  //////

plot(sslDown, linewidth=2, color=color.new(color.red, 0))
plot(sslUp, linewidth=2, color=color.new(color.lime, 0))


            //////  Trade execution logic  //////  
            
//pseudo-code//
        //Go long when high (or maybe close) breaks above the sslUp and volume is 2x or > Volume[1] and sslUp > sslDown
        //Close the above longs when sslUp crosses under sslDown (or set takeprofit and stop loss exits)
        //
        //Go short when low is lower than the sslUp and volume is 2x or > Volume[1] and sslDown > sslUp
        //Close shorts when sslDown crosses under sslUp

longCondition1 = (sslUp > sslDown)
longCondition2 = ta.crossover(high, sslUp)
//longCondition3 = (volume >= (volume[1]*1.89))
longCondition = ((longCondition1) and (longCondition2))// and (longCondition3))

longExit = ta.crossunder(sslUp, sslDown)

            //////  Bring It  //////
if (longCondition)
    strategy.entry("Bring It", strategy.long)

            //////  Sling It  //////
if (longExit)
    strategy.close("Bring It", comment="Sling It")


shortCondition1 = (sslDown) > (sslUp)
shortCondition2 = ta.crossunder(low, sslUp)
//shortCondition3 = (volume >= (volume[1]*1.89))
shortCondition = ((shortCondition1) and (shortCondition2))// and (shortCondition3))

shortExit = ta.crossunder(sslDown, sslUp)

            //////  Bring It  //////
if (shortCondition)
    strategy.entry("Bring It", strategy.long)

            //////  Sling It  //////
if (shortExit)
    strategy.close("Bring It", comment="Sling It")

            //////  Sling It  //////
if (shortCondition)
    strategy.entry("Sling It", strategy.short)

            //////  Bling It  //////
if (shortExit)
    strategy.close("Sling It", comment="Bring It")



Mehr