資源の読み込みに... 荷物...

圧縮モメント インディケーター

作者: リン・ハーンチャオチャン, 日時: 2022-05-06 17:19:10
タグ:SMA

これは,ジョン・カーターTTM Squeeze変動指標の派生値で,彼の本Mastering the Trade (11章) で議論されています.

中央線上の黒いクロスは,市場が圧縮状態に入っていることを示しています.これは低波動性を意味し,市場は爆発的な動き (上下) に準備しています.灰色のクロスは"圧縮状態の解放"を意味しています.

カーター氏は,黒いクロスの後に最初の灰色になるまで待って,モメントの方向にポジションを取ることを提案しています (例えば,モメント値がゼロ以上であれば,ロングに行く).モメントが変化するとポジションを退場します (色の変化によって表示される増加または減少).これに関する私の (限られた) 経験は,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) 
       
    
    

関連性

もっと