この記事でわかること
- 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) |
| RSI | rsi(close, 14) | ta.rsi(close, 14) |
| EMA | ema(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はどの関数の組み合わせが動くかを毎回推測しながらコードを書く。エラーが多い理由はここにある。既存のコードがあれば「この書き方が動く」という前提でスタートできる。
手順
- TradingViewのチャート画面で「インジケーター」を開く
- 「テクニカル」タブから使いたいビルトインインジケーターを探す(RSI・MACD・移動平均線など)
- インジケーターをチャートに追加後、設定アイコン(⚙)→「ソースコードを表示」をクリック
- 表示されたコードを全選択してコピー
- 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が誤解する余地が増える。コードが長くなって、どこでエラーが出ているかも追えなくなる。
段階的ビルドの手順
「動く→確認→追加」を繰り返すのが結果的に速い。
最小限の動くバージョンを作る
「RSIが30を下回ったとき、チャートに点を1つ表示するだけのインジケーターをPine Script v5で作ってください」
これだけに絞る。アラートも出来高フィルターも不要。
TradingViewで動作確認する
エラーなく点が表示されたら次へ進む。この時点でコードを保存しておく。
機能を一つ追加する
「このコードに、ボリンジャーバンドの外側に出たときだけ点を表示するフィルターを追加してください」
一度に一つだけ追加する。
確認して次を追加する
動いたら、また一つ追加する。最後にアラートを追加する。
なぜこれが速いか
一気に作って詰まると、どの条件でエラーが出たか特定できない。段階的にやると「この機能を追加したときに壊れた」とわかる。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 exist | v4のマルチタイムフレーム関数 | 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 基礎文法まとめを参考にしてほしい。
