![見出し画像](https://assets.st-note.com/production/uploads/images/159159026/rectangle_large_type_2_cba75837f2495412f86b8cd465c2acf9.png?width=1200)
Pine Script™ (v5) の覚書 - 作ってみる:MTF RSIを表示するインジケータの作成 (2)
前回までの話
MTF RSIをプロットするためのパーツ
上位のtimeframeを取得する関数
上位のtimeframeを取得する関数を定義し、1〜3段階上のtimeframeを変数に設定する。
higher_tf(tf=timeframe.period)=>
_s=timeframe.in_seconds(tf)
timeframe.in_seconds("1")>_s?"1":
timeframe.in_seconds("5")>_s?"5":
timeframe.in_seconds("15")>_s?"15":
timeframe.in_seconds("60")>_s?"60":
timeframe.in_seconds("240")>_s?"240":
timeframe.in_seconds("D")>_s?"D":
timeframe.in_seconds("W")>_s?"W":
timeframe.in_seconds("M")>_s?"M":
timeframe.in_seconds("3M")>_s?"3M":
timeframe.in_seconds("12M")>_s?"12M":na
var htf1=higher_tf() // 1段上のtimeframe
var htf2=higher_tf(htf1) // 2段上
var htf3=higher_tf(htf2) // 3段上
RSIの期間を定義
RSIの期間を定義する変数を設定する。
rs=input.int(7,'短期')
rm=input.int(14,'中期')
買われすぎ(RSI70)と売られすぎ(RSI30)の水平線を定義
買われすぎ(RSI70)と売られすぎ(RSI30)の値に水平線を引くための変数を定義する。
水平線のスタイルを一括で変更出来るようにしたいので、設定画面のパラメータで線種('...','---')を選べるようにし、選んだ線種を元にhlineのスタイルを決定出来るようにする。
hlc=input.color(color.new(color.gray,40),'hline 線色')
hs=input.string('...','hline 線種',['...','---']) // 水平線のスタイルを選択する為の文字列(一括変更用)
hls=hs=='...'?hline.style_dotted:hline.style_dashed
hlw=input.int(2,'hline 線幅',minval=1,maxval=4)
rob=input.int(70,'買われすぎライン')
ros=input.int(30,'売られすぎライン')
RSI値をプロットする色を扱う型を定義
RSI値をプロットする色を扱う型を定義する。
type rsi_colors
color s
color m
var rc=rsi_colors.new()
var rc1=rsi_colors.new()
var rc2=rsi_colors.new()
var rc3=rsi_colors.new()
TFごとのRSI値の太さと色を定義
TFごとのRSI値をプロットする太さと色を定義する。
rw=input.int(1,'current 線幅',minval=1,maxval=4)
rc.s:=input.color(color.new(color.yellow,10),'current 短期')
rc.m:=input.color(color.new(color.orange,10),'current 中期')
rw1=input.int(2,'htf1 線幅',minval=1,maxval=4)
rc1.s:=input.color(color.new(color.yellow,50),'htf1 短期')
rc1.m:=input.color(color.new(color.orange,50),'htf1 中期')
rw2=input.int(3,'htf2 線幅',minval=1,maxval=4)
rc2.s:=input.color(color.new(color.yellow,70),'htf2 短期')
rc2.m:=input.color(color.new(color.orange,70),'htf2 中期')
rw3=input.int(4,'htf3 線幅',minval=1,maxval=4)
rc3.s:=input.color(color.new(color.yellow,90),'htf3 短期')
rc3.m:=input.color(color.new(color.orange,90),'htf3 中期')
RSI値を扱うための型を定義
RSI値を扱うための型を定義する。
type rsi_value
float s
float m
RSI値を取得
RSI値を取得する。
var rsi=rsi_value.new()
rsi.s:=ta.rsi(close,rs)
rsi.m:=ta.rsi(close,rm)
var rsi1=rsi_value.new()
rsi1.s:=request.security(syminfo.tickerid,htf1,ta.rsi(close,rs))
rsi1.m:=request.security(syminfo.tickerid,htf1,ta.rsi(close,rm))
var rsi2=rsi_value.new()
rsi2.s:=request.security(syminfo.tickerid,htf2,ta.rsi(close,rs))
rsi2.m:=request.security(syminfo.tickerid,htf2,ta.rsi(close,rm))
var rsi3=rsi_value.new()
rsi3.s:=request.security(syminfo.tickerid,htf3,ta.rsi(close,rs))
rsi3.m:=request.security(syminfo.tickerid,htf3,ta.rsi(close,rm))
MTF RSIをプロットする
買われすぎ、売られすぎの水平線を引く。
hline(rob,'買われすぎライン',hlc,hls,hlw)
hline(ros,'売られすぎライン',hlc,hls,hlw)
RSI値をプロットする。
plot(rsi3.s,'htf3 短期',rc3.s,rw3)
plot(rsi3.m,'htf3 中期',rc3.m,rw3)
plot(rsi2.s,'htf2 短期',rc2.s,rw2)
plot(rsi2.m,'htf2 中期',rc2.m,rw2)
plot(rsi1.s,'htf1 短期',rc1.s,rw1)
plot(rsi1.m,'htf1 中期',rc1.m,rw1)
plot(rsi.s,'短期',rc.s,rw)
plot(rsi.m,'中期',rc.m,rw)
この時点での描画状態は以下となる。
![](https://assets.st-note.com/img/1730428023-m39w7Mr5DRk8UoGSxlFjiuN2.png?width=1200)
続く
いいなと思ったら応援しよう!
![rca](https://d2l930y2yx77uc.cloudfront.net/assets/default/default_profile_3-39088fff430aa9ec11d6e2a385dbcad45c8b79bde6c0c9ded10cd7abb960174f.png?width=600&crop=1:1,smart)