Chỉ số Động lực nén

Tác giả:ChaoZhang, Ngày: 2022-05-06 17:19:10
Tags:SMA

Đây là một phái sinh của chỉ số biến động TTM Squeeze của John Carter, như được thảo luận trong cuốn sách của ông Mastering the Trade (tâm 11).

Chữ thập đen trên đường giữa cho thấy thị trường vừa bước vào một sự ép (Bollinger Bands đang ở trong Keltner Channel). Điều này biểu thị sự biến động thấp, thị trường chuẩn bị cho một động thái bùng nổ (lên hoặc xuống).

Mr.Carter đề nghị đợi cho đến khi màu xám đầu tiên sau khi một chữ thập đen, và có một vị trí theo hướng của động lượng (ví dụ, nếu giá trị động lượng là trên 0, đi dài). Ra khỏi vị trí khi động lượng thay đổi (tăng hoặc giảm được biểu thị bằng một sự thay đổi màu sắc). Kinh nghiệm của tôi (miễn hạn) với điều này cho thấy, một chỉ số bổ sung như ADX / WaveTrend, là cần thiết để không bỏ lỡ các điểm đầu vào tốt. Ngoài ra, Mr.Carter sử dụng chỉ số động lượng đơn giản, trong khi tôi đã sử dụng một phương pháp khác (dựa trên quy tắc) để vẽ biểu đồ.

Kiểm tra lại

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) 
       
    
    

Có liên quan

Thêm nữa