
Die Dong An-Strategie ist eine sehr vereinfachte Strand-Handelsstrategie. Sie unterscheidet sich stark von der ursprünglichen Strand-Handelsstrategie. Die Strategie verwendet zwei Dong An-Kanäle, den schnellen Kanal und den langsamen Kanal.
Die Kernlogik der Strategie lautet:
Berechnen Sie die Schnellstraße: Der höchste Wert der nächsten Fast-K-Linie ist der Auf- und der untere Teil der Straße. Der mittlere Teil der Straße ist der Durchschnitt der Auf- und Abfahrt.
Berechnung des langsamen Kanals: Der höchste Wert für die nächstgelegene slowroot K-Linie ist der Kanal-Oberbahn, der niedrigste ist der Kanal-Unterbahn.
Wenn keine Position gehalten wird, wird das Mehr-Signal als Preis auf den langsamen Kanal aufgeschraubt; das Leer-Signal als Preis auf den langsamen Kanal abgeschraubt.
Nach der Eröffnung des Lagers wird die Schnellstraße als Stop-Line verwendet.
Während der Positionshaltung, wenn das Trading-Signal im Gegensatz zum Open-Signal ist, geht die Position aus.
Diese Strategie hat folgende Vorteile:
Die Regeln sind einfach zu befolgen. Die Dongqian-Kanäle und der mobile Stop sind leicht verständlich und für Anfänger geeignet.
Benutzer können die Parameter anhand der Handelsart und des Zeitraums anpassen, um sie an unterschiedliche Marktbedingungen anzupassen.
Weniger Konflikt-Trading-Signal. Verlassen Sie sich nur auf den Preis, um den Kanal zu durchbrechen und zu verhindern, dass häufige Indikatoren falsche Signale erzeugen.
Automatische Stop-Management-Risiken. Mobil-Stop-Risiken auf Schnellstraßen, die Einzelstop-Risiken begrenzen können.
Diese Strategie birgt folgende Risiken:
Wenn die Tendenz der Preisschwankungen nicht sichtbar ist, entstehen mehr Stop-Losses. Dies beeinträchtigt die Profitabilität der Strategie.
Der Rückzug ist möglicherweise größer. Bei einer Trendwende werden alle Schwankungen in der Richtung der Bewegung zu tatsächlichen Verlusten.
Die falsche Einstellung der Parameter kann zu einer zu radikalen oder konservativen Einstellung führen. Dies erfordert die Ermittlung der richtigen Werte durch wiederholte Tests.
Die Abhängigkeit von automatisierten Transaktionen ist hoch. Es ist notwendig, die Stabilität der Server zu gewährleisten, um Ausnahmen zu vermeiden, die dazu führen, dass die Transaktionen nicht automatisch durchgeführt werden können.
Um die oben genannten Risiken zu verringern, können Verbesserungen durch optimierte Parameter-Einstellungen, angemessene Einschränkungen der Positionsgröße und die Erweiterung der Windkontrolle vorgenommen werden.
Die Strategie kann in folgenden Richtungen optimiert werden:
Erhöhen Sie die Filterbedingungen für die Eröffnung von Positionen, um zu verhindern, dass die Trendwende die Signalverpassung verpasst.
Optimierte Parameter-Einstellungen, die für verschiedene Handelsarten geeignet sind, wie z. B. schnelle oder langsame Kanalzyklen, Positionsgröße usw.
Risikokontroll-Module hinzugefügt werden, z. B. maximale Rücknahme, Einschränkung des Tagesverlusts usw. Risiken, die zu größeren Verlusten führen, werden vermieden.
Optimierung der Stop-Strategie. Dynamische Stop-Methoden wie Trailing Stops, um die Stop-Strategie besser an die Markttrends anzupassen.
Die Dong An Chi-Strategie ist insgesamt eine sehr einfache Trendverfolgungsstrategie. Ihre Vorzüge liegen darin, dass sie leicht verständlich und leicht zu automatisieren ist. Sie ist für programmatische Geschäfte geeignet. Es gibt jedoch auch gewisse Risiken, die durch weitere Optimierungen der Parameter an die tatsächlichen Marktbedingungen angepasst werden müssen.
/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2020
//@version=4
strategy("Noro's SimpleTurtle Strategy", shorttitle = "SimpleTurtle str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
sizelong = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot long, %")
sizeshort = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot short, %")
fast = input(20, minval=1)
slow = input(50, minval=1)
showof = input(true, defval = true, title = "Show offset")
showll = input(true, defval = true, title = "Show lines")
showdd = input(false, defval = true, title = "Show label (drawdown)")
showbg = input(true, defval = true, title = "Show background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2
//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)
//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc)
plot(ls, offset = offset, color = colorpc)
plot(center, offset = offset, color = colorsl)
//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)
//Orders
truetime = true
lotlong = 0.0
lotshort = 0.0
lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1]
lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1]
//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and truetime)
strategy.exit("Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if true
strategy.close_all()
strategy.cancel("fast L")
strategy.cancel("fast S")
strategy.cancel("slow L")
strategy.cancel("slow S")
if showdd
//Drawdown
max = 0.0
max := max(strategy.equity, nz(max[1]))
dd = (strategy.equity / max - 1) * 100
min = 100.0
min := min(dd, nz(min[1]))
//Label
min := round(min * 100) / 100
labeltext = "Drawdown: " + tostring(min) + "%"
var label la = na
label.delete(la)
tc = min > -100 ? color.white : color.red
osx = timenow + round(change(time)*10)
osy = highest(100)
la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)