rakkosan lab

Pine Script入門 - TradingViewで自分だけのインジケーターを作る

Pine ScriptはTradingView独自のプログラミング言語です。プログラミング未経験でも、基本的なインジケーターなら意外と簡単に作れます。

この記事ではPine Script v6の基礎を、実際のコード例とともに解説します。

Pine Scriptでできること

  • カスタムインジケーター — 既存にないオリジナルの指標を表示
  • ストラテジー — 売買ルールを定義してバックテスト
  • アラート条件 — 独自条件でアラートを設定
  • ライブラリ — 再利用可能な関数を作成・公開

Pine Scriptエディタの開き方

  1. TradingViewでチャートを表示
  2. チャート下部の「Pine Script」タブをクリック
  3. エディタが開く

「新規作成」→「インジケーター」を選ぶと、テンプレートコードが表示されます。

最初のインジケーター

まずは最もシンプルなインジケーターを作ってみましょう。

終値を線で表示する

//@version=6
indicator("マイ終値ライン", overlay=true)

plot(close, color=color.blue, linewidth=2)

コード解説:

意味
//@version=6Pine Scriptのバージョン指定(最新はv6)
indicator(...)インジケーターの宣言
"マイ終値ライン"インジケーター名
overlay=trueチャート上に重ねて表示(falseなら別パネル)
plot(close, ...)終値を青い線で描画

チャートに追加」ボタンを押すと、チャート上に青い線が表示されます。

Pine Scriptの基本構造

すべてのPine Scriptは以下の構造を持ちます:

//@version=6
indicator("インジケーター名", overlay=true)

// 1. 入力パラメータの定義
// 2. 計算ロジック
// 3. 描画(plot / plotshape / bgcolor など)

変数と型

組み込み変数

Pine Scriptには価格データなどの組み込み変数が用意されています。

変数意味
open始値
high高値
low安値
close終値
volume出来高
timeバーの時刻
bar_indexバーの番号(0始まり)

変数の定義

myLength = 14
myPrice = close
myAvg = (high + low) / 2

型は自動推論されますが、明示的に指定することもできます。

input() — ユーザーが値を変更できるパラメータ

input() を使うと、チャート上の設定画面からパラメータを変更できるようになります。

//@version=6
indicator("カスタムMA", overlay=true)

length = input.int(20, title="期間", minval=1, maxval=200)
maType = input.string("EMA", title="MAタイプ", options=["SMA", "EMA"])

ma = maType == "EMA" ? ta.ema(close, length) : ta.sma(close, length)

plot(ma, color=color.orange, linewidth=2, title="移動平均線")

このコードは:

  • 期間を1〜200の範囲で変更可能
  • SMAとEMAを切り替え可能
  • コードを編集しなくても設定画面から調整できる

input の種類:

関数用途
input.int()整数値
input.float()小数値
input.bool()true / false
input.string()文字列(選択肢付き)
input.color()色の選択
input.source()データソース(close, open等)

ta.関数 — テクニカル分析の計算

Pine Scriptには主要なテクニカル指標の計算関数が組み込まれています。

関数内容
ta.sma(source, length)単純移動平均
ta.ema(source, length)指数移動平均
ta.rsi(source, length)RSI
ta.macd(source, fast, slow, signal)MACD
ta.bb(source, length, mult)ボリンジャーバンド
ta.atr(length)ATR
ta.crossover(a, b)aがbを上抜けたらtrue
ta.crossunder(a, b)aがbを下抜けたらtrue
ta.highest(source, length)期間内の最高値
ta.lowest(source, length)期間内の最安値

描画関数

plot() — 線を描画

plot(close, color=color.blue, linewidth=2, title="終値")

plotshape() — マーカーを描画

buySignal = ta.crossover(ta.ema(close, 20), ta.ema(close, 50))

plotshape(buySignal, style=shape.triangleup,
  location=location.belowbar, color=color.green,
  size=size.small, title="買いシグナル")

条件を満たしたバーの下に緑の三角マーカーが表示されます。

bgcolor() — 背景色を変更

isUpTrend = close > ta.ema(close, 200)
bgcolor(isUpTrend ? color.new(color.green, 90) : color.new(color.red, 90))

200EMAの上なら薄緑、下なら薄赤の背景色。color.new(色, 透明度) で透明度を0〜100で指定します。

hline() — 水平線を描画

hline(70, "買われすぎ", color=color.red)
hline(30, "売られすぎ", color=color.green)

RSIなどのオシレーターで基準線を引く時に使います。

実践例:RSI + MAクロスインジケーター

学んだ内容を組み合わせて、実用的なインジケーターを作ってみましょう。

//@version=6
indicator("RSI + MAクロス シグナル", overlay=true)

// === 入力パラメータ ===
fastLen = input.int(20, title="短期MA期間")
slowLen = input.int(50, title="長期MA期間")
rsiLen = input.int(14, title="RSI期間")
rsiThreshold = input.int(50, title="RSI閾値")

// === 計算 ===
fastMA = ta.ema(close, fastLen)
slowMA = ta.ema(close, slowLen)
rsi = ta.rsi(close, rsiLen)

// MAクロス + RSI条件
buySignal = ta.crossover(fastMA, slowMA) and rsi > rsiThreshold
sellSignal = ta.crossunder(fastMA, slowMA) and rsi < rsiThreshold

// === 描画 ===
plot(fastMA, color=color.blue, title="短期MA")
plot(slowMA, color=color.red, title="長期MA")

plotshape(buySignal, style=shape.labelup,
  location=location.belowbar, color=color.green,
  text="BUY", textcolor=color.white, size=size.small)

plotshape(sellSignal, style=shape.labeldown,
  location=location.abovebar, color=color.red,
  text="SELL", textcolor=color.white, size=size.small)

// === アラート条件 ===
alertcondition(buySignal, title="買いシグナル",
  message="MAゴールデンクロス + RSI>" + str.tostring(rsiThreshold))
alertcondition(sellSignal, title="売りシグナル",
  message="MAデッドクロス + RSI<" + str.tostring(rsiThreshold))

このインジケーターの機能:

  • 短期EMAと長期EMAを表示
  • MAクロス + RSI条件を満たした時にBUY/SELLラベルを表示
  • アラート条件も定義済み。チャートに追加後、アラート設定画面から有効化できる

次のステップ

Pine Scriptの基礎を覚えたら、以下のステップで腕を磨いていきましょう。

1. コミュニティスクリプトを読む

TradingViewのコミュニティには数万のオープンソーススクリプトがあります。人気スクリプトのコードを読んで、書き方のパターンを学びましょう。

2. 既存スクリプトを改造する

ゼロから書くより、既存のスクリプトを少し改造する方が学びやすいです。パラメータを変えたり、条件を追加したりしてみましょう。

3. Pine Script公式リファレンス

TradingView公式のPine Scriptリファレンスは最も正確な情報源です。関数の使い方に迷ったら必ず参照してください。

4. AIを活用する

Pine Scriptのコード生成はAIが得意な分野です。「RSIダイバージェンスを検出するインジケーターを作って」とAIに依頼し、生成されたコードを理解・修正していく方法も効率的です。

当サイトでもAIを使ったインジケーター改良について解説しています。

まとめ

当サイトから新規登録すると有料プラン購入時に$15割引が適用されます

30日間の無料トライアルと併用可能 · 新規登録のみ対象

TradingViewに登録して$15もらう
rakkosan

rakkosan

FXトレーダー・インジケーター開発者。MT5やTradingView向けのカスタムインジケーターを開発・販売しています。

noteで記事・インジケーターを公開中

TradingViewの使い方の記事