[Trading View Pine インジケータ] 天底判定
一般的な天底の判定式
通常、天底の判定は
f_is_fractal_top(_src)=>_src[3] < _src[2] and _src[2] > _src[1]
f_is_fractal_btm(_src)=>_src[3] > _src[2] and _src[2] < _src[1]
で行う。
もう少し精度を上げるなら、判断に用いるローソク足数を増やして
f_is_fractal_top(_src)=>_src[5] < _src[3] and _src[4] < _src[3] and _src[3] > _src[2] and _src[3] > _src[1]
f_is_fractal_btm(_src)=>_src[5] > _src[3] and _src[4] > _src[3] and _src[3] < _src[2] and _src[3] < _src[1]
みたいな感じ。
より詳細な天底の判定式
これだと精度を上げたいと思った時に、毎回コードを変更しないといけないので、
//@version=3
study(title='Judge Top-Bottom', shorttitle='Top-Bottom', overlay=true)
// ===== Variables =====
// 天底の判定に使うローソク足数(片側)
// len=1 なら、合計3本で判定
// len=2 なら、合計5本で判定
chk_tb_len = input(defval=3, minval=2, title="judge top-btm length")
// ===== Functions =====
// 天井の判定(前後n値と比較)
f_is_fractal_top(_src, offset) =>
is_top = true
for i = offset to (offset + chk_tb_len * 2)
// 中央値より大きい値がある -> 天井ではない
if (_src[offset + chk_tb_len] < _src[i])
is_top := false
break
is_top
// 底の判定(前後n値と比較)
f_is_fractal_btm(_src, offset) =>
is_btm = true
for i = offset to (offset + chk_tb_len * 2)
// 中央値より小さい値がある -> 底ではない
if (_src[offset + chk_tb_len] > _src[i])
is_btm := false
break
is_btm
// Main Logics
bgcolor(f_is_fractal_top(close, 1) ? green : na, title="top", offset=-(chk_tb_len + 1))
bgcolor(f_is_fractal_btm(close, 1) ? red : na, title="bottom", offset=-(chk_tb_len + 1))
という感じにした。
offset を渡しているのは、過去の値で天底を探したい時用。基本的には気にせずに、1 を渡して使えば OK。
コードを見てもらえば分かるが、やっているのは中央値が最高(最低)かどうかのチェック。ありがたい事に、全公開しているにもかかわらず購入してくださった方がいるので、図解で補足しておく。
図やコードを見れば分かる通り、厳密な天底(1番左の例)だけでなく、W字やM字のようなパターン(中央の例)も天底として検出するので注意して欲しい。
引数増やしても良いかも
input で変数用意するのが面倒、入力に応じて判定に使うデータ数を変えたい、って場合は引数 len を追加する方が幸せになれるかもしれない。
// ===== Functions =====
// 天井の判定(前後n値と比較)
f_is_fractal_top(_src, offset, len) =>
is_top = true
for i = offset to (offset + len * 2)
// 中央値より大きい値がある -> 天井ではない
if (_src[offset + len] < _src[i])
is_top := false
break
is_top
// 底の判定(前後n値と比較)
f_is_fractal_btm(_src, offset, len) =>
is_btm = true
for i = offset to (offset + len * 2)
// 中央値より小さい値がある -> 底ではない
if (_src[offset + len] > _src[i])
is_btm := false
break
is_btm
おわりに
有料(¥100)にしてるけど、これで内容は全部です。募金してくれる人がいれば、ジュース代としていただけると嬉しい。Pine スクリプトは、インデントくずれが起きるようなので、コピペ時には注意してください。
マガジン
コメント用note(未購入者向け)
干し芋
ここから先は
0字
¥ 100
サポート頂けると励みになります BTC,BCH: 39kcicufyycWVf8gcGxgsFn2B8Nd7reNUA LTC: LUFGHgdx1qqashDw4WxDcSYQPzd9w9f3iL MONA: MJXExiB7T7FFXKYf9SLqykrtGYDFn3gnaM