Diese Strategie verwendet den Donchian Channel-Indikator, um Trends in den oberen und unteren Bands zu handeln, wodurch Trends in Aktien/Futures/Krypto/Forex usw., die zu mittelfristigen bis langfristigen Trend-Breakout-Strategien gehören, verfolgt werden können.
Berechnen Sie den höchsten Höchststand und den niedrigsten Tiefstand über einen bestimmten Zeitraum (z. B. 20 Tage), um die oberen und unteren Bands zu erhalten.
Die Mittellinie ist der Durchschnitt der oberen und unteren Bands.
Wenn der Preis über dem oberen Band schließt, bestimmen Sie, dass der Aufwärtstrend begonnen hat, gehen Sie lang, um einzutreten.
Wenn der Preis unter die Mittellinie bricht, nehmen Sie den Gewinn, um zu verlassen.
Kann auf den Backtest-Zeitrahmen verweisen, um tatsächliche Handelssignale zu generieren.
Optional kann das Brechen des unteren Bandes auch als Kurzsignal dienen.
Die Strategie bestimmt den Trendstart durch Kanalbrechungen, nutzt die Mittellinie als Gewinnentnahme, erfasst mittelfristige bis langfristige Trends.
Der Donchian-Kanal ist einfach zu berechnen und umzusetzen.
Der Preis durchbricht den Kanal und signalisiert eine Trendänderung.
Die mittlere Gewinnspanne ist angemessen festgelegt.
Klare Signalregeln, leicht umzusetzen.
Kann die Kanalparameter für verschiedene Produkte und Zeitrahmen flexibel anpassen.
Kann die langfristige oder kurzfristige Handelsleistung bewerten.
Großer Ausbauraum, kann andere technische Indikatoren einführen.
Der Kanalbruch kann verzögert sein, so dass frühe Gelegenheiten verpasst werden.
Die Abweichung wird vor dem Ausbruch nicht berücksichtigt und kann falsche Signale erzeugen.
Bei der Berechnung der Risikopositionen werden die Risikopositionen gemäß Artikel 42 Absatz 1 Buchstabe b der CRR berücksichtigt.
Eine unpassende Rücktestphase birgt die Gefahr einer Überanpassung.
Fehlt ein Stop-Loss, muss auf vergrößerte Verluste achten.
Test und Optimierung der Kanalperiodenparameter.
Andere MA-Typen als Stop-Loss-Linien bewerten.
Fügen Sie Filter wie Lautstärkenanzeiger hinzu.
Hinzufügen von Bewegungs- oder Rücklauf-Stop-Loss-Mechanismen.
Einführung von maschinellem Lernen zur Vorhersage von Preisschwankungen.
Optimierung des Geldmanagements, Festlegung der Gewinnquote usw.
Überlegen Sie, langfristige/kurzfristige Operationen oder mehrere Produkte zu kombinieren.
Diese Strategie nutzt den Donchian Channel, um die Trendrichtung, den Handelsausbruch, einen typischen mittelfristigen bis langfristigen Trendfolgungsansatz zu bestimmen. Die Optimierung der Kanalparameter und das Hinzufügen anderer technischer Indikatoren können ein robusteres Ausbruchssystem bilden. Die klare und prägnante Logik ermöglicht Erweiterungen und macht es zu einem grundlegenden Quantenstrategiemodul mit großem praktischen Nutzen.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-15 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //future strategy //strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2) //stock strategy strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005) //forex strategy //strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true) //crypto strategy //strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=10000) testStartYear = input(2000, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testEndYear = input(2018, "Backtest Start Year") testEndMonth = input(12, "Backtest Start Month") testEndDay = input(1, "Backtest Start Day") testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testPeriod() => true //time >= testPeriodStart ? true : false dcPeriod = 20 dcUpper = highest(close, dcPeriod)[1] dcLower = lowest(close, dcPeriod)[1] dcAverage = (dcUpper + dcLower) / 2 plot(dcLower, style=line, linewidth=3, color=red, offset=1) plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1) plot(dcAverage, color=yellow, style=line, linewidth=1, title="Mid-Line Average") strategy.entry("simpleBuy", strategy.long, when=close >= dcUpper) strategy.close("simpleBuy",when=close < dcAverage) //strategy.entry("simpleSell", strategy.short,when=close <= dcLower) //strategy.close("simpleSell",when=close > dcAverage)