PR

Claude CodeでTradingViewインジケーターを爆速で作る4ステップ【Vibe-Coding入門】

Pineスクリプト

この記事でわかること

  • Vibe-Codingとは何か、なぜTradingViewのインジケーター開発と相性がいいのか
  • MA×RSI複合シグナルインジケーターを例に、4ステップの全工程
  • 実際のClaudeとの会話例・完成コード・学習ファイルの中身まで

英語圏のトレーダー@TraderDiegoXが投稿した「Vibe-CodingでTradingViewインジケーターを作る方法」が41万ビューを超えました。コードを1行も書かずにAIにPine Scriptを作らせるこの手法、日本語でまとめたものがほぼ存在しません。

この記事では「MA×RSI複合シグナルインジケーター」を実際に作りながら、4ステップを全部見せます。Claudeとの会話例、完成したPine Scriptコード、学習ファイルの中身まで含めます。

インジケーター作成の全体像を先に把握したい場合はClaude Code × TradingViewでオリジナルインジケーターを作る完全ガイドから読むと流れがつかみやすいです。

Vibe-Codingとは

「コードを書かずにAIにコードを作らせる」開発スタイルです。「完璧なプロンプトを最初に書く」のではなく、「動く状態にして、試して、直す」を繰り返します。

Pine ScriptはTradingView専用言語なのでプログラミング教材が少ない。でも「やりたいこと」は明確なトレーダーが多い。このギャップをVibe-Codingが埋めます。

今回作るもの:MA×RSI複合シグナル

このインジケーターは2つの条件を組み合わせます。

  • 移動平均線(20EMA・200SMA):トレンドの方向と転換タイミングを見る
  • RSI(14):モメンタムを確認し、だまし買いを減らす

買いシグナルは「200SMA上(上昇トレンド中)かつ価格が20EMAを上抜け、かつRSIが50以上」という3条件の一致を求めます。移動平均線だけのクロスより精度が上がります。

なぜMA単独ではなくRSIを組み合わせるのか

移動平均線のゴールデンクロスは相場が横ばいのときに何度もだましシグナルを出します。RSIのフィルターを加えると「クロスしたがモメンタムが弱い=見送り」という判断が入り、不要なエントリーを減らせます。バックテストの勝率が数%変わることもある。

STEP 1:環境を準備する

必要なものは2つだけです。

ツール費用用途
Claude(ProまたはClaude Code)月額約3,000円〜Pine Scriptの生成・修正
TradingViewアカウント無料〜コードのテストと表示

プロジェクトフォルダを作る

最初にフォルダを1つ作ります。

PineScript/
└── MA-RSIシグナル/          ← プロジェクト名のフォルダ
    ├── indicator.pine        ← Claudeが生成するコード
    ├── learnings.txt         ← STEP 4で作る学習ログ
    └── style.txt             ← STEP 4で作るスタイル設定

このフォルダをClaude Codeに読み込ませた状態で作業します。Claudeは生成したファイルをここに保存し、次のやり取りでも参照できます。

Claude Codeを使う場合、フォルダを開いてから claude コマンドを実行するだけです。フォルダにファイルが増えていくのが見えるので、作業の進行状況がわかりやすい。

STEP 2:作るものを言語化する

Vibe-Codingで最も重要なのはここです。「何を作りたいか」がぼんやりしていると、出てくるコードもぼんやりします。

プロンプトの具体化レベル

❌ あいまいすぎる

「移動平均線とRSIを組み合わせたインジケーターを作って」

△ 曖昧さが残る

「20日EMAと200日SMAを表示して、RSIが50以上のときに買いシグナルを出して」

✅ このレベルで書く

「Pine Script v5で書いて。インジケーター名は『MA×RSIシグナル』。20EMAと200SMAをチャートに描画する。買いシグナルの条件は3つ全部揃ったとき:①終値が200SMAより上、②終値が20EMAを上抜けたバー、③RSI(14)が50より上。売りシグナルは逆の条件。シグナルは三角マーク(上=緑、下=赤)で表示。アラートも設定して。」

「表示するもの」「シグナルの条件」「見た目」の3点が揃えば十分。最初から完璧に書く必要はなく、動かしながら詰めていきます。

STEP 3:Vibe-Codingを回す

実際のClaudeとのやり取りを見せます。

