記事一覧
Pine Script™ (v5) の覚書 - 8 : UDTs(user-defined types)を使ってみる (7)
前回までの話し
ついでに陽線陰線で挙動を変える部分もmethod化してみる。
myCandle.update(dayCandle,dayCandle.o<=dayCandle.c?myColor.lime70:myColor.red70,dayCandle.o<=dayCandle.c?myColor.lime80:myColor.red80)
candle型に陽線だった場合にtrueを返す
Pine Script™ (v5) の覚書 - コラム :スクリプトが落ちる! array()の罠
「!スクリプトエラー」
無情なメッセージに出会ったことはありませんか?
存在しないオブジェクトにアクセスするとすぐにこの状況になります。
例えば、配列<array>は便利ですが、存在しない配列の要素にアクセスすると簡単にこの状況になります。
myArray=request.security_lower_tf(syminfo.tickerid,’1’,ta.sma(close,20))//一分
Pine Script™ (v5) の覚書 - 作ってみる:日足と週足と月足を描くインジケータの作成 (5)
前回までの話
ローソクとboxを描く
日足(あるいは週足や月足)が切り替わらない場合、既存の足の値を最新値に更新し、切り替わったら新しい足を描く。
var D=new_day_candle()if newD D:=new_day_candle()D.update_day(dayCandle,candleColor)var W=new_week_candle()if newW W:
Pine Script™ (v5) の覚書 - 作ってみる:日足と週足と月足を描くインジケータの作成 (4)
前回までの話
ローソクの更新のためのおまじない日足と週足の更新タイミングを知るための変数
bool newD=ta.change(dayCandle.t)!=0bool newW=ta.change(weekCandle.t)!=0bool newM=ta.change(monthCandle.t)!=0
日足と週足と月足のboxのデフォルト値を関数化
new_day_candle()=>
Pine Script™ (v5) の覚書 - 8 : UDTs(user-defined types)を使ってみる (6)
前回までの話
htf_candle型のオブジェクトの各値を設定するあたりが複雑なので、なんとかしたい。methodを用いる方法と、関数を用いる方法をそれぞれやってみる。
methodを用いる方法
// ローソク本体myCandle.body.set_lefttop(dayCandle.t,dayCandle.o)myCandle.body.set_rightbottom(dayCandle.
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)m
Pine Script™ (v5) の覚書 - 作ってみる:日足と週足と月足を描くインジケータの作成 (3)
前回までの話
線の太さ(週足、月足用)、色を設定する線の太さを設定する。デフォルトは4、min-maxは1-4
width = input.int(4,'width',1,4)
線の色を設定する。赤と青の2色。
candleColor.bullish := input.color(color.new(color.lime,75),title='bullish')candleColor.be
Pine Script™ (v5) の覚書 - 8 : UDTs(user-defined types)を使ってみる (4)
前回までの話
ローソク本体(box)と上ヒゲ下ヒゲ(line)も、ひとまとめに定義することができる。
以前に、boxを使って上位足のローソクを描いたが、ローソク本体(box)と上ヒゲ下ヒゲ(line)もひとまとめに定義することができる。
type htf_candle box body line wick line tail
これを以下のように初期化する。
myCand
Pine Script™ (v5) の覚書 - 作ってみる:日足と週足と月足を描くインジケータの作成 (2)
前回までの話
上位足に必要なパーツの作成色用の型を定義する
陽線用と陰線用の2色が必要
type candle_colors color bullish // 陽線 color bearish // 陰線var candleColor=candle_colors.new()
ローソク足を定義する。
ローソク足の情報をまとめて取り扱うためのcandle_body型を定義する。
Pine Script™ (v5) の覚書 - 8 : UDTs(user-defined types)を使ってみる (3)
前回までの話
色についても自分の使いたい色を型として定義して、color.redのように使うことができる。
type colors color lime70 color lime80 color red70 color red80
これを以下のように初期化する。
myColor=colors.new( color.new(color.lime,70), colo
Pine Script™ (v5) の覚書 - 作ってみる:日足と週足と月足を描くインジケータの作成 (1)
作りたいものチャート上に
・日足
・週足
・月足
を表示する。
足と書いたが上下のヒゲは書かない。下位時間足が個性溢れるヒゲを作ってくれる。
表示中の下位時間足と、日足と週足と月足を判別できるように、線の種類と背景色で区別する。
必要なパーツ・日足と週足のローソク足情報取得
・ローソク本体のみを描く
日足は塗りのみ
週足は枠のみ
月足は枠のみ
完成はこのようなイメージとなる
Pine Script™ (v5) の覚書 - 8 : UDTs(user-defined types)を使ってみる (2)
前回までの話
ローソク足は、X軸の情報としてtime,time_close、Y軸の情報としてopen,close,high,lowによって構成されている。(図1)
type candle int t int tc float o float c float h float l
これは、今の時間足では、以下のように使うことになる。
myCandle=can
Pine Script™ (v5) の覚書 - 8 : UDTs(user-defined types)を使ってみる (1)
typeを使うと、int型やfloat型などの複数の変数をひとまとめにした複合型を定義できる。
Pineのobjectについて
例えば、チャート上のある時点の価格について考える場合、X軸上の座標である時間とY軸上の座標である価格を一組のデータとして扱えると便利だ。こうした場合にtypeを使って、ユーザ定義の新しい型を定義できる。
type xy_coordinate int x
Pine Script™ (v5) の覚書 - コラム :改行をしたらエラーが・・・
スクリプトを書く上で、スペースとタブは重要です。筆者もよく間違えるのですが、間違ったスペースとタブをスクリプト内に入れてしまうとスクリプトのコンパイルエラーが発生します。
スペースについてスクリプトが長くなった時にスクリプトを読みやすくする為に途中で折り返すことができます。
// 1行にweekCandle=request.security(syminfo.tickerid,"D",cand
Pine Script™ (v5) の覚書 - 作ってみる:MTF移動平均線を描くインジケータの作成 (6)
前回までの話
プライベート公開したインジケータの共有前回プライベート公開したインジケータを共有する為には、インジケータのURLを知る必要があるが、チャート上のインジケータからはURLは分からない。
インジケータのURLは
1. コミュニティーページ
2. 自身のアカウントページ
から確認ができる。
コミュニティページの、「自分の投稿」に投稿したインジケータが表示される。クリックするとインジケ
Pine Script™ (v5) の覚書 - 作ってみる:MTF移動平均線を描くインジケータの作成 (5)
前回までの話
作成したインジケータを公開してみる作成したインジケータを公開すると、他の人が使えるようになる。
公開には、
・パブリック
・プライベート
の2つがある。
今回はプライベート公開をしてみる。
1. スクリプトを保存
スクリプトの準備が終わったら、スクリプト名を決めて保存をする。
2. チャートに追加
保存したスクリプトを、「チャートに追加」を押して、チャート上にインジケータ