Strategie zum Durchbruch durch unilateralen Trendshock


Erstellungsdatum: 2024-01-18 14:59:30 zuletzt geändert: 2024-01-18 14:59:30
Kopie: 1 Klicks: 614
1
konzentrieren Sie sich auf
1617
Anhänger

Strategie zum Durchbruch durch unilateralen Trendshock

Überblick

Die Single Side Trend Shock Breakout Strategy ist eine Breakout-Strategie, bei der die Preiskanäle und die Trendentscheidung genutzt werden. Sie dient der Identifizierung der Trendrichtung, der Eintritts- und Ausstiegsmöglichkeit zwischen den Schwingungsbereichen und der Erreichung des eingestellten Gewinnziels.

Strategieprinzip

Die Strategie arbeitet, indem sie die Auf- und Abwärtsbahn des Preiskanals berechnet, um zu bestimmen, ob der Preis den Kanal durchbrochen hat. Insbesondere berechnet die Strategie zuerst die höchsten und niedrigsten Preise der letzten N-Zyklen und berechnet die Preismittellinie.

Bei der Beurteilung von Trends prüft die Strategie, ob die letzten K-Linien alle über dem Kanal (Multiplex) oder unter dem Kanal (Blank) abgeschlossen sind. Nach der Beurteilung des Trends wartet die Strategie auf die Preisschwankungen, bildet ein Signal für einen Durchbruch in der Nähe des Kanals oberhalb oder unterhalb des Kanals und betritt das Spiel mit einem umgekehrten Einstieg.

Die Strategie erzeugt ein Signal, wenn die Länge der Einheit eine bestimmte Anzahl von Multiplikaten der durchschnittlichen Länge der Einheit überschreitet. Die Strategie setzt ein Gewinnziel nach dem Einstieg und aktiviert den Stopp, wenn der Preis das Ziel erreicht.

Analyse der Stärken

Die Strategie hat folgende Vorteile:

  1. Der Einsatz von Preiskanälen zur Bestimmung der Trendrichtung verringert die Wahrscheinlichkeit von False Breakouts
  2. Umgekehrter Einstieg, profitiert bei Trendschwankungen
  3. Durchbruch als zusätzliches Signal zur Erhöhung der Einstiegsgenauigkeit
  4. Setzen Sie einen Stoppziel, um den Stopp zu aktivieren

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Fehl eingestellte Preiskanalparameter, die zu einem zu großen oder zu kleinen Kanalbereich führen können
  2. Umkehrungen im starken Trend könnten zu größeren Verlusten führen
  3. Durchschnittsergebnisse können zu Falschsignalen führen.
  4. Fehl eingestellte Stop-Off-Systeme können einen Teil der Gewinne beeinträchtigen

Um das Risiko zu verringern, können Parameter angepasst werden, um den Kanalbereich zu verkleinern, um Rückstellungen bei starken Trends zu vermeiden, die Stopplogik zu optimieren usw.

Optimierungsrichtung

Die Strategie kann auch in folgenden Richtungen optimiert werden:

  1. Erhöhung der Indikatoren für Trendbeurteilung, um die Genauigkeit der Trendbeurteilung sicherzustellen
  2. Optimierung der Parameter für den Durchbruch der Entität und Verringerung der Falschsignalrate
  3. Zeit für den Einstieg mit mehr Indikatoren
  4. Dynamische Anpassung der Haltestelle

Zusammenfassen

Die einseitige Trendschwingungs-Breakout-Strategie profitiert von der Umkehrung der Positionen in den Schwingungsbereichen durch Preiskanäle und Trendurteile. Sie hat die Vorteile, Trends zu beurteilen und aktiv zu stoppen, aber auch ein gewisses Risiko. Durch die Bestätigung mehrerer Indikatoren und die Optimierung von Parametern können Risiken verringert und Gewinnspielräume erhöht werden. Die Strategie eignet sich für Short-Line-Handel und kann als Ergänzung zur Trendstrategie dienen.

Strategiequellcode
/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Scalper Strategy v1.5", shorttitle = "Scalper str 1.5", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needbe = input(true, defval = true, title = "Bands Entry")
needct = input(false, defval = false, title = "Counter-trend entry")
bodylen = input(10, defval = 10, minval = 0, maxval = 50, title = "Body length")
trb = input(1, defval = 1, minval = 1, maxval = 5, title = "Trend bars")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
chd = close > hd
cld = close < ld
uptrend = trb == 1 and chd ? 1 : trb == 2 and chd and chd[1] ? 1 : trb == 3 and chd and chd[1] and chd[2] ? 1 : trb == 4 and chd and chd[1] and chd[2] and chd[3] ? 1 : trb == 5 and chd and chd[1] and chd[2] and chd[3] and chd[4] ? 1 : 0
dntrend = trb == 1 and cld ? 1 : trb == 2 and cld and cld[1] ? 1 : trb == 3 and cld and cld[1] and cld[2] ? 1 : trb == 4 and cld and cld[1] and cld[2] and cld[3] ? 1 : trb == 5 and cld and cld[1] and cld[2] and cld[3] and cld[4] ? 1 : 0
trend = dntrend == 1 and high < center ? -1 : uptrend == 1 and low > center ? 1 : trend[1]

//trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = ema(body, 30) / 10 * bodylen

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)