この記事でわかること
- Pine Script v6が現在の標準バージョンであること(公式移行ガイドに基づく)
- v5からの主要な破壊的変更点とBefore/Afterのコード例
- Claude Codeにv5→v6の移行チェックをさせるプロンプト例
過去に書いたPine Scriptをコピペしたら、今まで通ったはずの書き方でエラーが出た。そんな経験はありませんか。TradingViewは2024年12月にPine Script v6を公開しました。新規スクリプトのデフォルトテンプレートも、すでにv6に切り替わっています。
この記事では、公式の移行ガイドをもとにv5からv6での主要な破壊的変更点を整理します。実際にどう書き換えればよいかをBefore/Afterで解説します。
📊 この記事はTradingViewユーザー向けです
TradingViewをまだ使っていない方は、まず無料アカウントを作成してみましょう。登録は30秒、クレジットカード不要です。
無料でTradingViewを始める →Pine Script v6は現在の標準バージョン
Pine Script v6は2024年12月10日にTradingView公式ブログで発表されました。公式ドキュメントでは“Pine Script has graduated to v6”と表現されています。今後の言語アップデートも、v6を対象に行われることが明記されています。Pine Editorで新規スクリプトを作成する際のバージョン選択肢にもv6が加わっています。
まだPine Scriptの基礎文法に不安がある場合は、先にPine Script v5 基礎文法まとめを確認しておくと、この先の変更点が理解しやすくなります。
主要な破壊的変更点(Before/After)
特に遭遇しやすい4つの変更点を、実際のコード例で確認します。
①strategy.entry()などの「when」パラメータが廃止
v5では条件をパラメータとして渡せましたが、v6では条件分岐を明示的に書く必要があります。
// v5: whenパラメータでエントリー条件を指定
strategy.entry("Long", strategy.long, when = longCondition)
// v6: ifブロックで囲む必要がある
if longCondition
strategy.entry("Long", strategy.long)
②plot()などの「transp」パラメータが廃止
透過度の指定方法が変わりました。transpパラメータを直接渡す書き方はv6では使えません。
// v5: transpパラメータで透過度指定
plot(close, color = color.blue, transp = 30)
// v6: color.new()で透過度を指定
plot(close, color = color.new(color.blue, 30))
③timeframe.periodの表記が変わった
v5では乗数が1のとき(日足なら”D”)は省略されていましたが、v6では常に乗数付きの表記です。
// v5: 乗数1は省略された文字列
if timeframe.period == "D"
// 日足の処理
// v6: 乗数が常に付与される
if timeframe.period == "1D"
// 日足の処理
// timeframe.isdaily を使う方がバージョン差異に左右されず安全
④bool型への暗黙的な変換が廃止
int型やfloat型の値を条件式でそのままbool扱いする書き方は、v6では明示的なキャストが必要です。
// v5: intをboolとして直接使えた(暗黙変換)
c = bar_index ? color.green : color.red
// v6: 明示的なキャストが必須
c = bool(bar_index) ? color.green : color.red
移行前後の完全なコード例
ここまでのwhen廃止・transp廃止・timeframe.period表記変更をまとめて反映しました。以下が移行前後の完全なインジケーターコードです。そのままPine Editorに貼り付けて動作を確認できます。
// v5: 移行前(そのままではv6でエラーになる)
//@version=5
indicator("シンプルMAクロス通知", overlay=true)
maLen = input.int(20, "MA期間")
ma = ta.sma(close, maLen)
crossUp = ta.crossover(close, ma)
isDaily = timeframe.period == "D"
alertcondition(crossUp and isDaily, title="MA上抜けアラート", message="日足でMAを上抜けました")
plot(ma, title="MA", color=color.blue, transp=30)
// v6: 移行後
//@version=6
indicator("シンプルMAクロス通知", overlay=true)
maLen = input.int(20, "MA期間")
ma = ta.sma(close, maLen)
crossUp = ta.crossover(close, ma)
isDaily = timeframe.period == "1D"
alertcondition(crossUp and isDaily, title="MA上抜けアラート", message="日足でMAを上抜けました")
plot(ma, title="MA", color=color.new(color.blue, 30))
その他の変更点(一覧)
上記以外にも、コンパイルエラーの原因になりやすい変更点があります。詳細な仕様は公式の移行ガイドで随時更新されます。エラーが出た場合は、エラーメッセージのキーワードで移行ガイド内を検索するのが確実です。
| 変更点 | 影響 |
|---|---|
boolがnaを持てない |
条件分岐で全else省略時などに発生していたnaのboolがエラーになる |
| 定数の除算結果 | 整数同士の割り算が小数を返すようになる(整数が欲しい場合はint()で囲む) |
履歴参照演算子[]の制限 |
リテラル値への[]参照や、UDTフィールドへの直接[]参照が書き換え必要 |
| 同一パラメータの重複指定 | v5で許容されていたケースがコンパイルエラーになる |
linewidthの最小値 |
0以下の指定が不可になり、最小値1が必須 |
| 配列の負インデックス | array.get(arr, -1)が末尾要素として解釈される新機能に |
TradingViewで実際に試してみよう
この記事の内容はTradingViewで今すぐ実践できます。無料プランでも十分対応できます。
▶ TradingViewを無料で開くクレジットカード不要・いつでも解約OK
Claude Codeにv5→v6の移行チェックをさせる
変更点をすべて手動で確認するのは手間がかかります。Claude Codeに移行ガイドの観点でスクリプトをチェックさせると、書き換え箇所の洗い出しが速くなります。プロンプトの書き方のコツはClaudeにPine Scriptを書かせるときの3つのコツでも解説しています。v6移行では特に、「該当箇所を推測させず、見つからない場合は指摘させる」プロンプトが有効です。
以下のPine Script v5のコードを、TradingView公式のv6移行ガイドに沿ってv6に書き換えてください。
チェックしてほしい項目:
- strategy.entry()やstrategy.exit()のwhenパラメータが使われていないか
- transpパラメータが使われていないか(color.new()への置き換え)
- timeframe.periodの文字列比較("D"や"W"など乗数省略形)が使われていないか
- intやfloatの値をboolとして直接条件式に使っている箇所がないか
- 該当箇所がなければ「該当なし」とだけ答えてください。推測で書き換えないでください。
[ここにv5のコードを貼り付け]
「該当なし」と答えさせる一文を入れておくと、実際には問題のない箇所まで無理に書き換えられるのを防げます。書き換え後は必ずPine Editorでコンパイルし、エラーが解消されたかを確認してください。
こんな場合は要注意
- strategy()で運用中のスクリプトを移行する場合は要注意です。マージン設定や注文数の挙動に関わる変更が含まれます。移行後は必ずバックテストの結果が移行前と変わっていないかを確認してください
- 古い記事やフォーラムのコードをそのまま使う場合、v5以前を前提にした解説が多いので注意してください。そのまま貼り付けるとv6ではエラーになる可能性があります
- hex色コードなど細かい仕様変更を厳密に確認したい場合、本記事では見出しレベルでの変更内容にとどめています。細部の数値は執筆時点で公式ページの表を直接確認してください
まとめ
- Pine Script v6は2024年12月に公式リリースされ、現在の標準バージョンになっている
- whenパラメータ廃止・transp廃止・timeframe.period表記変更・bool暗黙変換の廃止が特に遭遇しやすい変更点
- Claude Codeに移行ガイドの観点でチェックさせると、書き換え箇所の洗い出しが効率化できる
- strategy()を使ったスクリプトは、移行後に必ずバックテスト結果を再確認する
移行後のスクリプトを実際に検証する手順はバックテスト実行方法で解説しています。移行前後のチャートを並べて見比べたい場合は、レイアウトを複数使える有料プランが便利です。プランの違いは有料プランの選び方で比較しています。v5時代に書いたスクリプトは、リペイントなど別の問題を抱えていることもあります。その場合はあわせてPine Scriptのリペイント問題を完全理解するも参考にしてください。
📊 TradingViewプラン比較
| プラン | 月額 | 主な特徴 |
|---|---|---|
| Basic(無料) | $0 | 1チャート・広告あり・インジケーター3つ |
| Essential | $12.95〜 | 広告なし・インジケーター5つ・アラート20件 |
| Plus ⭐人気 | $24.95〜 | インジケーター10個・アラート100件・同期チャート2つ |
| Premium | $49.95〜 | インジケーター25個・アラート無制限・同期チャート8つ |
まずは無料プランで試して、必要なら有料プランへアップグレード
