Pine scriptの基本構文 覚書
超基本
一般的なプログラムがデータの取得・処理っていう制御を自作する必要があるのに対して、pine scriptは足更新のタイミングでフレームワークが処理を起動してくれて、データも渡してくれるので、scriptではデータを取得したりするコードが不要。処理も足更新のたびに行われる前提で記述する。
関数定義
1行で定義
<identifier>(<list of arguments>) => <expression>
f(x, y) => x + y
複数行に渡るもの
<identifier>(<list of arguments>) =>
<Variable Declaration>
...
<Variable Declaration>
<expression> or <Variable Declaration>
geom_average(x, y) =>
a = x*x
b = y*y
sqrt(a + b)
・インデント(4つのスペースまたは1つのタブ)が必要
・インデントは、それがグローバルスコープではなく関数本体の一部であることを示す
・最後の式が変数宣言の場合、その値は関数の結果になる
・結果のリストを返すことも可能
[res0, res1] = fun(open, close)
plot(res0)
plot(res1)
文法
・ステートメントは行の先頭から始める必要があります。改行した時は、ステートメントの次の行は、行頭に1つまたは(4の倍数以外の)複数のスペースを入れなければいけません
a = open +
high +
low +
close
if文
var_declarationX = if condition
var_decl_then0
var_decl_then1
…
var_decl_thenN
return_expression_then
else
var_decl_else0
var_decl_else1
…
var_decl_elseN
return_expression_else
戻り値は型が一致している必要あり
for文
var_declarationX = for counter = from_num to to_num [by step_num]
var_decl0
var_decl1
…
continue
…
break
…
var_declN
return_expression
my_sma(price, length) =>
sum = price
for i = 1 to length-1
sum := sum + price[i]
sum / length
plot(my_sma(close,14))
continue - ループでのみ利用できるキーワードです。次のループ処理に移ります。
break - ループでのみ利用できるキーワードです。ループから抜けます。
特別なビルトイン関数
nz
この関数は引数をとり、NaNに等しい場合は0を返し、そうでない場合は引数の値を返します。
→seriesの一つ前を参照するような場合必須
na
これは1つの引数を持ち論理結果(bool値)を返します。この関数は、引数がNaNかどうかを調べることができます。
security
別のシンボル/時間足をリクエスト
通常は追加したチャートの時間足に基づいた計算になるが、別の時間足も持ってこれる
桁まるめ
round
→四捨五入
*pythonだと切り捨て
floor
→切り捨て
ceil
→切り上げ
input変数
入力変数は便利なTradingViewの機能。これらの変数は、入力オプションによって手動で設定できるため、変数の値を変更するためにスクリプトのソースコードを編集する必要がなくなる。
・数値
numericalVariable = input(title, type=integer/float,
minval, maxval, step, defval, confirm)
title: 表示名
type: 型
step: ↑↓の矢印を押したときに変動する値
・真偽値
boolVariable = input(title, type=bool, defval, confirm)
type=boolにする
・バックテストしたい時間帯指定
sessionString = input(title, type=session, defval, confirm)
type=sessionにする
defval: "2200-0800"とか指定すればその時間だけ対象にすることが可能
・時間足指定
resolutionString = input(title, type=resolution, defval, confirm)
type=resolutionにする
*指定可能なのはプルダウンに指定できる値のみ("1","5","15"...)
*異なる時間足を持ってくるsecurityについては特別なビルトイン関数を参照
使用例:
timeFrame = input(title="Other time frame", type=resolution,
defval="180")
symbolHigh = security(tickerid, timeFrame, high)
symbolLow = security(tickerid, timeFrame, low)
・OHLCの指定
variableSeries = input(title, type=source, defval)
type=sourceにする
使用例:
sourceType = input(title="Source type", type=source, defval=close)
Symbol = security(tickerid, period, sourceType)
描画
テクニカルの表示
描画にはplotを使用する。
折れ線グラフ:指定不要
ヒストグラム:style=histogram
+印:style=cross
〇印:style=circles
塗りつぶし:style=area
色指定:color 色一覧
幅:linewidth
透明度:transp
メインチャート or サブチャート:overlay=true or false
背景着色
bgcolor(color, transp, offset, editable, title)
offset: 指定したバー数過去にずらして着色
color: naを指定すると無色
fill(hline1, hline2, color, transp, title, editable)
hline: closeとか10とか数値
この記事が気に入ったらサポートをしてみませんか?