Pineスクリプト作成代行はこちら

Pineスクリプト入門|プログラミング未経験でも書ける最初の一歩【v6対応】

Pineスクリプトは、TradingViewでオリジナルのインジケーターやストラテジーを作るためのプログラミング言語です。「プログラミングなんて触ったことがない」という方でも、この記事の手順どおりに進めれば、30分後にはチャート上で自分のコードが動いている状態になります。

この記事は、Pineスクリプトv6に対応しています。ネット上にはv4やv5の情報が多く残っていますが、2024年以降のTradingViewではv6が標準です。古い情報をそのままコピペすると動かないケースがあるため、最初からv6で学ぶことをおすすめします。

Pineスクリプトの全体像(何ができるのか、どこまで実用的なのか)を先に知りたい方は、Pineスクリプト(Pine Script)とは?できること・始め方を完全解説をご覧ください。

この記事の著者について 数千のEAをデコンパイル・検証し、自身のトレード戦略をPineスクリプトでコード化・運用しています。開発代行も承っています。

この記事で到達できるレベル

この記事を読み終えると、以下の3つができるようになります。

1つ目は、Pineエディタを開いてコードを入力し、チャートに追加するまでの一連の操作。2つ目は、移動平均線を表示するインジケーターを自分で書くこと。3つ目は、MAクロスで売買するストラテジーを書いてバックテスト結果を確認すること。

いずれも10行以内のコードです。プログラミング経験は一切不要です。

事前準備:TradingViewアカウントの作成

必要なのはTradingViewの無料アカウントだけです。有料プランは不要です。

TradingViewにアクセスし、メールアドレスまたはGoogleアカウントで登録します。登録が済んだら、任意の銘柄のチャートを開いてください。銘柄は何でも構いません。このあとPineスクリプトの入力画面を使うだけなので、特定の銘柄を選ぶ必要はありません。

Step 1:Pineエディタを開く

チャート画面の下部に「Pineエディタ」というタブがあります。これをクリックすると、コードを入力するエリアが表示されます。

Pineエディタには便利な機能がいくつか搭載されています。関数名を途中まで入力すると候補が表示される自動補完、関数にカーソルを合わせると使い方が表示されるポップアップヘルプ、コードの構文ミスを指摘するエラー表示。これらはすべて最初から使えます。

初回は、エディタにサンプルコードが表示されていることがあります。これはすべて消して構いません。まっさらな状態から始めましょう。

Step 2:バージョン宣言を書く

Pineスクリプトのコードは、必ず1行目にバージョン宣言を書きます。

//@version=6

これは「このコードはPineスクリプトv6で書かれています」という意味です。この1行がないとコードは動きません。また、//@version=5 と書くとv5として解釈されるため、必ず 6 を指定してください。

ここで1つ、Pineスクリプト特有の概念を押さえておきます。Pineスクリプトはローソク足ごとに上から下まで繰り返し実行される言語です。通常のプログラムは1回だけ実行されますが、Pineスクリプトはチャート上のすべての足に対して何度も実行されます。この仕組みのおかげで、過去のすべての足に対してインジケーターの値を計算できるわけです。

最初はこの点を深く理解する必要はありません。「足ごとに動く」とだけ覚えておけば十分です。

Step 3:最初のインジケーターを書く

バージョン宣言の下に、以下のコードを書いてください。

//@version=6
indicator("My First MA", overlay=true)
length = input.int(10, "期間")
plot(ta.sma(close, length), color=color.blue, linewidth=2)

4行です。1行ずつ解説します。

1行目 //@version=6 はバージョン宣言。

2行目 indicator("My First MA", overlay=true) は、このコードがインジケーターであることを宣言しています。"My First MA" は名前で、好きな文字列に変更できます。overlay=true は「チャートの上に重ねて表示する」という意味です。false にすると、チャートの下に別パネルとして表示されます。

3行目 length = input.int(10, "期間") は、ユーザーが設定画面から変更できるパラメータを定義しています。初期値は 10、設定画面に表示される名前は "期間" です。input.int は整数値を受け取る関数です。

4行目 plot(ta.sma(close, length), color=color.blue, linewidth=2) が実際の描画です。ta.sma(close, length) は「終値(close)のlength期間の単純移動平均」を計算する関数です。その結果を plot() で青い線(color.blue)、太さ2(linewidth=2)でチャート上に描画しています。

入力したら、エディタ上部の「チャートに追加」ボタンをクリックします。エラーがなければ、ローソク足の上に青い移動平均線が表示されます。

もしエラーが出た場合、最も多い原因はスペルミスです。indicatorinput.intta.sma のスペルを確認してください。大文字・小文字も区別されます。

Step 4:パラメータを変えてみる

インジケーターをチャートに追加したら、チャート上のインジケーター名をクリックし、歯車アイコン(設定)を開いてください。「期間」という項目が表示されているはずです。

この値を 10 から 50 に変更すると、移動平均線の動きが緩やかになります。5 にすると、価格に近い動きになります。

これが input.int() の威力です。コードを書き直すことなく、設定画面からパラメータを変更できます。Pine スクリプトでは、ユーザーが変更する可能性のある値はすべて input 系の関数で定義するのが基本です。

Step 5:ストラテジーを書いてバックテストする

次は、売買ルールを定義してバックテストを実行するストラテジーを書きます。Pineエディタの内容をすべて消して、以下を入力してください。

