Die Strategie kombiniert drei verschiedene technische Indikatoren, generiert Handelssignale mit einem doppelten Gleichlinien-System und verwendet die Farbe und die Einheit der K-Linie als zusätzliche Filterbedingungen, um eine relativ stabile und effektive Kurzlinien-Handelsstrategie zu erstellen.
Die gesamte Strategie verwendet eine Kombination aus Bollinger Bands und KC-Kanälen, um die Komprimierungs- und Expansionsphasen eines Marktes zu identifizieren. Konkret wird als Komprimierung betrachtet, wenn die Bollinger Band innerhalb des KC-Kanals ist, und als Expansion, wenn die Bollinger Band den KC-Kanal durchbricht. Komprimierung repräsentiert die Möglichkeit einer Verschärfung der Schwankungen und einer Trendwende, bei der die lineare Regression als primärer Handelssignal verwendet wird.
Wenn das lineare Regressions-Histogramm positiv ist und die Bar eine rote K-Linie ist und die K-Linie negativ ist und die K-Linie 1⁄3 größer ist als die durchschnittliche K-Linie der letzten 30 K-Linien, wird ein solches Kombinationssignal ausgeführt. Umgekehrt, wenn das lineare Regressions-Histogramm negativ ist und die Bar eine grüne K-Linie ist, ist die Entität ebenfalls größer.
Die Strategie bietet einen visuellen Hintergrund für die Kompression und Expansion, um zu helfen, die Phasen des Marktes zu bestimmen.
Das Risiko kann durch Anpassung der Indikatorparameter und Optimierung der Filterbedingungen verringert werden.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Diese Strategie kombiniert mehrere Kennzahlen, erhöht die Filterbedingungen und identifiziert Kompressionschancen, um eine robuste und effiziente Short-Line-Strategie zu bilden. Durch die Optimierung von Parametern und Filterbedingungen können bessere Ergebnisse erzielt werden. Die Strategie-Framework ist flexibel und kann leicht in verschiedenen Sorten angepasst werden, was weitere Tests und Optimierungen wert ist.
/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2017
//@version=2
strategy(shorttitle = "Squeeze str 1.0", title="Noro's Squeeze Momentum Strategy v1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
length = input(20, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = true
usecolor = input(true, defval = true, title = "Use color of candle")
usebody = input(true, defval = true, title = "Use EMA Body")
needbg = input(false, defval = false, title = "Show trend 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")
// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev
// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC
sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = (sqzOn == false) and (sqzOff == false)
val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)
bcolor = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : gray
trend = val > 0 ? 1 : val < 0 ? -1 : 0
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)
//EMA Body
body = abs(close - open)
emabody = ema(body, 30) / 3
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = trend == 1 and (bar == -1 or usecolor == false) and (body > emabody or usebody == false)
dn = trend == -1 and (bar == 1 or usecolor == false) and (body > emabody or usebody == false)
if up
strategy.entry("Long", strategy.long)
if dn
strategy.entry("Short", strategy.short)