見出し画像

Pine Script™ (v5) の覚書 - 作ってみる:MTF移動平均線を描くインジケータの作成 (3)

前回までの話


インジケータの準備

パーツが揃ったら、まず、必要な変数、関数を定義する。

//@version=5
indicator("MTF SMA/EMA",overlay=true)

ma_label(y,textline="",textcolor=color.blue,offset=2)=>
    var l=label.new(na,na,textline,textcolor=textcolor,style=label.style_none)
    l.set_xy(bar_index+offset,y)
    l

mysrc=close//移動平均を計算するソース
myspan=20//移動平均の期間

cSMA=color.aqua//SMA用の色
cEMA=color.yellow//EMA用の色

wShort=1//短期用の太さ
wMiddle=2//中期用の太さ
wLong=3//長期用の太さ


//HTFを計算する関数
tfhigher(tf)=>
    tfsec=timeframe.in_seconds(tf)
    htf=timeframe.in_seconds("1")>tfsec?"1":
      timeframe.in_seconds("5")>tfsec?"5":
      timeframe.in_seconds("15")>tfsec?"15":
      timeframe.in_seconds("60")>tfsec?"60":
      timeframe.in_seconds("240")>tfsec?"240":
      timeframe.in_seconds("D")>tfsec?"D":
      timeframe.in_seconds("W")>tfsec?"W":
      timeframe.in_seconds("M")>tfsec?"M":
      timeframe.in_seconds("3M")>tfsec?"3M":
      timeframe.in_seconds("12M")>tfsec?"12M":na
    htf

tf/htfの取得、移動平均の取得

定義した変数と関数を用いて、SMAとEMAを取得する。

tf=timeframe.period//今のTF
htf1=tfhigher(tf)//1段上のTF
htf2=tfhigher(htf1)//2段上のTF(1段上の1段上)

sma20=ta.sma(mysrc,myspan)//チャートのTFの20SMA
sma20_1=request.security(syminfo.tickerid,htf1,ta.sma(mysrc,myspan))//1段上の20SMA
sma20_2=request.security(syminfo.tickerid,htf2,ta.sma(mysrc,myspan))//2段上の20SMA

ema20=ta.ema(mysrc,myspan)//チャートのTFの20EMA
ema20_1=request.security(syminfo.tickerid,htf1,ta.ema(mysrc,myspan))//1段上の20EMA
ema20_2=request.security(syminfo.tickerid,htf2,ta.ema(mysrc,myspan))//2段上の20EMA

平均線のplotとlabel

取得したSMA/EMAをplotし、labelを追加する。

plot(sma20, "short:20SMA",cSMA,wShort)
plot(sma20_1,"middle:20SMA",cSMA,wMiddle)
plot(sma20_2,"long:20SMA",cSMA,wLong)

label_sma=ma_label(sma20,tf+":20SMA",cSMA)
label_sma1=ma_label(sma20_1,htf1+":20SMA",cSMA)
label_sma2=ma_label(sma20_2,htf2+":20SMA",cSMA)

plot(ema20,  "short:20EMA",cEMA,wShort)
plot(ema20_1,"middle:20EMA",cEMA,wMiddle)
plot(ema20_2,"long:20EMA",cEMA,wLong)

label_ema=ma_label(ema20,tf+":20EMA",cEMA)
label_ema1=ma_label(ema20_1,htf1+":20EMA",cEMA)
label_ema2=ma_label(ema20_2,htf2+":20EMA",cEMA)

続く


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