Donchian Wave Channel Handelsstrategie


Erstellungsdatum: 2023-11-08 12:31:56 zuletzt geändert: 2023-11-08 12:31:56
Kopie: 0 Klicks: 693
1
konzentrieren Sie sich auf
1617
Anhänger

Donchian Wave Channel Handelsstrategie

Überblick

Die Dongjian Volatility Channel Trading Strategy beurteilt die aktuelle Preisentwicklung durch die Berechnung von Höchst- und Tiefpreiskanälen innerhalb eines bestimmten Zeitraums und kombiniert diese mit einem Durchbruch von Kanälen, um Long- und Short-Trades zu tätigen. Die Strategie eignet sich für den Handel mit Aktien und Kryptowährungen mit hoher Volatilität.

Strategieprinzip

Die Strategie erstellt einen Kanal, indem sie den höchsten Preis pcmax und den niedrigsten Preis pcmin innerhalb des letzten (historischen) Zeitraums berechnet. Die Berechnungsmethode für den Up- und Down-Rail des Kanals ist:

Aufwärtsbahnyh = pcmax - (pcmax - pcmin) * (100 - percentDev)/100

Unterbahnyl = pcmin + (pcmax - pcmin) * percentDev/100

Der Bericht wurde von der BBC veröffentlicht.

Wenn der Preis über den Kurs geht, erzeugt er ein Long-Signal; wenn der Preis über den Kurs geht, erzeugt er ein Short-Signal.

Die Ursachen für die Entstehung eines bestimmten Handelssignals werden wie folgt beurteilt:

  1. boundup = high > yh Ermittlung, ob ein Überschreiten möglich ist

  2. bounddn = low < yl Beurteilung, ob ein Abbruch aufgetreten ist

  3. upsign = sma(bounddn, 2) == 1 Durch die Durchschnittslinie von bounddn beurteilt, dass die Abfahrt fortgesetzt wird

  4. dnsign = sma(boundup, 2) == 1 Durch die Durchschnittslinie des Boundups beurteilt, dass die Fahrbahn kontinuierlich durchbrochen wird

  5. Exitup = dnsign Durchbruch auf der Bahn erzeugt ein Gleichgewichtsignal

  6. Exitdn = upsign Durchbruch der Unterbahn erzeugt ein Ausgleichssignal

  7. if upsign Durchbruch der Unterbahn erzeugt mehrere Signale

  8. if dnsign Durchbruch auf Gleis erzeugt Abbruchsignal

Die Strategie setzt gleichzeitig die Start- und Endzeit ein, um unnötige Übernachtungen zu vermeiden.

Strategische Vorteile

  1. Trends mit dem Dongqian-Kanal sind besser nachvollzogen

  2. Die Option bietet die Möglichkeit, beide Wege zu handeln, indem Sie gleichzeitig die Options- und die Short-Signale einstellen.

  3. Durch einheitliche Filterung von Signalen wird ein falscher Handel vermieden.

  4. Optionale Stop-Loss-Methoden und Risikokontrolle

  5. Setzen Sie einen Start-und-Stopp-Zeitpunkt, um ein Übernachtungsrisiko zu vermeiden

Strategisches Risiko

  1. Der Dongjian-Kanal ist auf die Parameter history und percentDev empfindlich und muss optimiert werden, um die Parameter für verschiedene Sorten anzupassen.

  2. Das ist ein Fehler, der bei einem Erdbeben auftreten kann.

  3. Die Einflussnahme auf das Ergebnis im realen Geschäft ohne Berücksichtigung der Bestellverwaltungsfaktoren

  4. Risiken für übermäßige Positionen auf dem Konto ohne Berücksichtigung von Positionsmanagementfaktoren

  5. Die Anlage muss in der Realität ohne Berücksichtigung von Kapitalverwaltungsfaktoren in angemessener Weise aufgestellt werden.

Richtung der Strategieoptimierung

  1. Optimierung der Parameter history und percentDev, um sie besser für verschiedene Sorten zu nutzen

  2. Mehr Filter, um Fehlsignale bei Erschütterungen zu vermeiden

  3. Ein Positionsmanagement-Modul, das den Kapitalanteil der einzelnen Positionen steuert

  4. Hinzugefügt wurde ein Modul zur Vermögensverwaltung, um den Anteil der Gesamtposition an den Vermögensbestand zu begrenzen.

  5. Zusätzliche Bestellmanagement-Funktionen zur Optimierung der Bestellmethode

Zusammenfassen

Die Dongguan Volatility Channel Trading Strategie beurteilt Trends und Handelssignale durch einen Kanalbruch. Die Rückmessung ist besser und bi-Weg-Trading-Fähigkeiten. Die Strategie birgt jedoch einige Risiken und erfordert Optimierungen in Bezug auf Parameter, Filter, Positionsmanagement, Kapitalmanagement und Auftragsmanagement, um eine stabile Ertragslage in der Börse zu erzielen.

Strategiequellcode
/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

////////////////////////////////////////////////////////////
//  Copyright by AlexInc v1.0 02/07/2018  @aav_1980
// PriceChannel strategy
// If you find this script helpful, you can also help me by sending donation to 
// BTC 16d9vgFvCmXpLf8FiKY6zsy6pauaCyFnzS
// LTC LQ5emyqNRjdRMqHPHEqREgryUJqmvYhffM
////////////////////////////////////////////////////////////
//@version=3
strategy("AlexInc PriceChannel Str", overlay=false)
history = input(20)
percentDev = input(13)
capital = input(100)

needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usestoploss = input(true, defval = true, title = "Stop Loss")
stoplossmult = input(3.8, defval = 3.8, minval = 1, maxval = 10, title = "Stop loss multiplicator")


fromyear = input(2018, defval = 2018, 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")

bodymin = min( open, close)
bodymax = max(open, close)

pcmax = highest(bodymax, history)
pcmin = lowest(bodymin, history)

yh = ((pcmax - pcmin) / 100 * (100 - percentDev)) + pcmin
yl = ((pcmax - pcmin) / 100 * percentDev) + pcmin

plot(pcmax)
plot(pcmin)
plot(yh)
plot(yl)

//1
bounddn = low < yl ? 1 : 0
boundup = high > yh ? 1 : 0
upsign = sma(bounddn, 2) == 1
dnsign = sma(boundup, 2) == 1
//2
//upsign = crossover(bodymin, yl)
//dnsign = crossunder(bodymax , yh)


exitup = dnsign
exitdn = upsign

lot = strategy.equity / close * capital / 100


xATR = atr(history)
nLoss = usestoploss ? stoplossmult * xATR : na

stop_level_long = 0.0
stop_level_long := nz(stop_level_long[1])

stop_level_short = 0.0
stop_level_short := nz(stop_level_short[1])

pos = strategy.position_size
if pos >0 and pos[1] <= 0 //crossover(pos, 0.5)
    stop_level_long = strategy.position_avg_price - nLoss
if pos < 0 and pos[1] >= 0 //crossunder(pos, -0.5)
    stop_level_short = strategy.position_avg_price + nLoss
if pos == 0    
    stop_level_long = bodymin - nLoss
    stop_level_short = bodymax + nLoss

//plot(bodymax + nLoss, color=red)
//plot(bodymin - nLoss, color=red)
plot(stop_level_long, color=red)
plot(stop_level_short, color=red)

if upsign
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dnsign
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

if true
    strategy.close_all()


//if strategy.position_size != 0
//    strategy.exit("Exit Long", from_entry = "Long", stop = stop_level_long)
//    strategy.exit("Exit Short", from_entry = "Short", stop = stop_level_short)