記事一覧
Pine Script™ (v5) の覚書 - 作ってみる:上位足のGMMAを描くインジケータの作成 (4)
前回までの話
GMMAを取得するrequest.security()を使って、GMMAを取得する。
この時、上位足から下位足のデータを取得出来なかった場合にエラーとなる事があるので、『日足と週足と月足を描くインジケータの作成 (5)』の時と同様に対処する。
gmma:=request.security(syminfo.tickerid,tf, gmma_data.new(ta.ema(clo
Pine Script™ (v5) の覚書 - 作ってみる:上位足のGMMAを描くインジケータの作成 (3)
前回までの話
タイムフレーム、線の太さ、色を設定するタイムフレームを設定する。デフォルトはD。選択肢は15,60,240,D,W,M。
tf = input.timeframe('D','timeframe',['15','60','240','D','W','M'])
線の太さを設定する。デフォルトは1、min-maxは1-4
width = input.int(1,'width',1,
Pine Script™ (v5) の覚書 - 作ってみる:上位足のGMMAを描くインジケータの作成 (2)
前回までの話
上位足のGMMAに必要なパーツの作成色用の型を定義する
GMMAでは短期と長期で2色(blueとred)を使うためのgmma_colors型を定義する。
type gmma_colors color g1 color g2var gColor=gmma_colors.new()
GMMA用の型を定義する
GMMAの各値(12個)をまとめて取り扱うためのgmma_
Pine Script™ (v5) の覚書 - 7 : request.security_lower_tfを使ってマルチタイムフレーム(MTF)移動平均線を描いてみる(5)
前回までの話
ここまで移動平均線の最大値(max)、最小値(min)、最古の平均値(get(0)) 、最新の平均値(last())の4本をplotしたが、これらを描き分けてみる。
最大値 → greenの実線
最小値 → redの実線
最古と最新 → 最新が上がっていればgreen(透明)の塗り、最新が下がっていればred(透明)の塗り
ここで使う関数とその引数
fill(plot1,plo
Pine Script™ (v5) の覚書 - 作ってみる:上位足のGMMAを描くインジケータの作成 (1)
やりたいこと
上位足(日足)のGMMAを表示する
これは平たく言うと、短期(3,5,8,10,12,15期間)と長期(30,35,40,45,50,60期間)の指数平滑移動平均線(EMA)を表示する。
実装方針
request.security()を使って上位足のEMAを取得する。
短期をblue、長期をredでplotする。
続く
Pine Script™ (v5) の覚書 - 7 : request.security_lower_tfを使ってマルチタイムフレーム(MTF)移動平均線を描いてみる(4)
前回までの話
下位足のデータを使うと、現在足で移動平均として一つの値になってしまうものが、複数の時間のデータ(1時間足で15分足を取得する場合、4つのデータ)として取り扱える。
そこで、下位足の平均値のうち、最古のデータと最新のデータをプロットしてみる。
ここで使うarray関数とその引数
array.get(id,index)→配列のindex番目の要素を返す
array.last(id)
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:=n
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