見出し画像

色んなインジケーターのpine script置き場

かぴぱら(@kapipara180)です。

使いたくなったインジケーター(主に拾い物)を置いておきます。(随時更新:最終更新 2018/7/24 ADX momentumを追加)
メモがてらコメントも記載します。

DMI (方向性指数)・ADX

有名ですね。トレンドの有無を確認するための指標です。長い足のADXでトレンド確認をして(セットアップ)、トレンドがある場合のトレンド方向向けのシグナルが出たら売買するというロジックに利用しようと思います。

TraderR0BERTという方が「DMI ADX TREND 」という名前で公開しています。

//Created by @TraderR0BERT, NETWORTHIE.COM, last updated 01/26/2016
//DMI Indicator 
//Resolution input option for higher/lower time frames

study(title="DMI ADX TREND 2.0", shorttitle="ADX TREND 2.0")

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
thold = input(20, title="Threshold")

threshold = thold

//Script for Indicator
dirmov(len) =>
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]
	
adx(dilen, adxlen) => 
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

osob=input(40,title="Exhaustion Level for ADX, default = 40")

col = sig >= sig[1] ? green : sig <= sig[1] ? red : gray 

//Plot Definitions Current Timeframe
p1 = plot(sig, color=col, linewidth = 3, title="ADX")
p2 = plot(sig, color=col, style=circles, linewidth=3, title="ADX")
p3 = plot(up, color=blue, linewidth = 3, title="+DI")
p4 = plot(up, color=blue, style=circles, linewidth=3, title="+DI")
p5 = plot(down, color=fuchsia, linewidth = 3, title="-DI")
p6 = plot(down, color=fuchsia, style=circles, linewidth=3, title="-DI")
h1 = plot(threshold, color=black, linewidth =3, title="Threshold")

trender = (sig >= up or sig >= down) ? 1 : 0
bgcolor(trender>0?black:gray, transp=85)

//Alert Function for ADX crossing Threshold
Up_Cross = crossover(up, threshold)
alertcondition(Up_Cross, title="DMI+ cross", message="DMI+ Crossing Threshold")
Down_Cross = crossover(down, threshold)
alertcondition(Down_Cross, title="DMI- cross", message="DMI- Crossing Threshold")

・BBand width ratio

この本を読んで、ADX+BBand width ratioのセットアップを試してみたくなったので探しました。結果公開スクリプトになかったので作成(+公開:https://jp.tradingview.com/script/184rSyji/)しました。

かなりマイナーらしく計算式がどこにも載っていなかったので、公開されているmql5のインジケーターから計算式を拝借しました。バンドの幅を見るというコンセプトはわかりますが、SMAで割る理由は謎ですね。。

コードは以下の通り。

//@version=3
//Created by kapipara180@ , last updated 2018/7/20
study("BBand width ratio" )

BB_Period = input(20, title="BBand period")
Deviation = input(2.0, "Deviation")

sko = stdev(close,BB_Period)
BBandwr = 2*(Deviation*sko)/sma(close,BB_Period)*1000 //length from UPband to Downband / SMA

plot(BBandwr, linewidth=3, color= red)

・ADX momentum

相場にトレンドが発生しているか否かを判定する指標であるADXを使いやすくするためにモメンタムを取得したものです。ADXの値が一定以上の場合にトレンドがあるとみなす人もいますが、ADXが上昇中はトレンドがあり、下降中はトレンドレスだと判断するほうが有用だと思います。この考えをシステムに取り入れるためには、上昇中、下降中を客観的に判断することが必要です。そこで、ADXのn差分(ADX[0] - ADX[n])を取得したものをSMAでスムージングしたADX momentumを作成しました。Tradingviewで公開もしています(https://jp.tradingview.com/script/XVjk9blA/)

//Created by @kapipara180 , last updated 2018/7/23
//https://twitter.com/kapipara180
//@version=3
study(title="ADX momentum", overlay=false)

//ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")

dirmov(len) =>
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]
	
adx(dilen, adxlen) => 
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

n = input(1,title="momentum span")
//M = P - Pn M:Momentum

ADX_momentum = 0.0
ADX_momentum := sig[0] - sig[n]

//col = ADX_momentum >= 0 ? green : ADX_momentum <= 0 ? red : gray 
//plot(ADX_momentum, linewidth=3, color=col)

ADX_momentum_smooth = 0.0
ADX_momentum_smooth := sma(ADX_momentum, 5)

col = ADX_momentum_smooth >= 0 ? green : ADX_momentum_smooth <= 0 ? red : gray 
plot(ADX_momentum_smooth, linewidth=3, color=col)
bgcolor(color=col)





この記事が気に入ったらサポートをしてみませんか?