Pine Script™ (v5) の覚書 - 5 : boxを使って上位足のローソクを描く (2)
前回までの話。
boxを使って上位足のローソクを描いてみる2
上位足のローソクを描く際に留意すべき点は、
・新しいboxオブジェクトの生成タイミング
・それ以外はclose値によって、boxの形と陰線か陽線かが決まるので、これを更新し続ける(set)
こと。
新しいboxオブジェクトを生成すべきタイミングは、上位足のローソクが切り替わったタイミング。
これは例えば、上位足のローソク足のtime値が変わったタイミングと考えられる。
ta.changeとその引数
ta.change(source) → series int
ta.change を使うと、sourceのlength本前の値との差を得られる。
lengthのデフォルト値は1なので、省略するとローソク1本前と現時点の差を得ることになる。
bool new_bar=ta.change(time_D)>0 ? true : false
上位足の開始時間が変わることを、新しい上位足と考え、新しいbarになったタイミングだけboxオブジェクトをnew、それ以外はclose値を更新させる。
//@version=5
indicator("マイスクリプト", overlay=true)
time_D=request.security(syminfo.tickerid, "D", time)
time_close_D=request.security(syminfo.tickerid, "D", time_close)
open_D=request.security(syminfo.tickerid, "D", open)
close_D=request.security(syminfo.tickerid, "D", close)
//ヒゲのために必要な値
high_D=request.security(syminfo.tickerid, "D", high)
low_D=request.security(syminfo.tickerid, "D", low)
var daycandle=box.new(time_D, open_D, time_close_D, close_D, xloc=xloc.bar_time)//最初の一回
bool new_bar=ta.change(time_D)>0?true:false//上位足更新のタイミングをチェック
if new_bar
daycandle:=box.new(time_D, open_D, time_close_D, close_D, xloc=xloc.bar_time)
daycandle.set_rightbottom(time_close_D, close_D)
これをチャートへ反映してみると図1のようになる。
boxを使って上位足のローソクを描いてみる3
Boxで描いているのはローソク足だから、陰線と陽線を違う色で表示する。
open<close であれば陽線、それ以外を陰線
として色を設定する。
// ローソク足の陰線と陽線
cGreen=color.green
cRed=color.red
var daycandle=box.new(time_D, open_D, time_close_D, close_D, xloc=xloc.bar_time)//最初の一回
if new_bar
daycandle=box.new(time_D, open_D, time_close_D, close_D, xloc=xloc.bar_time)
daycandle.set_rightbottom(time_close_D, close_D)
daycandle.set_border_color(open_D<close_D?cGreen:cRed)
daycandle.set_bgcolor(na) // 見づらいので背景色を消す
これをチャートへ反映してみると図2のようになる。
box() はデフォルト状態で bgcolor が color.blue になっている為、na値を設定する。
続く
この記事が気に入ったらサポートをしてみませんか?
コメント