この記事でわかること
- Claude Code CLIとチャットボット版Claudeの本質的な違い
- Pine Script開発に最適なフォルダ構成とCLAUDE.mdの実装例(全文)
- カスタムスラッシュコマンドとlearnings管理によるセッション間引き継ぎの仕組み
「Claudeにコードを貼って聞く」のと「Claude Codeでプロジェクトを構築する」のは、似て非なる作業です。前者はチャット画面にコードを貼り付けて返答をもらうだけ。セッションが変わればClaudeは何も覚えていない。後者はCLIツールとしてのClaude Codeがプロジェクトフォルダを丸ごと読み込み、前回のセッションの知見も引き継いで作業します。
この記事では、Pine Script開発に特化したClaude Codeプロジェクトの構築方法を解説します。CLAUDE.mdの実際の中身、フォルダ構成、カスタムコマンドまで、全部見せます。
📊 この記事はTradingViewユーザー向けです
TradingViewをまだ使っていない方は、まず無料アカウントを作成してみましょう。登録は30秒、クレジットカード不要です。
無料でTradingViewを始める →Claude Code CLIとは何か
| 機能 | Claude.ai(チャット) | Claude Code(CLI) |
|---|---|---|
| ファイル読み込み | 手動で貼り付けるだけ | プロジェクトフォルダを自動で読む |
| セッション間の記憶 | なし(毎回リセット) | CLAUDE.mdとメモリファイルで引き継ぐ |
| 複数ファイルの操作 | 不可 | ファイルの作成・編集・参照が可能 |
| カスタムコマンド | なし | .claude/commands/ で定義できる |
| 起動方法 | ブラウザ | ターミナルで claude |
Pine Script開発プロジェクトのフォルダ構成
tradingview-pine/
├── CLAUDE.md
├── .claude/
│ └── commands/
│ ├── new-indicator.md
│ ├── debug-error.md
│ └── review-code.md
├── indicators/
│ ├── completed/
│ └── wip/
├── strategies/
├── learnings/
│ ├── v5-syntax.md
│ ├── errors-and-solutions.md
│ └── tradingview-quirks.md
└── docs/
└── session-log.md
CLAUDE.mdの設計(Pine Script特化版・全文)
# Pine Script v5 開発プロジェクト
## 言語・バージョン設定
- 使用言語: Pine Script v5(固定・v4は絶対に使わない)
- ファイル拡張子: .pine
## コーディング規則
### 必須ルール
1. 1行目は必ず //@version=5
2. var変数はグローバルスコープのみ
3. request.security()には[1] + barmerge.lookahead_on必須
4. 関数定義はスクリプトの先頭にまとめる
### 禁止事項(v4→v5 変換表)
v4(NG)→ v5(OK)
study() → indicator()
rsi() → ta.rsi()
ema() → ta.ema()
crossover() → ta.crossover()
security() → request.security()
input(type=input.integer) → input.int()
### 命名規則
- ローカル変数: camelCase
- 入力パラメータ: 末尾にLen/Pct/Lvl
## よく使うパターン(コピペ用)
### リペイントしないMTF取得
htfValue = request.security(syminfo.tickerid, "D", close[1], barmerge.lookahead_on)
### strategy()の最低限の設定
strategy("名前", overlay=true, initial_capital=1000000,
default_qty_type=strategy.percent_of_equity, default_qty_value=10,
commission_type=strategy.commission.percent, commission_value=0.05,
slippage=1, pyramiding=0)
## ファイル構成と参照先
- 文法確認: learnings/v5-syntax.md
- エラーが出たとき: learnings/errors-and-solutions.md
- 完成済みコード: indicators/completed/
## 作業ルール
1. 新しいインジケーターを作るとき: indicators/wip/に保存
2. 動作確認後: indicators/completed/に移動
3. セッション終了前: learnings/に追記するよう依頼
このCLAUDE.mdを使うと、「Pine Script v5で書いて」「リペイント防止して」という指示が毎回不要になります。
カスタムスラッシュコマンドの設計
.claude/commands/フォルダにMarkdownファイルを置くと、/コマンド名として呼び出せます。
new-indicator.md(新規インジケーター作成コマンド)
---
description: Pine Script v5の新規インジケーターを仕様から作成する
---
以下の仕様でPine Script v5インジケーターを作成してください。
制約(CLAUDE.mdのルールに従う)://@version=5必須・var変数はグローバルスコープ・
request.security()は[1]+barmerge.lookahead_on・コードはindicators/wip/に保存
$ARGUMENTS
出力形式:1.ファイル名 2.完全なコード 3.貼り付け手順 4.追加できる機能3つ
使い方:/new-indicator RSI(14)が30を下回ったときに買いサイン表示。アラートも設定する。
debug-error.md(エラーデバッグコマンド)
---
description: TradingViewのエラーを診断して修正する
---
以下のエラーを診断して修正してください。$ARGUMENTS
手順:1.原因を1文で説明 2.修正後のコードを示す 3.learnings/errors-and-solutions.mdに追記
使い方:/debug-error "Cannot call 'rsi' with argument 'source'"
review-code.md(コードレビューコマンド)
---
description: 完成したPine Scriptコードをレビューしてcompletedに移動する
---
$ARGUMENTSのコードをレビューしてください。
チェック項目://@version=5・var変数配置・request.security()設定・max_xxx_count・minval/maxval
問題なければindicators/wip/からindicators/completed/に移動する。
learnings/ディレクトリの管理フロー
v5-syntax.md の実際の中身
# Pine Script v5 文法・関数リファレンス
## テクニカル指標(すべてta.プレフィックス)
ta.rsi(close, 14) / ta.ema(close, 20) / ta.sma(close, 200)
ta.atr(14) / ta.crossover(a, b) / ta.crossunder(a, b)
ta.macd(close, 12, 26, 9) → [macdLine, signalLine, hist]を返す
ta.pivothigh(src, leftBars, rightBars) → rightBars本後に判定が返る
## request.security(リペイントしない書き方)
htfVal = request.security(syminfo.tickerid, "D", close[1], barmerge.lookahead_on)
[htfSMA, htfRSI] = request.security(syminfo.tickerid, "D",
[ta.sma(close, 200)[1], ta.rsi(close, 14)[1]], barmerge.lookahead_on)
errors-and-solutions.md の書き方
## 2026-06-03
### エラー: Cannot call 'rsi' with argument 'source'
原因: v4の書き方(rsi())を使った / 解決: ta.rsi(close, 14) に修正
### エラー: Cannot use 'request.security' in local scope of 'if'
原因: if/forブロック内に書いた / 解決: グローバルスコープに移動
### エラー: Study References Another Study
原因: overlay=falseでチャート価格を描画しようとした / 解決: overlay=trueに変更
実際のセッション例(起動から完成まで)
$ cd ~/tradingview-pine && claude
Claude Code が起動しました。CLAUDE.md を読み込みました。
You: /new-indicator 20EMAと200SMAのクロスを検出。上抜け=緑ラベル、下抜け=赤ラベル、アラート付き。
Claude: CLAUDE.mdのルールに従い作成します。
[indicators/wip/ema_sma_cross.pine を作成]
//@version=5
indicator("EMA×SMAクロス", overlay=true)
emaLen = input.int(20, "短期EMA", minval=1)
smaLen = input.int(200, "長期SMA", minval=1)
ema20 = ta.ema(close, emaLen)
sma200 = ta.sma(close, smaLen)
goldenCross = ta.crossover(ema20, sma200)
deadCross = ta.crossunder(ema20, sma200)
plot(ema20, "20EMA", color=color.blue, linewidth=2)
plot(sma200, "200SMA", color=color.orange, linewidth=2)
if goldenCross
label.new(bar_index, low, "GC", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)
alert("ゴールデンクロス発生", alert.freq_once_per_bar)
if deadCross
label.new(bar_index, high, "DC", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)
alert("デッドクロス発生", alert.freq_once_per_bar)
You: TradingViewで動作確認できた。
Claude: /review-code ema_sma_cross を実行します。
[✓] //@version=5 [✓] var変数配置 [✓] minval設定
問題なし。indicators/completed/ に移動しました。
You: 今日学んだことをlearningsに追記して
Claude: learnings/v5-syntax.md に alert() の使い方を追記しました。
まとめ
実装ステップ
- tradingview-pine/ フォルダを作る
- CLAUDE.mdに禁止事項・パターン・ファイル参照を書く
- .claude/commands/ にカスタムコマンドを3本置く
- learnings/ ディレクトリを作り初期ファイルを用意する
cd tradingview-pine && claudeで起動
実際にインジケーターを動かして検証するにはTradingViewのアカウントが必要です。プランの選び方はTradingViewの有料プランはどれを選ぶ?を参考にしてください。完成したインジケーターの実装例はClaude Code × TradingViewでオリジナルインジケーターを作る完全ガイドにまとめています。
📊 TradingViewプラン比較
| プラン | 月額 | 主な特徴 |
|---|---|---|
| Basic(無料) | $0 | 1チャート・広告あり・インジケーター3つ |
| Essential | $12.95〜 | 広告なし・インジケーター5つ・アラート20件 |
| Plus ⭐人気 | $24.95〜 | インジケーター10個・アラート100件・同期チャート2つ |
| Premium | $49.95〜 | インジケーター25個・アラート無制限・同期チャート8つ |
まずは無料プランで試して、必要なら有料プランへアップグレード