//@version=6
strategy("MA Cross", overlay=true)
fast = ta.sma(close, 10)
slow = ta.sma(close, 50)
if ta.crossover(fast, slow)
    strategy.entry("Long", strategy.long)
if ta.crossunder(fast, slow)
    strategy.close("Long")
plot(fast, color=color.blue)
plot(slow, color=color.red)

10行です。先ほどのインジケーターとの違いを説明します。

2行目 indicator() ではなく strategy() を使っています。これが「このコードはストラテジーです」という宣言です。

3〜4行目 fastslow の2本の移動平均線を計算しています。10期間の短期線と50期間の長期線です。

5〜6行目 ta.crossover(fast, slow) は「fastがslowを下から上に抜けた(ゴールデンクロス)」を判定する関数です。この条件を満たしたとき、strategy.entry() でロング(買い)エントリーします。Pineスクリプトでは、if の次の行にインデント(半角スペース4つ)を入れるのがルールです。

7〜8行目 ta.crossunder(fast, slow) は逆で「fastがslowを上から下に抜けた(デッドクロス)」です。ここで strategy.close() を使ってポジションを決済します。

9〜10行目 2本の移動平均線をチャート上に描画しています。

「チャートに追加」を押すと、チャート上に売買ポイントが矢印で表示されます。画面下部に「ストラテジーテスター」タブが現れるので、これをクリックすると損益曲線・勝率・プロフィットファクターなどの成績が確認できます。

ここまでの作業に必要な時間は、慣れれば5分程度です。

よくあるエラーと対処法

入門段階で遭遇するエラーは、ほぼ以下の3つに集約されます。

「Could not find function or function reference」 — 関数名のスペルミスです。ta.smata.SMA と書いたり、indicatorIndicator と書いたりするとこのエラーが出ます。Pineスクリプトは大文字・小文字を区別します。

「Mismatched input」 — 構文エラーです。カッコの閉じ忘れ、カンマの抜け、インデントの不一致が原因です。特にインデントは、if の次の行を半角スペース4つ下げるルールを守ってください。タブ文字は使えません。

「Script version is too old」 — ネットからコピペしたコードのバージョンが古い場合に出ます。1行目の //@version=6 に変更してください。ただし、v4やv5のコードをそのままv6に変えただけでは動かないケースもあります。非推奨になった関数(たとえば study()indicator())の書き換えが必要です。

入門後の次のステップ

ここまでの内容で、インジケーターとストラテジーの基本構造は理解できたはずです。次に進む方向は2つあります。

コードの幅を広げる方向。 新しい関数を覚えて、できることを増やしていきます。ta.rsi()でRSIを計算する、bgcolor()で背景色を変える、alertcondition()でアラートを設定する、request.security()で別の時間足のデータを取得する。1つずつ関数を覚えるたびに、表現の幅が広がります。

自分の手法をコード化する方向。 「この条件でエントリーしたい」「このルールで決済したい」という自分のトレードアイデアを、Pineスクリプトに落とし込みます。バックテストで検証し、数字で優位性を確認する。これがPineスクリプトの最も実用的な使い方です。

どちらの方向に進むにしても、学習リソースの選び方が重要です。Pineスクリプトの勉強法|本・動画・公式ドキュメント比較レビューで、学習教材の比較と効率的なロードマップを解説しています。

「自分の手法をコード化したい」方へ 手法のアイデアはあるけれど、コードに落とし込むのが難しい——そんな方は開発代行をご利用ください。現役トレーダー兼開発者が、あなたの手法をPineスクリプトで形にします。

入門段階で覚えるべき関数一覧

最初に覚える関数は多くありません。以下の10個で、入門段階のほとんどのコードが書けます。

indicator() — インジケーターの宣言。strategy() — ストラテジーの宣言。input.int() — 整数パラメータの定義。input.float() — 小数パラメータの定義。plot() — チャート上にラインを描画。ta.sma() — 単純移動平均。ta.ema() — 指数移動平均。ta.rsi() — RSI。ta.crossover() — 上抜け判定。ta.crossunder() — 下抜け判定。

これ以外の関数は、必要になったときにTradingViewの公式リファレンス(Pineエディタ右上のアイコンからアクセス可能)で調べれば十分です。最初から全関数を暗記する必要はありません。

まとめ

Pineスクリプトの入門に必要なのは、TradingViewの無料アカウントとこの記事だけです。

Pineエディタを開き、//@version=6 から書き始める。indicator() でインジケーターを、strategy() でストラテジーを宣言する。ta.sma() で移動平均を計算し、plot() で描画する。ta.crossover() で条件判定し、strategy.entry() でエントリーする。

4行で移動平均線が表示でき、10行でバックテストが回せる。これがPineスクリプトの手軽さであり、プログラミング未経験者でも始められる理由です。

エラーが出たら、スペルミス・インデント・バージョンの3つを確認する。この3つで入門段階のエラーはほぼ解決します。

v6で学び始めること。古い情報に惑わされないこと。そして、コードを「書いて動かす」回数を増やすこと。Pineスクリプトの上達に近道はありませんが、最初の一歩は今日この場で踏み出せます。

Pineスクリプトの開発代行・ご相談 ストラテジー開発、インジケーター作成、EA→TradingView移行など、Pineスクリプトに関するご依頼・ご相談を承っています。

※当サイトの内容は投資助言を目的としたものではありません。FX取引にはリスクが伴い、投資元本を失う可能性があります。投資判断はご自身の責任でお願いいたします。