1回目:最初のプロンプト

👤 あなたのメッセージ

Pine Script v5で書いてください。インジケーター名は「MA×RSIシグナル」。20EMAと200SMAをチャートに描画する。買いシグナルの条件は3つ全部揃ったとき:①終値が200SMAより上、②終値が20EMAを上抜けたバー(crossover)、③RSI(14)が50より上。売りシグナルは逆の3条件。シグナルは三角マークで表示(買い=ローソク足下に緑、売り=上に赤)。買いと売りそれぞれのアラートも設定して。

Claudeはこのプロンプトに対して、ほぼ動くコードを返してきます。稀にv4の書き方が混じることがあるので、念のず「Pine Script v5で書いて」を明示するのがコツです。詳細はClaudeにPine Scriptを書かせるときの3つのコツで解説しています。

完成したコード

3〜4回のやり取りで以下のコードに落ち着きました。

//@version=5
indicator("MA×RSIシグナル", overlay=true, shorttitle="MA×RSI")

// === 入力パラメータ ===
emaLen   = input.int(20,  "短期EMA期間",   minval=1)
smaLen   = input.int(200, "長期SMA期間",   minval=1)
rsiLen   = input.int(14,  "RSI期間",       minval=1)
rsiLevel = input.int(50,  "RSIフィルター", minval=1, maxval=100)

// === 計算 ===
ema20  = ta.ema(close, emaLen)
sma200 = ta.sma(close, smaLen)
rsiVal = ta.rsi(close, rsiLen)

// === トレンド判定 ===
bullTrend = close > sma200
bearTrend = close < sma200

// === シグナル条件 ===
buySignal  = ta.crossover(close, ema20)  and bullTrend and rsiVal > rsiLevel
sellSignal = ta.crossunder(close, ema20) and bearTrend and rsiVal < rsiLevel

// === 描画 ===
plot(ema20,  "20EMA",  color=color.new(color.blue,   0), linewidth=2)
plot(sma200, "200SMA", color=color.new(color.orange,  0), linewidth=2)

plotshape(buySignal,  "買いシグナル", shape.triangleup,
          location.belowbar, color.green, size=size.small)
plotshape(sellSignal, "売りシグナル", shape.triangledown,
          location.abovebar, color.red,   size=size.small)

// === アラート ===
alertcondition(buySignal,  "買いシグナル",
               "MA×RSI: 上昇クロス + モメンタム確認(RSI > 50)")
alertcondition(sellSignal, "売りシグナル",
               "MA×RSI: 下降クロス + 弱気モメンタム(RSI < 50)")

TradingViewのPineエディタに貼り付けて「チャートに追加」を押せば動きます。

エラーが出たときの対処

初回から完璧に動くことは少ないです。エラーが出たら、そのメッセージをそのままClaudeに貼り付けるだけで直ります。

エラーメッセージ原因Claudeへの指示
Cannot call ‘rsi’ with argument ‘source’v4の rsi() が混入「このエラーが出ました。Pine Script v5に修正して」+エラーを貼る
Undeclared identifier ‘crossover’v4の書き方(ta. プレフィックス不足)同上
line X: no viable alternative at input文法エラー(括弧の閉じ忘れ等)エラー全文を貼り付けるだけ
Study References Another Studyoverlay=trueでオシレーターを描画しようとした「overlayの設定がおかしいので直して」
Too many arguments関数の引数の数が変わった(v4→v5)エラーを貼り「v5の正しい書き方に直して」

機能を追加するときは1つずつ

「ボリュームフィルターも追加したい」と思ったら、一度に全部頼まない。「まず出来高が20日平均の1.5倍以上のときだけシグナルを出す条件を追加して」と1つずつ追加していきます。

複数条件を一気に追加するとどこでエラーが出たかわからなくなります。段階的に作ると「この機能を足したときにエラーが出た」とすぐ特定できる。

STEP 4:学習ループを作る

ここが差を生む部分です。「このステップを飛ばすと2本目も同じ速度になる」と言っているトレーダーがいて、使ってみると確かにそうでした。

インジケーターが完成したら、Claudeに2つのファイルを作らせます。

1. learnings.txt(Pine Script学習ログ)

Claudeへの指示:

このプロジェクトで使ったPine Script v5のコーディング知識を
learnings.txtにまとめてください。
次のプロジェクトに引き継げる形で。

