압축 모멘텀 표시기

저자:차오장, 날짜: 2022-05-06 17:19:10
태그:SMA

이것은 존 카터의 유동성 지표 TTM Squeeze의 파생물이며 그의 책 Mastering the Trade (11장) 에서 논의되었습니다.

중간선에 있는 검은색 십자선은 시장이 압축에 들어갔음을 나타냅니다. 이것은 낮은 변동성을 의미하며 시장은 폭발적인 움직임 (올림 또는 하락) 에 대비하고 있습니다. 회색색 십자선은 압축 풀이를 의미합니다.

카터 씨는 검은색 십자 후 첫 번째 회색까지 기다리고 운동량 방향으로 위치를 취하는 것을 제안합니다 (예를 들어, 운동량 값이 0 이상이라면, 긴 거리로 가십시오). 운동량 변화가있을 때 위치를 종료하십시오 (색 변경으로 표시되는 증가 또는 감소 ). 이것과 관련된 나의 (한정된) 경험은 ADX / WaveTrend와 같은 추가 지표가 좋은 입구 지점을 놓치지 않기 위해 필요하다는 것을 보여줍니다. 또한, 카터 씨는 간단한 운동량 지표를 사용합니다.

재검토

img


/*backtest
start: 2021-05-05 00:00:00
end: 2022-05-04 23:59:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/

//
// @author LazyBear 
// List of all my indicators: https://www.tradingview.com/v/4IneGo8h/
//
study(shorttitle = "SQZMOM_LB", title="Squeeze Momentum Indicator [LazyBear]", overlay=false)

length = input(20, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(14, title="KC Length")
multKC = input(1.5, title="KC MultFactor")

useTrueRange = input(true, title="Use TrueRange (KC)",defval=true)

// Calculate BB
source = close
basis = ta.sma(source, length)
dev = multKC * ta.stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = ta.sma(source, lengthKC)
range = useTrueRange ? ta.tr : (high - low)
rangema = ta.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 = ta.linreg(source  -  math.avg(math.avg(ta.highest(high, lengthKC), ta.lowest(low, lengthKC)),ta.sma(close,lengthKC)), 
            lengthKC,0)

bcolor = iff( val > 0, 
            iff( val > nz(val[1]), color.lime, color.green),
            iff( val < nz(val[1]), color.red, color.maroon))

scolor = noSqz ? color.blue : sqzOn ? color.black : color.gray 
plot(val, color=bcolor, style=plot.style_histogram, linewidth=4)
plot(0, color=scolor, style=plot.style_cross, linewidth=2)

if val >0 and val < nz(val[1])
    strategy.entry("entry short", strategy.short)
else if val <0 and val > nz(val[1]) 
    strategy.entry("entry long", strategy.long) 
       
    
    

관련

더 많은