この記事でわかること
- Pine Script v5をAIに書かせるときに精度を上げるプロンプトの型
- 曖昧な指示でエラーが増える理由
- そのまま使えるプロンプトテンプレート
「AIにPine Scriptを書かせたら、思っていたのと違うものが出てきた」。多くの場合、原因はAIの性能ではなく、プロンプトの曖昧さにあります。
この記事では、Pine Script v5を正確に書かせるためのプロンプトの組み立て方を解説します。
📊 この記事はTradingViewユーザー向けです
TradingViewをまだ使っていない方は、まず無料アカウントを作成してみましょう。登録は30秒、クレジットカード不要です。
無料でTradingViewを始める →曖昧なプロンプトがエラーを生む理由
「いい感じの売買シグナルを作って」のような指示では、AIは条件を推測で補うしかありません。推測が外れると、意図しないロジックや構文エラーにつながります。
Pine Scriptは var・varip・request.security()の制限など、独特のルールが多い言語です。具体的に指定しないと、AIが古いバージョン(v4・v5)の書き方を混ぜてしまうこともあります。
精度を上げるプロンプトの4要素
| 要素 | 具体例 |
|---|---|
| バージョン指定 | 「Pine Script v5で」と明記する |
| 条件の数値化 | 「下落したら」ではなく「2%以上下落したら」 |
| 出力形式の指定 | 「デプロイ可能な完全なスクリプトで」 |
| 表示方法の指定 | 「ローソク足の下に緑の矢印で」のように見た目も伝える |
プロンプトテンプレート
Pine Script v5でTradingView用のインジケーターを作ってください。
条件:
・[条件1を数値付きで]
・[条件2を数値付きで]
表示:
・条件を満たしたら[色][形状]で[位置]に表示
出力:
そのままTradingViewのPineエディタに貼り付けて
使える完全なスクリプトをください。
このテンプレートに沿って具体化するだけで、最初の出力でエラーが出る確率がぐっと下がります。さらにエラーが出た場合の対処法はClaudeにPine Scriptを書かせるときの3つのコツで詳しく解説しています。
TradingViewで実際に試してみよう
この記事の内容はTradingViewで今すぐ実践できます。無料プランでも十分対応できます。
▶ TradingViewを無料で開くクレジットカード不要・いつでも解約OK
記入例:RSIダイバージェンス検出
Pine Script v5でTradingView用のインジケーターを作ってください。
条件:
・価格が直近20本で安値を更新している
・同時にRSI(14)が直近の安値より高い値になっている(弱気の出来高なしの反発)
表示:
・条件を満たしたら緑色の「BULL DIV」ラベルをローソク足の下に表示
出力:
そのままTradingViewのPineエディタに貼り付けて
使える完全なスクリプトをください。
このように条件と表示を分けて書くと、AIが意図を取り違えにくくなります。実際の実装例はダイバージェンス検出インジケーターの記事で確認できます。
このプロンプトで実際に生成されるコード
先ほどの記入例をClaudeに投げると、次のような完全なスクリプトが返ってきます。
//@version=5
indicator("強気ダイバージェンス検出", overlay=true)
// パラメータ
lookback = input.int(20, "安値更新の判定期間", minval=5)
rsiLen = input.int(14, "RSI期間", minval=2)
// 計算
rsi = ta.rsi(close, rsiLen)
// 条件1:価格が直近20本の最安値を更新
priceNewLow = low <= ta.lowest(low, lookback)
// 条件2:RSIは直近の最安値を更新していない(=切り上げ)
rsiHolding = rsi > ta.lowest(rsi, lookback)[1]
bullDiv = priceNewLow and rsiHolding
// 条件成立でローソク足の下に緑のラベルを表示
if bullDiv
label.new(bar_index, low, "BULL DIV",
style=label.style_label_up,
color=color.green, textcolor=color.white,
size=size.small)
プロンプトで「価格が安値更新」「RSIが安値を切り上げ」と条件を分けて書いたことが、コード内のpriceNewLowとrsiHoldingという2つの変数にそのまま対応しています。条件を分けて書くほど、生成されたコードの検証も楽になります。
なお、判定期間の20本やRSI期間の14はinput.int()で定義されているため、公開後もチャートの設定画面から変更できます。
v5特有の注意ポイント
- バージョン宣言の書き間違い:先頭行が
//@version=5になっているか必ず確認します - request.security()の繰り返し呼び出し:複数回呼び出すとコンパイルエラーになりやすいため、1つの変数にまとめるよう指示します
- varとvaripの混同:用途が違うため、意図が曖昧なまま使うとロジックが崩れることがあります
こんな場合はプロンプトをシンプルにしてよい
- 表示だけのシンプルなインジケーターの場合:条件が1つだけなら、テンプレートを簡略化しても十分です
- 既存スクリプトの軽微な修正の場合:ゼロから設計するわけではないため、変更箇所だけを具体的に伝えれば足ります
まとめ
- 曖昧な指示はAIの推測を生み、構文エラーや意図しないロジックの原因になる
- バージョン・条件の数値化・出力形式・表示方法の4要素を意識すると精度が上がる
- 条件と表示を分けて書くテンプレートを使うと、毎回の指示作りが楽になる
プロンプトの基本を押さえたら、CLAUDE.mdによるプロジェクト設計と組み合わせることで、さらに安定した開発フローが作れます。
TradingViewを始めるなら、まずは無料プランで試してみましょう。有料プランへのアップグレードで、さらに高度な機能が使えます。

