' P '

whatever I will forget

Pine Script 文法

値を上書きする場合

str = "test" // 宣言
str := "foo" // 上書き

nullを指定したい場合

データ型を指定しないとエラーとなる。

int null_value = na

チャート上に表示されている計算値を更新したい場合

varを指定して変数を定義する
varを指定しない場合、scriptがローソク足ごとに起動されるため、常にcount値は1になってしまう。
毎回値をリセットしたい場合はもちろんvarを指定しないようにする。(booleanとか)

var green_bar_count = 0
if close > open
  green_bar_count := green_bar_count + 1
plot(green_bar_count)

チャート上のローソク足の合計値を取得したい場合

plot(bar_index)

ユーザーから設定から値を入力させる


stepを指定しておくと、上下のボタンで設定した値でインクリメントが可能。

bool_input = input.bool(title="test", defval=false)
int_input = input.int(title="int", defval=10, minval=0, maxvalue=40, step=2)
  • インジケーターを追加した際に設定値を確認させる
int_input = input.int(title="int", defval=10, confirm=true)
  • 価格をセットさせる 時間やタイムフレーム(日足とか)を指定させることも可能
price_input = input.price(title="price", defval=0, confirm=true)

alertを出す

  • 2通りの方法がある

  • alert() function

freq_once_per_barだとcloseする前にアラートが成立する.

higher_price = close > high[1]
lower_price = close < low[1]

if higher_price
  alert("price is higher than previous bar" + str.tostring(close),  alert.freq_once_per_bar_close)

alert()でtickerを取得する場合はsyminfo.tickerを指定する.

  • alertcondition() alert()のように+で変動するstrを指定できない。指定できるのはconst値のみ。しかしplaceholderが使用可能.
alertcondition(higher_price, "price is higher than previous bar, current price: {{close}}")

kodify.net

EMAのクロスを描画

ema1 = ta.ema(close, 50)
ema2 = ta.ema(close, 100)

ema_cross_over = ta.crossover(ema1, ema2)
ema_cross_under = ta.crossunder(ema1, ema2)

plot(ema1, color=color.green)
plot(ema2, color=color.red)

bgcolor(ema_cross_over ? color.green : na)
bgcolor(ema_cross_under ? color.red : na)