PR

ClaudeにPine Scriptを書かせるときの3つのコツ【エラーゼロに近づける方法】

Pineスクリプト

この記事でわかること

  • Claudeがv4コードを出してくるエラーを防ぐプロンプトの書き方
  • 公開スクリプトをベースに渡すとエラーが激減する理由と手順
  • 複雑な条件でも詰まらずに完成させる「段階的ビルド」の具体的な手順
  • Pine Script v5でよく出るエラーのパターンと直し方

「Claudeに頼んだのにエラーだらけ」という体験は多い。

実はこれ、Claudeの精度の問題ではないことがほとんどだ。頼み方を少し変えるだけで、出てくるコードの質がかなり変わる。英語圏の@masked_statというトレーダーが「既存のオープンソーススクリプトをClaudeに渡してから修正させればいい」という方法を発信してX上で話題になった。実際、この発想は正しい。

ゼロから生成させると、Claudeはどの関数を使えばいいか、どの構文が動くかを毎回推測しながら書く。そこにエラーの原因がある。コツを知っているかどうかで、完成までの時間が数倍変わる。

コツ1:「Pine Script v5で書いて」と毎回明示する

Claudeに何も指定せずにPine Scriptを頼むと、v4のコードが混入してくることがある。TradingViewの現在の標準はv5なので、v4のコードを貼り付けるとエラーになる。

なぜv4が出てくるのか

ClaudeはPine Script v4・v5両方のコードを大量に学習している。バージョンを指定しないと判断できずv4を選ぶことがある。能力の問題ではなく、指示が足りないだけだ。

v4とv5の主な違い

機能v4の書き方v5の正しい書き方
スクリプト宣言study("名前")indicator("名前")
入力(整数)input(14, type=input.integer)input.int(14)
入力(真偽値)input(true, type=input.bool)input.bool(true)
マルチタイムフレームsecurity("AAPL", "D", close)request.security("AAPL", "D", close)
RSIrsi(close, 14)ta.rsi(close, 14)
EMAema(close, 21)ta.ema(close, 21)
クロス検出crossover(fast, slow)ta.crossover(fast, slow)

v5ではテクニカル指標関数に ta. プレフィックスが付いた。rsi() だったものが ta.rsi() になる。これを知らないと、Claudeが出したコードにエラーが出たとき原因がわからなくなる。

プロンプトの書き方比較

❌ バージョン未指定(v4コードが混入しやすい)

「RSIが30を下回ったときに青い矢印を表示するインジケーターを作ってください」

✅ v5を明示(エラーが大幅に減る)

Pine Script v5で、RSIが30を下回ったときに
青い上向き矢印を表示するインジケーターを作ってください。
コードの1行目は //@version=5 にしてください。
非推奨の関数は使わないでください。

「v5で書いて」と「1行目を //@version=5 に」の2点をプロンプトに入れるだけ。これだけでバージョン違いによるエラーはほぼなくなる。

プロンプト末尾に加えると効果的な一文

Pine Script v5の最新仕様に準拠してください。
ta. プレフィックスが必要な関数はすべて ta. を付けてください。
非推奨の関数は使わないでください。

これを毎回コピペする習慣にするだけで、エラー頻度がかなり下がる。

コツ2:既存の公開スクリプトをベースに渡す

英語圏の@masked_statが発信した方法で「ゼロから書かせるな、既存のコードをベースに渡せ」という考え方だ。

何もベースなしで書かせると、Claudeはどの関数の組み合わせが動くかを毎回推測しながらコードを書く。エラーが多い理由はここにある。既存のコードがあれば「この書き方が動く」という前提でスタートできる。

手順

  1. TradingViewのチャート画面で「インジケーター」を開く
  2. 「テクニカル」タブから使いたいビルトインインジケーターを探す(RSI・MACD・移動平均線など)
  3. インジケーターをチャートに追加後、設定アイコン(⚙)→「ソースコードを表示」をクリック
  4. 表示されたコードを全選択してコピー
  5. Claudeに渡して「このコードをベースに○○の機能を追加してください」と指示する

実際のプロンプト例

以下はTradingViewのビルトインRSIインジケーターのソースコードです。

[ここにコピーしたコードを貼り付け]

このコードをベースに、以下の変更をPine Script v5で加えてください:
・RSIが30を下回ったとき、チャート上に緑の上向き三角形シグナルを追加する
・RSIが70を上抜けたとき、チャート上に赤の下向き三角形シグナルを追加する
・元のRSIプロットはそのまま残してください

