Diese Strategie erzeugt Handelssignale durch den Aufbau von zwei Ebenen von Übertrend-Kanälen in Verbindung mit Preis-Breakout-Kanälen. Die Kanalbreite wird durch Anpassung an die Preisschwankungen angepasst, um eine Selbstanpassung zu erzielen. Sie gehört zu den Strategien der Trend-Tracking-Klasse.
Berechnen Sie die Standarddifferenz des Preises und die ATR-Volatilität, wobei die Breite des Übertrendkanals an die Volatilität angepasst wird.
Aufbau einer doppelten Übertrendkanal, der Innenkanal ist empfindlicher, der Außenkanal stabiler.
Wenn der Preis den inneren oder äußeren Übertrendkanal durchbricht, erzeugt er ein Kauf- oder Verkaufssignal.
Durch die Verwendung einer doppelten Kanalstruktur können einige falsche Durchbrüche gefiltert werden.
Die ATR wird verwendet, um die Kanalbreite anzupassen. Die Kanalbreite wird erhöht, wenn die Schwankungen größer sind, um eine Selbstanpassung zu erzielen.
Der Hypertrend-Kanal ist einfach und benutzerfreundlich, um Trends besser zu verfolgen.
Die Doppelkanalstruktur verbessert die Signalqualität und filtert falsche Durchbrüche.
Die Schwankungen werden an die Breite des Kanals angepasst, um ihn besser an die verschiedenen Marktbedingungen anzupassen.
Die Einführung und Anpassung der Parameter ist einfach.
Es wird ein intuitives Trading-Signal erzeugt, indem die Kanäle und die Durchbrüche visualisiert werden.
Ein Durchbruchsignal kann zu Fehleinschätzungen führen, die zu unnötigen Verlusten führen.
Es ist unmöglich, die Richtung des Trends zu bestimmen, und es besteht das Risiko, dass der Handel nach hinten abläuft.
Die Anpassung ist möglicherweise zu sensibel und zu groß.
Eine falsche Optimierung der Parameter kann zu einer Überoptimierung führen.
Als Trend-Tracking-Strategie ist es leicht, bei einer Duddle-Situation zu profitieren oder zu verlieren.
Die Auswirkungen verschiedener Parameter auf die Anpassungswirkung des Kanals werden getestet.
Versuchen Sie, die Richtung der großen Trends in Kombination mit Indikatoren wie der Durchschnittslinie zu bestimmen.
Optimierung des Brechungsbestätigungsmechanismus zur Vermeidung falscher Durchbrüche.
Die Einführung von Stop-Loss-Strategien zur Kontrolle von Einzelschäden.
Bewertung der Auswirkungen der Anpassung der Kanalparameter auf die Häufigkeit der Transaktionen.
Die Parameter können dynamisch optimiert werden, indem ein Machine Learning-Algorithmus eingesetzt wird.
Die Strategie nutzt eine doppelte Adaptions- und Übertrendkanal, um Preistrends zu erfassen. Der Vorteil ist, dass sie einfach und intuitiv ist und Trends effektiv verfolgen kann. Es besteht jedoch auch das Risiko, dass es zu Durchbruchfehlern und Trendfehlern kommt. Durch die Optimierung der Parameter und die Ergänzung der unterstützenden Mechanismen kann die Effektivität der Strategie weiter verbessert werden, was zu einem stabilen und effizienten Trendverfolgungssystem führt.
/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SuperTrend Cloud Strategy", shorttitle="SuperTrend Cloud Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital = 1000)
//Inputs
multi = input(title="Multiplier", type=input.float, step=0.1, defval=3, minval=1)
period = input(title="Period", type=input.integer, step=1, defval=10, minval=1)
SelfAdjust = input(title="Self-Adjusting", type=input.bool, defval = false)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
////////////////////////////////////////////////////////////////////////////////
dev = stdev(close, period)
stdDev = (dev / close) * 100 + 1
MultDev = SelfAdjust ? multi * stdDev : multi
up_lev1 = hl2 - MultDev * atr(period)
dn_lev1 = hl2 + MultDev * atr(period)
up_lev2 = hl2 - (MultDev * 2 * atr(period))
dn_lev2 = hl2 + (MultDev * 2 * atr(period))
up_trend1 = 0.0
up_trend1 := close[1] > up_trend1[1] ? max(up_lev1, up_trend1[1]) : up_lev1
up_trend2 = 0.0
up_trend2 := close[1] > up_trend2[1] ? max(up_lev2, up_trend2[1]) : up_lev2
down_trend1 = 0.0
down_trend1 := close[1] < down_trend1[1] ? min(dn_lev1, down_trend1[1]) : dn_lev1
down_trend2 = 0.0
down_trend2 := close[1] < down_trend2[1] ? min(dn_lev2, down_trend2[1]) : dn_lev2
trend1 = 0
trend1 := close > down_trend1[1] ? 1: close < up_trend1[1] ? -1 : nz(trend1[1], 1)
trend2 = 0
trend2 := close > down_trend2[1] ? 1: close < up_trend2[1] ? -1 : nz(trend2[1], 1)
st_line1 = trend1 == 1 ? up_trend1 : down_trend1
st_line2 = trend2 == 1 ? up_trend2 : down_trend2
// Plotting
plot1 = plot(st_line1, color = trend1 == 1 ? color.green : color.red , style = plot.style_line, linewidth = 1, title = "SuperTrend 1")
plot2 = plot(st_line2, color = trend2 == 1 ? color.green : color.red , style = plot.style_line, linewidth = 1, title = "SuperTrend 2")
fill(plot1, plot2, color = color.aqua, title = "Cloud")
buy = crossover(close, st_line1) and close > st_line2 or crossover(close, st_line2) and close > st_line1
sell = crossunder(close, st_line1) and close < st_line2 or crossunder(close, st_line2) and close < st_line1
if(buy and time_cond)
strategy.entry("long", long = true , comment="long")
if (close < st_line1 and time_cond or close < st_line2 and time_cond)
strategy.close("long")
if (not time_cond)
strategy.close_all()