![見出し画像](https://assets.st-note.com/production/uploads/images/143035236/rectangle_large_type_2_5144718b7256d879019377ede5f09bed.png?width=1200)
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()
続く
この記事が気に入ったらサポートをしてみませんか?