
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.
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.
Die Strategie hat folgende Vorteile:
Die Strategie birgt auch einige Risiken:
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.
Die Strategie kann auch in folgenden Richtungen optimiert werden:
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.
/*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)