この記事でわかること
- Pineスクリーナーで自作条件の銘柄スクリーニングを作る手順
- 利用にはPremium・Ultimateプランが必要という制約
- plot()の値をそのままスクリーナーの列にする実装コード
TradingViewの標準スクリーナーには500種類以上の指標があります。ただし「RSIとMACDを組み合わせた自分だけの条件」のような、既存の指標にない条件は作れません。ウォッチリストの銘柄を1つずつチャートで確認するのは、銘柄数が増えるほど現実的ではなくなります。
Pineスクリーナーを使うと、自分で書いたPine Scriptの条件でウォッチリスト全体を一括スキャンできます。この記事では、Pineスクリーナーの仕組みと、カスタム条件を列として出力する実装コードを解説します。
📊 この記事はTradingViewユーザー向けです
TradingViewをまだ使っていない方は、まず無料アカウントを作成してみましょう。登録は30秒、クレジットカード不要です。
無料でTradingViewを始める →Pineスクリーナーとは何か
Pineスクリーナー(Pine Screener)は、TradingViewの「プロダクト」メニューから開けます。
具体的には「プロダクト」→「スクリーナー」→「Pine」の順に進みます。
またはtradingview.com/pine-screener/に直接アクセスしても構いません。仕組みはシンプルです。ウォッチリストに登録した銘柄を、自分が書いたPine Scriptインジケーターでスキャンするというものです。
通常のスクリーナー(Stock Screener)との違いは、条件の作り方にあります。
| 機能 | 条件の作り方 |
|---|---|
| Stock Screener | 500種類以上の定義済み指標から選ぶ |
| Pineスクリーナー | 自分でPine Scriptを書いて条件を作る |
既存の指標の組み合わせで表現できない、独自の売買シグナルや複合条件を使いたいときに使う機能です。ウォッチリストでの銘柄管理そのものについてはウォッチリストで銘柄を管理する方法で解説しています。
最初に確認すべき制約:Premium・Ultimate限定
ここが最も重要な注意点です。Pineスクリーナーが使えるのはPremiumプラン・Ultimateプランのみです。無料のBasicプランはもちろん、EssentialやPlusプランでも利用できません。
| プラン | Stock Screener | Pineスクリーナー |
|---|---|---|
| Basic(無料) | × | × |
| Essential | ○ | × |
| Plus | ○ | × |
| Premium | ○ | ○ |
| Ultimate | ○ | ○ |
通常のStock ScreenerはEssential以上で使えます。一方Pineスクリーナーはさらに上位のプランが必要です。「カスタム条件で銘柄を絞りたい」と思ってこの記事にたどり着いた人の多くが、まずこのプラン要件でつまずきます。無料プランと有料プランの違い全体は有料プランの選び方で比較しています。
スクリプト側の制約
Premium以上であっても、Pineスクリーナーで使えるスクリプトにはいくつか条件があります。
- indicator型のみ:strategy型は非対応と見られます(公式ヘルプに明記はなく、indicator前提の説明のみのため)
- Pine Script v4以上:v4以上が推奨されています(v3以前での動作は公式に確認されていません)
- 計算範囲は直近500本のバー:それより過去のデータは参照されません
- 1スクリーンにつきインジケーターは1つ:複数のインジケーターを組み合わせて同時にスキャンすることはできません
request.*()は最大5回まで:上位足参照などを多用したスクリプトは呼び出し回数に注意が必要です
「インジケーター・オン・インジケーター」にも対応していません。これはあるインジケーターの出力を別のインジケーターの入力にする機能です。複雑な多段階の条件を組みたい場合は、1つのスクリプトの中で計算を完結させる必要があります。
TradingViewで実際に試してみよう
この記事の内容はTradingViewで今すぐ実践できます。無料プランでも十分対応できます。
▶ TradingViewを無料で開くクレジットカード不要・いつでも解約OK
実装:plot()の値がそのままスクリーナーの列になる
Pineスクリーナーでのカスタム条件の作り方は、拍子抜けするほどシンプルです。普段書いているインジケーターにplot()を追加するだけで、その値がスクリーナーの列としてそのまま表示されます。専用の関数や特別な記法は必要ありません。
下のコードは、RSIと出来高の急増を組み合わせた条件を、3つの列として出力する例です。
//@version=5
indicator("RSI×出来高スクリーナー", overlay=false)
rsiLen = input.int(14, "RSI期間", minval=2)
volLen = input.int(20, "出来高平均期間", minval=1)
volMult = input.float(1.5, "出来高倍率のしきい値", step=0.1)
r = ta.rsi(close, rsiLen)
volAvg = ta.sma(volume, volLen)
volRatio = volAvg > 0 ? volume / volAvg : na
// この条件が true の銘柄だけをスクリーナー側でフィルタできる
signal = ta.crossover(r, 30) and volRatio >= volMult
// plot()の値がそれぞれスクリーナーの列になる
plot(r, title="RSI")
plot(volRatio, title="出来高倍率")
plot(signal ? 1 : 0, title="シグナル")
// alertcondition()もスクリーナー側で列として選択できる
alertcondition(signal, title="RSI×出来高シグナル",
message="RSIが30を上抜け、かつ出来高が平均の{{plot_0}}倍")
コードのポイント
- 複数の
plot()は別々の列になる:この例では「RSI」「出来高倍率」「シグナル」の3列がスクリーナー側の列選択に表示されます - 真偽値は0/1に変換して
plot()する:signal ? 1 : 0のように数値化しておくと、スクリーナー上でソート・フィルタしやすくなります alertcondition()も列として使える:条件が成立した銘柄だけ「True」と表示され、アラート設定と同じロジックを流用できます
このコードをPineエディタで開き、通常のインジケーターと同じように「チャートに追加」します。その後Pineスクリーナー側で対象インジケーターとして選択すると、ウォッチリストの銘柄が一括でスキャンされます。アラート条件の書き方の基本はアラート機能の設定方法と活用術も参考にしてください。
こんな場合はPineスクリーナーが向かない
- Essential・Plusプランを使っている場合:Pineスクリーナー自体が使えません。まずはプランの選び方を確認してください
- バックテストの成績で銘柄を絞りたい場合:Pineスクリーナーはindicator型限定のため、strategy型のバックテスト結果は使えないと見られます
- 500本より前のデータを条件に使いたい場合:計算範囲が直近500本に固定されているため、長期の統計条件には向きません
まとめ
- Pineスクリーナーは、自作のPine Script条件でウォッチリスト全体を一括スキャンする機能
- 利用できるのはPremium・Ultimateプランのみ。Essential・Plusでは使えない
- スクリプトはindicator型・v4以上・直近500本のバー・インジケーター1つまでという制約がある
plot()の値を追加するだけで、その値がそのままスクリーナーの列になる
独自条件でのスクリーニングを試したくなったら、まず現在のプランがPremium・Ultimateかどうかを確認してください。プランの違いをまとめて見るなら有料プランの選び方、条件を組む前にPine Scriptの基礎を押さえたいならPine Script入門ガイドもあわせてご覧ください。
📊 TradingViewプラン比較
| プラン | 月額 | 主な特徴 |
|---|---|---|
| Basic(無料) | $0 | 1チャート・広告あり・インジケーター3つ |
| Essential | $12.95〜 | 広告なし・インジケーター5つ・アラート20件 |
| Plus ⭐人気 | $24.95〜 | インジケーター10個・アラート100件・同期チャート2つ |
| Premium | $49.95〜 | インジケーター25個・アラート無制限・同期チャート8つ |
まずは無料プランで試して、必要なら有料プランへアップグレード
