Die Strategie ist eine brechende Handelsstrategie, die auf einem Kanalindikator basiert. Sie nutzt die Schwingungseigenschaften eines Kanals, der auf und abgleitet, um mehr zu tun, wenn der Preis den Kanal aufbricht, und sich zu entfernen, wenn er den Kanal unterbricht. Sie gehört zu den Strategien der Trend-Tracking-Type.
Die Strategie nutzt zunächst die Mitte der Axis der SMA-Rechenkanäle, um eine Kursbahn zu bilden, indem sie einen Parameterwert für die Aufwärtsbahn und einen Parameterwert für die Abwärtsbahn hinzufügt. Dann wird beurteilt, ob der Preis die Aufwärts- und Abwärtsbahn durchbrochen hat, und kombiniert mit einem Anstieg des Handelsvolumens als Positionsöffnungssignal. Wenn der Preis wieder in die Kanäle zurückfällt, als Flachpositionssignal.
Die Handelslogik der Strategie lautet:
Berechnen Sie die mittlere Achse des Kanals: SMA ((Endpreis, N))
Bahnbahn: mittlere Achse + Parameterwert
Unterbahn: Mittlere Achse - Parameterwerte
Bei einem Überschreiten der Aufwärtslinie wird ein zusätzlicher Einstieg vorgenommen, wenn die Bedingung erfüllt ist, dass der Umsatz mehr als das Doppelte des vorherigen Zyklus beträgt.
Ein Rückzug in den Kanal bedeutet mehrere Positionen.
Bei einem Downtrend wird der Eintritt in den Short-Trade-Bereich erfolgen, wenn die Bedingung erfüllt ist, dass die Transaktionsmenge mehr als das Doppelte des vorherigen Zyklus beträgt.
Rückwärts in den Kanal mit leeren Händen
Die Strategie hat folgende Vorteile:
Der Kanalindikator ist eine effektive Methode, um Preistrends zu verfolgen.
In Kombination mit einem Anstieg der Transaktionsvolumen kann ein effektiver Filter für Falschmeldungen eingesetzt werden.
Der Rückfall-In-Channel dient als Stop-Loss-Exit-Mechanismus, der den Verlust eines einzelnen Handels einschränkt.
Die Erschütterung eignet sich für die Erfassung von kurzfristigen Trends.
Die Implementierungslogik ist einfach, leicht zu verstehen und umzusetzen.
Die Strategie birgt auch einige Risiken:
Wenn die Preise länger auf der Kanalseite sind, werden aufeinanderfolgende Auslöser für gleichgewichtete Positionen ausgelöst, wodurch ein Verlustrisiko besteht.
Eine falsche Einstellung der Kanalparameter kann zu einer Überschneidung der Fehlsignale führen.
Der Anstieg der Handelsvolumen kann durch falsche Kriterien verursacht werden und könnte auch ein echtes Durchbruchsignal verpassen.
Der Ausfallschutz könnte zu konservativ sein und die größeren Ereignisse übersehen.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Optimierung der Kanalparameter, um sie besser an die Merkmale der verschiedenen Märkte anzupassen.
Optimierung oder Erhöhung der Bedingungen für die Eröffnung von Positionen, z. B. durch Berücksichtigung von Leerpositionen oder Kline-Formen, um falsche Durchbrüche zu vermeiden.
Optimierung der Stop-Loss-Exit-Mechanismen, angemessene Lockerung der Stop-Loss-Werte und Vermeidung von vorzeitigen Ausstiegs.
Erhöhung der Positionsverwaltung und Anpassung der Positionen und der Kapitalnutzung an die Marktbedingungen.
Es gibt mehr Indikatoren, um die Richtung der großen Trends zu bestimmen, um zu vermeiden, sich mit den großen Trends zu befassen.
Die Strategie ist insgesamt eine eher einfache und praktische Trendverfolgungstrategie. Sie nutzt die Erschütterungseigenschaften der Preiskanäle, um die kurzfristigen Trends effektiv zu erfassen. Es ist jedoch auch erforderlich, die Optimierungsparameter einzustellen und die Risiken zu vermeiden, um eine bessere Strategiewirkung zu erzielen. Die Stabilität und Profitabilität der Strategie können weiter verbessert werden, wenn sie mit mehr Indikatoren und technischen Mitteln optimiert wird.
/*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")