見出し画像

Pine Script™ (v5) の覚書 - 8 : UDTs(user-defined types)を使ってみる (5)

前回までの話


前回使ったtimeframe.in_seconds()について

// ローソク本体
myCandle.body.set_lefttop(dayCandle.t,dayCandle.o)
myCandle.body.set_rightbottom(dayCandle.tc-timeframe.in_seconds(timeframe.period)*1000,dayCandle.c)
myCandle.body.set_border_color(dayCandle.o<dayCandle.c?myColor.lime70:myColor.red70)
myCandle.body.set_bgcolor(dayCandle.o<dayCandle.c?myColor.lime70:myColor.red70)

前回ローソク本体を描くのに使った timeframe.in_seconds() は引数のtimeframe(デフォルトはtimeframe.period:現在のtimeframe)をに変換する。一方で、xloc.bar_timeではX座標の値がミリ秒で扱われる。このため、timeframe.in_seconds() の返り値に1000を掛けた値が現在足のローソク一本分の幅となる。

boxとlineの初期化部分の簡素化

boxとlineの初期化部分が冗長なので、少し工夫する。

myCandle=htf_candle.new(
      box.new(na,na,na,na,xloc=xloc.bar_time),
      line.new(na,na,na,na,xloc=xloc.bar_time,width=4),
      line.new(na,na,na,na,xloc=xloc.bar_time,width=4)
      )

if newCandle
	myCandle:=htf_candle.new(
	  box.new(na,na,na,na,xloc=xloc.bar_time),
	  line.new(na,na,na,na,xloc=xloc.bar_time,width=4),
	  line.new(na,na,na,na,xloc=xloc.bar_time,width=4)
	  )

ローソク足のボディとヒゲの初期値を定義する部分を関数化(create_new_candle())すると以下のようになる。

create_new_candle()=>htf_candle.new(
  box.new(na,na,na,na,xloc=xloc.bar_time),
  line.new(na,na,na,na,xloc=xloc.bar_time,width=4),
  line.new(na,na,na,na,xloc=xloc.bar_time,width=4)
  )

var myCandle=create_new_candle()
if newCandle
    myCandle:=create_new_candle()

続く


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