
Die Strategie nutzt den 24-Perioden-Dongxian-Kanal in Kombination mit dem 200-Perioden-Mittelwert als primäres Handelssignal. Eintrittspunkte wählen nach unten bei rot-grünen Schwankungen, nach oben bei schwankenden Schwankungen.
Die Strategie basiert hauptsächlich auf folgenden Punkten:
Der Tangxian-Kanal wird mit 24-Zyklus-Höchst- und Tiefstwerten aufgebaut, die darauf hindeuten, dass ein großer Rückgang möglich ist, wenn der Preis den Kanal durchbricht.
Die 200-Perioden-Gehaltslinie als Mehrraum-Filterbedingung wird als eine mögliche Umkehrung betrachtet, wenn die Dongguan-Straße durchbrochen wird und der Preis auf der anderen Seite der Gehaltslinie liegt.
Eintrittssignale:
Der Stop-Loss-Preis für den Leerlauf ist der höchste Preis der letzten 3 K-Linien, der Stop-Loss-Preis ist der Leerlauf-Preis abzüglich der 3-fachen Differenz zwischen dem Stop-Loss und dem Leerlauf. Der Stop-Loss- und der Stop-Loss-Preis für den Leerlauf werden im Gegensatz zum Leerlauf berechnet.
Das Vorteil der Strategie ist, dass die Mischung aus Dongqian-Kanal + einheitlicher Filter verwendet wird, wodurch die Fehleinschätzung eines einzigen technischen Indikators vermieden wird und die Gewinnrate der Strategie deutlich erhöht wird.
Diese Strategie hat folgende Vorteile:
Hohe Gewinnrate: Durch die Kombination von Dongjian-Kanal und Gleichgewichtsindikator können unnötige Verluste durch die Fehlbestimmung eines einzigen technischen Indikators wirksam vermieden werden.
Risikokontrolle: Der jüngste Höchst-/Tiefstpreis wird als Stop-Loss verwendet, um den Einzelschaden zu kontrollieren. Der Stop-Loss ist dreimal so hoch wie der Stop-Loss, und das Risiko des Gewinns ist höher.
Einfache Bedienung: Die Anzeigen und Logik sind sehr einfach, klar und leicht zu verstehen und umzusetzen.
Hohe Anwendbarkeit: Wenige Strategieparameter, gute Stabilität bei verschiedenen Sorten und Zyklen.
Die Risiken der Strategie sind vor allem:
Extremsituationsrisiken: Wenn es zu einem unilateralen Extremsituation kommt, ist es leicht, einen Stop-Loss auszulösen oder zu einer Vergrößerung der Verluste zu führen. Dies kann durch eine angemessene Lockerung der Stop-Loss-Grenze oder eine Verringerung der Positionslage angegangen werden.
Risiko von Ausweichsignalfehlentscheidungen: Die Verwendung eines neuen Gegenspielers als Ausweichsignal kann zu einem unnötigen Verlust von Gleitpunkten führen. Dies kann durch eine optimierte Ausweichlogik gelöst werden.
Parameteroptimierungsrisiken: Die falsche Einstellung der Parameter für die Dongguan-Kanal-Periode und die Durchschnittslinie kann zu einer häufigen oder verzögerten Signalübertragung führen. Dieses Risiko kann durch Parameteroptimierung und Kombinationstests verringert werden.
Die Strategie kann in folgenden Richtungen optimiert werden:
Die Dongjian-Kanal-Periode und die Mittellinien-Periode können optimiert werden, um die optimale Kombination von Parametern zu finden.
Verschiedene Stop-Loss-Stop-Off-Raten, Ausgleichs- und Gewinn- und Verlustquoten können getestet werden.
Es kann versucht werden, die strategische Stabilität zu verbessern, indem man die Einstiegssignale in Kombination mit anderen Indikatoren wie MACD, KD usw. korrigiert.
Die Ausgangssignale können optimiert werden, um unnötige Ausgänge in Schwingungssituationen zu vermeiden. Ausgangssignale können auch Trendindikatoren berücksichtigen.
Auf der Grundlage des Strategie-Frameworks können neue Strategie-Kombinationen entwickelt werden, z. B. in Kombination mit anderen Kanal-Indikatoren, Listen-Indikatoren usw.
Die Gesamtkonzeption der langsamen und gleichmäßigen Strategie ist klar und verständlich und kann die Stabilität und die Gewinnrate der Strategie durch die Mischung aus der Verwendung von Tangjian-Kanälen und Gleichlinien als Strategie-Signal wirksam verbessern. Die Einstellung von Stop-Loss-Systemen macht die Verlustquote gut, die Parameter-Einstellung ist einfach und leicht zu implementieren. Es gibt bestimmte Extremsituationen und das Risiko von Fehlentscheidungen, aber die Strategie kann auf verschiedene Arten optimiert und verbessert werden.
/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Mysteriown
//@version=4
strategy("Lagged Donchian Channel + EMA", overlay = true)
//tradePeriod = time(timeframe.period,"0000-0000:1234567")?true:false
// ------------------------------------------ //
// ----------------- Inputs ----------------- //
// ------------------------------------------ //
period = input(24, title="Channel's periods")
Pema = input(200, title="EMA's periods ?")
ratio = input(3, title="Ratio TP", type=input.float)
loss = input(20, title="Risk Loss ($)")
lev = input(5, title="Leverage *...")
chan = input(title="Plot channel ?", type=input.bool, defval=false)
Bpos = input(title="Plot Bull positions ?", type=input.bool, defval=false)
bpos = input(title="Plot Bear positions ?", type=input.bool, defval=false)
labels = input(title="Plot labels of bets ?", type=input.bool, defval=true)
supp = input(title="Delete last labels ?", type=input.bool, defval=true)
// ------------------------------------------ //
// ---------- Canal, EMA and arrow ---------- //
// ------------------------------------------ //
pema = ema(close,Pema)
plot(pema, title="EMA", color=color.blue)
canalhaut = highest(period)[1]
canalbas = lowest(period)[1]
bear = close[1] > canalhaut[1] and close < open and high > pema
bull = close[1] < canalbas[1] and open < close and low < pema
canalhautplot = plot(chan? canalhaut:na, color=color.yellow)
canalbasplot = plot(chan? canalbas:na, color=color.yellow)
plotshape(bear, title='Bear', style=shape.triangledown, location=location.abovebar, color=color.red, offset=0)
plotshape(bull, title='Bull', style=shape.triangleup, location=location.belowbar, color=color.green, offset=0)
// ------------------------------------------ //
// ------------- Position Short ------------- //
// ------------------------------------------ //
SlShort = highest(3)
BidShort = close[1]
TpShort = BidShort-((SlShort-BidShort)*ratio)
deltaShort = (SlShort-BidShort)/BidShort
betShort = round(loss/(lev*deltaShort)*100)/100
cryptShort = round(betShort*lev/BidShort*1000)/1000
// if bear[1] and labels //and low < low[1]
// Lbear = label.new(bar_index, na, text="SHORT\n\nSL: " + tostring(SlShort) + "\n\nBid: " + tostring(BidShort) + "\n\nTP: " + tostring(TpShort) + "\n\nMise: " + tostring(betShort) + "\n\nCryptos: " + tostring(cryptShort), color=color.red, textcolor=color.white, style=label.style_labeldown, yloc=yloc.abovebar)
// label.delete(supp ? Lbear[1] : na)
var bentry=0.0
var bsl=0.0
var btp=0.0
if bear[1] and low < low[1]
bentry:=BidShort
bsl:=SlShort
btp:=TpShort
pbentry = plot(bpos? bentry:na, color=color.orange)
plot(bpos? (bentry+btp)/2:na, color=color.gray)
pbsl = plot(bpos? bsl:na, color=color.red)
pbtp = plot(bpos? btp:na, color=color.green)
fill(pbentry,pbsl, color.red, transp=70)
fill(pbentry,pbtp, color.green, transp=70)
// ------------------------------------------ //
// ------------- Position Long -------------- //
// ------------------------------------------ //
SlLong = lowest(3)
BidLong = close[1]
TpLong = BidLong + ((BidLong - SlLong) * ratio)
deltaBull = (BidLong - SlLong)/BidLong
betLong = round(loss/(lev*deltaBull)*100)/100
cryptLong = round(betLong*lev/BidLong*1000)/1000
// if bull[1] and labels //and high > high[1]
// Lbull = label.new(bar_index, na, text="LONG\n\nSL: " + tostring(SlLong) + "\n\nBid: " + tostring(BidLong) + "\n\nTP: " + tostring(TpLong) + "\n\nMise: " + tostring(betLong) + "\n\nCryptos: " + tostring(cryptLong), color=color.green, textcolor=color.white, style=label.style_labelup, yloc=yloc.belowbar)
// label.delete(supp ? Lbull[1] : na)
var Bentry=0.0
var Bsl=0.0
var Btp=0.0
if bull[1] and high > high[1]
Bentry:=BidLong
Bsl:=SlLong
Btp:=TpLong
pBentry = plot(Bpos?Bentry:na, color=color.orange)
plot(Bpos?(Bentry+Btp)/2:na, color=color.gray)
pBsl = plot(Bpos?Bsl:na, color=color.red)
pBtp = plot(Bpos?Btp:na, color=color.green)
fill(pBentry,pBsl, color.red, transp=70)
fill(pBentry,pBtp, color.green, transp=70)
// ------------------------------------------ //
// --------------- Strategie ---------------- //
// ------------------------------------------ //
Bear = bear[1] and low < low[1]
Bull = bull[1] and high > high[1]
if (Bear and strategy.opentrades==0)
strategy.order("short", false, 1, limit=BidShort)
strategy.exit("exit", "short", limit = TpShort, stop = SlShort)
strategy.cancel("short", when = high > SlShort or low < (BidShort+TpShort)/2)
strategy.close("short", when=bull)
if (Bull and strategy.opentrades==0)
strategy.order("long", true, 1, limit=BidLong)
strategy.exit("exit", "long", limit = TpLong, stop = SlLong)
strategy.cancel("long", when = low < SlLong or high > (BidLong+TpLong)/2)
strategy.close("long", when=bear)