
이 전략은 세 가지 다른 기술 지표를 결합하여 쌍평선 시스템을 사용하여 거래 신호를 생성하고 K 선의 색상과 개체를 추가 필터링 조건으로 사용하여 비교적 안정적이고 효과적인 단선 거래 전략을 구축합니다.
전체 전략은 KC 통로 안에 있는 부린 띠를 압축 및 확장 단계로 인식하기 위해 부린 띠와 KC 통로를 조합하여 사용한다. 구체적으로, 부린 띠는 KC 통로 안에 있을 때 압축으로 간주되고, 부린 띠가 KC 통로를 뚫을 때 확장으로 간주된다. 압축은 변동이 심화되고 트렌드 반전이 일어날 가능성을 나타냅니다. 이 경우 선형 회귀를 주요 거래 신호 지표로 사용합니다.
만약 선형 회귀 히스토그램이 긍정적이면 (→ 상승세를 나타냅니다), 그리고 이 바가 빨간색 K선 (→ 이 바가 마이너스를 나타냅니다), 그리고 K선 개체가 지난 30개의 K선 개체들의 평균보다 1⁄3 더 크면, 이러한 조합 신호는 더 많이 이루어집니다; 반대로 선형 회귀 히스토그램이 부정적이면, 이 바가 초록색 K선이고, 개체도 더 크면, 비어집니다.
이 전략은 시장의 단계에 대한 판단을 돕기 위해 동시에 압축과 확장의 배경이 시각화됩니다.
지표 매개 변수를 조정하거나, 필터링 조건을 최적화하는 등의 방법으로 위험을 줄일 수 있다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
이 전략은 여러 지표를 통합하여 압축 기회를 식별하면서 필터링 조건을 증가시켜 보다 견고한 고효율 단선 전략을 형성한다. 매개 변수 및 필터링 조건을 최적화함으로써 더 나은 효과를 얻을 수 있다. 그리고 이 전략의 프레임워크는 유연하며, 다른 품종에서 사용하기 쉽게 조정할 수 있으며, 추가 테스트 및 최적화를 할 가치가 있다.
/*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)