見出し画像

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

前回までの話

ローソク本体(box)と上ヒゲ下ヒゲ(line)も、ひとまとめに定義することができる。

以前に、boxを使って上位足のローソクを描いたが、ローソク本体(box)と上ヒゲ下ヒゲ(line)もひとまとめに定義することができる。

type htf_candle
    box body
    line wick
    line tail

これを以下のように初期化する。

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)
  )

candle型, colors型, htf_candle型 を用いて日足のローソク足を描くと以下のようになる。

dayCandle=request.security(syminfo.tickerid,"D",candle.new(time,time_close,open,close,high,low))

bool newCandle=ta.change(dayCandle.t)!=0

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)
	  )

// ローソク本体
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)
// ローソク上ヒゲ
myCandle.wick.set_xy1((dayCandle.t+dayCandle.tc)/2,math.max(dayCandle.o,dayCandle.c))
myCandle.wick.set_xy2((dayCandle.t+dayCandle.tc)/2,dayCandle.h)
myCandle.wick.set_color(dayCandle.o<dayCandle.c?myColor.lime80:myColor.red80)
// ローソク下ヒゲ
myCandle.tail.set_xy1((dayCandle.t+dayCandle.tc)/2,math.min(dayCandle.o,dayCandle.c))
myCandle.tail.set_xy2((dayCandle.t+dayCandle.tc)/2,dayCandle.l)
myCandle.tail.set_color(dayCandle.o<dayCandle.c?myColor.lime80:myColor.red80)

ローソク足の初期化部分が冗長だが、、、

続く


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