Claudeが作るlearnings.txtはこんな内容になります:

# Pine Script 学習ログ(MA×RSIシグナルプロジェクト)
# 更新: 2026-05-31

## 必須:バージョン宣言
//@version=5 を必ず1行目に書く。ないとエラーになる。

## 関数名のv4→v5変換
- rsi()        → ta.rsi()
- ema()        → ta.ema()
- sma()        → ta.sma()
- crossover()  → ta.crossover()
- crossunder() → ta.crossunder()
- security()   → request.security()

## input関数の変更
- input(type=input.integer) → input.int()
- input(type=input.float)   → input.float()
- input(type=input.bool)    → input.bool()

## overlay設定の使い分け
- overlay=true  : チャート上に描画(MA、ボリンジャーバンド等)
- overlay=false : サブウィンドウに描画(RSI、MACD等)
※ overlay設定を間違えるとエラーになる

## plotshapeのlocation
- location.belowbar : シグナルをローソク足の下に表示
- location.abovebar : シグナルをローソク足の上に表示

## alertcondition
- 第1引数: 条件(bool)
- 第2引数: アラート名(文字列)
- 第3引数: アラートメッセージ(文字列)
- 設定後TradingViewのアラートメニューから有効化が必要

2. style.txt(デザイン・スタイル設定)

Claudeへの指示:

このインジケーターで使ったデザインとスタイル設定を
style.txtにまとめてください。
次のプロジェクトで同じ見た目を再現できるように。

作られるstyle.txtの例:

# スタイル設定メモ(MA×RSIシグナルプロジェクト)

## ライン
- 短期EMA: color.blue, linewidth=2
- 長期SMA: color.orange, linewidth=2

## シグナルマーク
- 買い: shape.triangleup, location.belowbar, color.green, size=size.small
- 売り: shape.triangledown, location.abovebar, color.red, size=size.small

## 基本方針
- ラインは2本まで(それ以上は見づらい)
- シグナルマークはsize.smallが視認性と密度のバランスがいい
- 色は緑(買い)・赤(売り)・青(短期)・橙(長期)で統一

学習ループの使い方

次のプロジェクトを始めるときに、この2ファイルを新しいフォルダにコピーするだけです。

PineScript/
├── MA-RSIシグナル/
│   ├── indicator.pine
│   ├── learnings.txt   ← これをコピー
│   └── style.txt       ← これもコピー
└── ボリンジャーブレイクアウト/  ← 次のプロジェクト
    ├── learnings.txt   ← コピーしたもの
    └── style.txt       ← コピーしたもの

Claudeはフォルダ内のファイルを参照するので、前回の知見を持った状態でスタートします。「v4とv5の違い」を毎回説明し直す必要がなくなる。2本目は体感で1.5倍速く、3本目はさらに速くなります。

学習ループのイメージ

インジケーター完成 → learnings.txt + style.txt 作成 → 次フォルダにコピー → 知見を引き継いでスタート → また完成 → ファイル更新 → …

できること・できないこと

向いている用途と向いていない用途を正直に書きます。

向いている向いていない
チャート上のシグナル・マーク表示ブローカーへの自動注文
条件アラートの自動化高頻度取引(HFT)
複数インジケーターの複合条件外部APIとのリアルタイム連携
バックテスト(ストラテジー)の自動実行複雑なデバッグが必要なロジック

バックテストでどう検証するかはTradingViewでバックテストを実行する方法を参照してください。MA×RSIのストラテジー版も同じ流れで作れます。

まとめ

4ステップのおさらい

  • STEP 1:プロジェクトフォルダを作って環境を整える
  • STEP 2:「表示するもの・条件・見た目」の3点で言語化する
  • STEP 3:コードを生成してTradingViewで動かす。エラーはClaudeに貼るだけ
  • STEP 4:完成後にlearnings.txt + style.txtを作って次のプロジェクトに引き継ぐ

STEP 4を飛ばす人が多いです。でもここが積み重なると、3本目あたりから別物の速さになる。最初のインジケーターが完成したらすぐ試してみてください。

TradingViewの詳しい使い方や有料プランとの組み合わせはClaude Code × TradingViewでオリジナルインジケーターを作る完全ガイドにまとめています。

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