ゼロから書かせるのに比べて、エラーが出る頻度が体感で半分以下になる。ビルトインRSIのコードには正しいv5の書き方がすでに入っているので、Claudeがそれを参照して書いてくれるからだ。

どのスクリプトをベースにするか

作りたいものベースに使えるビルトイン
RSI系のシグナルビルトインRSI
移動平均クロスビルトインMA Cross
MACD系のシグナルビルトインMACD
ボリンジャーバンド系ビルトインBollinger Bands
バックテスト用ストラテジービルトインRSI Strategy

これらはすべてTradingViewの「テクニカル」タブから見つかる。設定メニューに「ソースコードを表示」が出ていないものは非公開のコードなので、ビルトインのものを使う。

コツ3:一度に全機能を作らせない

「RSIクロス+ボリンジャーバンド突破+出来高フィルター+アラート付き」を一発で作ろうとする。これが詰まるパターンのほぼ全てだ。

複数の条件をまとめて指示するほど、Claudeが誤解する余地が増える。コードが長くなって、どこでエラーが出ているかも追えなくなる。

段階的ビルドの手順

「動く→確認→追加」を繰り返すのが結果的に速い。


  1. 最小限の動くバージョンを作る

    「RSIが30を下回ったとき、チャートに点を1つ表示するだけのインジケーターをPine Script v5で作ってください」

    これだけに絞る。アラートも出来高フィルターも不要。

  2. TradingViewで動作確認する

    エラーなく点が表示されたら次へ進む。この時点でコードを保存しておく。

  3. 機能を一つ追加する

    「このコードに、ボリンジャーバンドの外側に出たときだけ点を表示するフィルターを追加してください」

    一度に一つだけ追加する。

  4. 確認して次を追加する

    動いたら、また一つ追加する。最後にアラートを追加する。

なぜこれが速いか

一気に作って詰まると、どの条件でエラーが出たか特定できない。段階的にやると「この機能を追加したときに壊れた」とわかる。Claudeへの修正指示も「この機能だけ直して」と言えるので、修正が一発で通ることが増える。

3つのコツをまとめたプロンプトテンプレート

そのまま使えるテンプレートを置いておく。

以下の条件でTradingViewのPine Scriptインジケーターを作成してください。

【仕様】
・RSIが30を下回ったときに青い上向き矢印をチャートに表示する
・RSIが70を超えたときに赤い下向き矢印を表示する

【制約】
・Pine Script v5で書いてください
・コードの1行目は //@version=5 にしてください
・ta. プレフィックスが必要な関数はすべて ta. を付けてください
・非推奨の関数(study()、security()、input(type=) など)は使わないでください
・まず矢印の表示のみのシンプルなバージョンを作ってください
  (アラートは確認後に別途追加します)

「コツ1(v5指定)」「コツ3(段階的ビルド)」が入ったテンプレートだ。既存スクリプトをベースにする場合は、このテンプレートの前にコードを貼り付けてから送る。

よく出るエラー早見表

エラー(抜粋)意味修正方法
Undeclared identifier 'study'v4の宣言方法が使われているstudy()indicator() に変更
Undeclared identifier 'ema'v4のEMA関数ema()ta.ema() に変更
Function 'security' does not existv4のマルチタイムフレーム関数security()request.security() に変更
Cannot call 'input' with argument 'type'v4のinput記法input.int() / input.float() 等に変更
'series bool' where a 'simple bool' is expected型の不一致エラー文をClaudeに貼って「型エラーを直して」と依頼

上記のどのエラーでも、エラー文をそのままClaudeに貼って「このエラーをPine Script v5で修正してください」と送れば直る。自力で解読しようとしない方が早い。

まとめ

3つのコツのまとめ

  • コツ1:「Pine Script v5で書いて」「1行目を //@version=5 に」を毎回入れる
  • コツ2:ビルトインスクリプトのコードをベースに渡してから改造を頼む
  • コツ3:まず最小限の動くバージョンを作り、機能を一つずつ追加する

3つとも「プロンプトに1〜2行足す」か「手順を変える」だけで実践できる。特にコツ2(公開スクリプトをベースに渡す)が一番効いた。ゼロから作らせるときのエラーが、これだけで別物になる。

インジケーターの作成から学習ログの作り方まで、全体の流れをまとめたClaude Code × TradingViewでオリジナルインジケーターを作る完全ガイドも合わせて読んでほしい。Pine Script v5の文法を基礎から確認したい場合はPine Script v5 基礎文法まとめを参考にしてほしい。

タイトルとURLをコピーしました