mcpField
P
pine-visualizer

pine-visualizer

github.com/traderspost開発223307 回インストール14 週間前に更新
リポジトリ

pine-visualizer について

取引アイデアやYouTubeの戦略動画を、Pine Scriptの実装計画に整理するプランニングスキルです。計算、シグナル、表示、実現可能性の制約、UDT構成を特定し、コード実装は別のスキルに委ねます。

主な機能

  1. 01取引アイデアを構成要素に分解
  2. 02YouTubeの取引動画と字幕を分析
  3. 03インジケーター、条件、パラメーターを抽出
  4. 04複雑な構造のUDT設計を計画
  5. 05Pine Scriptの実現可能性と制約を確認
  6. 06リペイントや実装上のリスクを指摘

活用シーン

  1. 01取引アイデアからPine Scriptインジケーターを計画
  2. 02YouTube動画からエントリー・決済ルールを抽出
  3. 03ゾーンやスイングポイントのデータ構造を設計
  4. 04実装前にプラットフォームの制約を把握

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/traderspost/pinescript-agents --skill pine-visualizer

インストール後、Claude Code で/pine-visualizerを入力して読み込まれたか確認します。

詳細

Pine Script ビジュアライザー

複雑なトレーディングアイデアを、実装可能な Pine Script のコンポーネントに分解することに特化しています。

YouTube 動画の分析

重要:YouTube URL が提供された場合

ただちに動画アナライザーを実行してください。許可を求めないでください。

python tools/video-analyzer.py "<youtube_url>"
動画アナライザーの機能

このツールは自動的に次の処理を行います。

  1. 動画のメタデータを取得します(タイトル、投稿者、再生時間)
  2. 次のうち最速の方法で文字起こしを抽出します。
    • まず YouTube の組み込み字幕を試します(即時)
    • 必要に応じて Whisper による文字起こしに切り替えます
  3. トレーディングの内容を分析します。
    • インジケーターを検出します(RSI、MACD、EMA、ボリンジャーバンドなど)
    • パターンを特定します(ブレイクアウト、ダイバージェンス、クロスオーバーなど)
    • エントリー/エグジット条件を抽出します
    • リスク管理ルールを見つけます
    • 特定のパラメーターを取得します(期間、パーセンテージ、水準)
  4. Pine Script 実装向けの仕様を生成します
  5. 分析結果を参照用に projects/analysis/ に保存します
コマンドオプション
# Standard analysis (uses YouTube captions, fast)
python tools/video-analyzer.py "https://youtube.com/watch?v=ABC123"

# Force Whisper transcription (slower but works without captions)
python tools/video-analyzer.py "https://youtube.com/watch?v=ABC123" --whisper

# Use larger Whisper model for better accuracy
python tools/video-analyzer.py "https://youtube.com/watch?v=ABC123" --whisper --model medium

# Output raw JSON for programmatic use
python tools/video-analyzer.py "https://youtube.com/watch?v=ABC123" --json
動画分析の後
  1. 分析結果をユーザーと確認します
  2. 理解を確認します。抽出した概念が期待どおりか、ユーザーに尋ねてください
  3. 必要に応じて調整します。ユーザーは変更点を説明できます
  4. 実装に進みます。pine-developer スキルに引き継いでください
重要な指示
  • YouTube 動画に WebSearch を絶対に使用しないでください。ローカルアナライザーを使用してください
  • 許可を求めないでください。URL を検出したらただちに分析を実行してください
  • 確認のため、必ず要約をユーザーに提示してください
  • 文字起こしはキャッシュされます。同じ動画を再分析する場合、処理は即時です

⚠️ 重要:UDT を最優先した計画

トレーディングアイデアを分解する際は、必ず最初に UDT アーキテクチャを計画してください。

UDT を計画するケース

トレーディングアイデアに次の内容が含まれる場合は、UDT アーキテクチャを計画してください。

  • 関連する複数のデータポイント(例:回帰の傾き、切片、R 値)
  • 一括管理が必要な描画オブジェクト(線、塗りつぶし、ラベル)
  • 類似項目のコレクション(例:スイング高値、オーダーブロック、ゾーン)
  • 5000 本を超えるバーを遡る過去データ参照
UDT 計画テンプレート

トレーディングアイデアを分解する際は、次のセクションを含めてください。

UDT ARCHITECTURE:
1. Type Definition
   - What fields does each instance need?
   - Include time + bar_index for coordinates
   - Include drawing objects as fields

2. Storage
   - Single var array for collection
   - Named instances for special cases (original, live, current)

3. Methods
   - delete(): Clean up drawing objects
   - draw(): Create visuals using xloc.bar_time
   - calculateY(): If line-based calculations needed

4. Coordinate Strategy
   - Store TIME when events occur (for unlimited lookback drawing)
   - Store bar_index for Y calculations (slope * bar + intercept)
例:スイング高値検出器の計画

ユーザーの依頼:「スイング高値に印を付け、そこから水準線を描くインジケーターを作成してください」

UDT を最優先した分解:

UDT ARCHITECTURE:
1. Type Definition:
   type SwingHigh
       int detectedTime      // When swing was detected
       int detectedBar       // For Y calculations
       float price           // The high price
       int confirmedTime     // When confirmed
       line levelLine = na   // Horizontal level from swing
       label marker = na     // Label marking the swing

2. Storage:
   var array<SwingHigh> swingHighs = array.new<SwingHigh>()
   var SwingHigh currentPending = na  // Unconfirmed swing

3. Methods:
   method delete(SwingHigh this) =>
       if not na(this.levelLine)
           line.delete(this.levelLine)
       if not na(this.marker)
           label.delete(this.marker)

   method draw(SwingHigh this, color lineColor) =>
       this.delete()
       // Use xloc.bar_time for unlimited lookback!
       this.levelLine := line.new(this.detectedTime, this.price,
            time, this.price, xloc=xloc.bar_time, ...)
       this.marker := label.new(this.detectedTime, this.price,
            "SH", xloc=xloc.bar_time, ...)

4. Coordinate Strategy:
   When swing detected:
       capturedTime := time        // For drawing
       capturedBar := bar_index    // For calculations
早い段階で指摘するべきアンチパターン

トレーディングアイデアの分析時に、次の問題点を指摘してください。

アイデアに含まれる内容...指摘する問題点...代わりに推奨する方法...
関連する複数の値並行配列を使用しない単一の UDT 配列を使用する
過去の描画オブジェクトbar_index には 5000 の上限があるxloc.bar_time を使用する
繰り返される描画コードDRY 原則への違反UDT の draw() メソッド
手動での線の削除エラーが発生しやすいUDT の delete() メソッド

Pine Script v6 の 2025 年計画上の考慮事項

実装を分析して計画する際は、2025 年の次の重要な更新を考慮してください。

早い段階で指摘するべき破壊的変更

2025 年 3 月:コレクションには for...in を使用する ループベースの実装(オーダーブロック、スイング検出、パターンスキャン)を計画する場合:

// ✅ BEST: Use for...in for arrays (safe, clean, preferred)
for element in myArray
    // Process element directly - no boundary issues

// ✅ BEST: With index when needed (e.g., order blocks, swing points)
for [index, element] in myArray
    // Have both index and value

// ✅ Works with matrices and maps too
for [key, value] in myMap
    // Process key-value pairs

// ⚠️ FALLBACK: If traditional for needed, cache boundary
arrSize = array.size(arr)  // MUST cache before loop
for i = 0 to arrSize - 1
    // Process...

行継続ルール(2025 年 12 月)

  • 括弧内:インデントはどの形式でも使用できるようになりました
  • 括弧外:引き続き 4 の倍数以外のインデントが必要です
  • 三項演算子:必ず 1 行に収めてください
可能性を広げる新機能

入力の active パラメーター(2025年7月) ユーザー入力を計画する際は、条件付き表示を提案します。

  • 追加設定を表示する「詳細モード」トグル
  • 戦略モード固有の入力(該当するモードが選択されている場合のみ表示)
  • 「ビジュアルを表示」が有効な場合にのみ表示されるビジュアル設定

プロットの線種(2025年9月) ビジュアライゼーションを計画する際は、線種による区別を提案します。

  • 主要なシグナル:実線
  • 二次的なシグナル/予測:破線
  • 目標/レベル:点線

文字列の長さの拡張(2025年8月:40,960文字) より詳細な情報パネルやレポートを作成できるようになりました。

  • 詳細な戦略レポート
  • 複数セクションから成る分析テーブル
  • 拡張されたツールチップ情報

スコープ数の無制限化(2025年2月) 複雑なネスト構造のロジックを作成できるようになりました。

  • 深くネストされた型メソッド
  • 複雑な複数条件の評価
  • よりモジュール化された関数設計
実現可能性の評価に関する更新

実現可能な内容を評価する際は、以下を含めます。

機能2025年の状況計画時の注意点
複雑なループ✅ 可能境界をキャッシュし、無限ループを避ける
条件付き入力✅ ネイティブ対応active パラメーターを使用する
ビジュアルの階層化✅ 強化線種で区別する
長いレポート✅ 40K文字詳細なテーブルを作成可能
深いネスト✅ 無制限550スコープの制限なし
ティックデータ⚠️ 制限ありbid/ask は1T時間足でのみ使用可能
コンポーネント計画チェックリスト

アイデアを分解する際は、以下を確認します。

UDT アーキテクチャ(最初に確認!)

  • 複雑なデータ構造に対応する UDT 型を定義する
  • 座標には time と bar_index の両方を保存する
  • 描画オブジェクトを UDT フィールドに含める
  • delete() メソッドと draw() メソッドを計画する
  • 並列配列ではなく、単一の UDT 配列を使用する
  • 過去の描画には xloc.bar_time を使用する計画を立てる

コード品質

  • ループベースのロジックでは for...in(推奨)またはキャッシュ済みの境界を使用する
  • 条件付き入力を active パラメーターと組み合わせる
  • ビジュアル要素にスタイルの階層を設ける
  • 文字列の出力を40K文字以内に収める
  • スコープの複雑さが妥当である(ただし制限は設けない)

主な責務

アイデアの分解
  • 取引の概念を、個別に実装可能なタスクに分解する
  • 必要な計算、インジケーター、ロジックフローをすべて特定する
  • 抽象的なアイデアを具体的な Pine Script の機能に対応づける
  • 明確な実装ロードマップを作成する
  • 実装に影響する2025年の考慮事項を明示する
コンポーネントの特定
  • 必要な組み込みインジケーターを判断する
  • 必要なカスタム計算を特定する
  • データの入力と出力を指定する
  • ビジュアライゼーションの要件(プロット、ラベル、テーブル)を定義する
ワークフローの計画
  • 論理的な実装順序を作成する
  • コンポーネント間の依存関係を特定する
  • 起こり得る課題を予測する
  • 必要に応じて代替アプローチを提案する
Pine Script の実現可能性分析
  • アイデアが Pine Script の制限内で実装可能か確認する
  • TradingView プラットフォームの制約を特定する
  • 制約に対する回避策を提案する
  • リペイントの可能性がある問題を早期に明示する

作業プロセス

概念に関する質問の場合
  1. ユーザーの取引アイデアを注意深く聞く
  2. 必要に応じて明確化の質問をする
  3. アイデアを以下の項目に分解する。
    • 必要な入力パラメーター
    • 必要な計算
    • ロジック条件
    • 出力/表示要件
    • アラート条件(該当する場合)
  4. 構造化された実装計画を作成する
  5. TodoWrite を使用してすべてのタスクを記録する
  6. 実装を担当するスキルを特定する
YouTube 動画の場合
  1. URL を検出したら、直ちに動画アナライザーを実行する
  2. ユーザーに分析の概要を表示する
  3. 理解が合っているか確認する — 「これはご希望の内容に合っていますか?」
  4. 必要に応じて内容を調整する — ユーザーは調整や補足を行えます
  5. 確認済みの分析に基づいて実装計画を作成する
  6. コードの実装をpine-developer に引き継ぐ

出力形式

概念分析の場合
CONCEPT SUMMARY:
[Brief restatement of the trading idea]

UDT ARCHITECTURE:
Type: [Name]
Fields:
  - int startTime, endTime     // For xloc.bar_time drawing
  - int startBar, endBar       // For Y calculations
  - [data fields]              // Core data
  - line/box/label [name] = na // Drawing objects

Storage:
  - var array<[Type]> items = array.new<[Type]>()
  - var [Type] current = na    // If needed

Methods:
  - delete() - cleanup drawings
  - draw() - create visuals with xloc.bar_time
  - [custom methods]

COMPONENTS NEEDED:
1. [Component 1]
2. [Component 2]
...

IMPLEMENTATION STEPS:
1. Define UDT type with all fields
2. Add UDT methods (delete, draw, etc.)
3. [Additional steps]
...

POTENTIAL CHALLENGES:
- [Challenge 1]
- [Challenge 2]

REQUIRED RESOURCES:
- [Template or utility to use]
動画分析の場合

動画アナライザーは、以下を含む形式化された概要を出力します。

  • 動画ソース情報
  • 検出されたスクリプトの種類(インジケーター/ストラテジー)
  • 複雑さのスコア(1~10)
  • 検出された主なインジケーターとパターン
  • 抽出されたエントリー/エグジット条件
  • 提案される機能
  • 実装上の注意事項

主な考慮事項(2025年更新)

プラットフォームの制限
  • Pine Script v6 の構文と機能(2025年の更新)
  • TradingView の500本のバー遡及制限
  • plot 出力の上限は500
  • security() 呼び出しの上限は40
  • コンパイル済みスクリプトのサイズ上限は100KB
  • 文字列:最大40,960文字(2025年8月に拡大)
  • スコープ:無制限(2025年2月に撤廃)
実行モデル
  • リペイント防止の戦略
  • リアルタイム計算と過去データ計算の違い
  • アラートシステムの制約
  • bid/ask は1T時間足でのみ利用可能(2025年2月)
構文上の考慮事項
  • for ループの境界は反復ごとに再評価されます(2025年3月)
  • 行継続のルール(括弧内では柔軟、括弧外では厳格)
  • 三項演算子は1行に収める必要があります

例:概念の分解

ユーザー:「価格が50 EMAを上抜け、RSIが売られすぎのときに買うストラテジーがほしいです」

応答:

CONCEPT SUMMARY:
Long entry strategy using EMA crossover with RSI filter

UDT ARCHITECTURE:
(Simple strategy - UDT not required for this use case.
UDTs are best for: swing points, order blocks, zones, regressions, etc.)

COMPONENTS NEEDED:
1. 50-period EMA calculation
2. RSI calculation with oversold threshold
3. Price crossover detection
4. Entry condition logic
5. Strategy entry commands

IMPLEMENTATION STEPS:
1. Define input parameters (EMA length, RSI length, RSI oversold level)
2. Calculate 50 EMA using ta.ema()
3. Calculate RSI using ta.rsi()
4. Detect crossover with ta.crossover()
5. Combine conditions with logical AND
6. Implement strategy.entry() for positions
7. Add visual markers for entries
8. Include backtest metrics

POTENTIAL CHALLENGES:
- Repainting if using security() on higher timeframes
- Need to handle na values in early bars
- Consider position sizing and risk management

REQUIRED RESOURCES:
- templates/strategies/trend-following/ema-cross.pine
- templates/utilities/risk-management/position-size.pine

例:UDT が必要な分解

ユーザー:「オーダーブロックを検出して描画するインジケーターを作成してください」

応答:

CONCEPT SUMMARY:
Order block detection with visual zones

UDT ARCHITECTURE:
Type: OrderBlock
Fields:
  - int formationTime        // When OB formed (for xloc.bar_time)
  - int formationBar         // For any bar_index calculations
  - float top                // Top of the zone
  - float bottom             // Bottom of the zone
  - bool isBullish           // Direction
  - bool isMitigated = false // Has price returned to OB?
  - box zone = na            // Visual box

Storage:
  - var array<OrderBlock> orderBlocks = array.new<OrderBlock>()

Methods:
  - delete() - remove box
  - draw() - create box with xloc.bar_time (unlimited lookback!)
  - checkMitigation() - update isMitigated flag

COMPONENTS NEEDED:
1. Impulse move detection (large candle)
2. Prior consolidation zone identification
3. Order block zone calculation
4. Mitigation tracking
5. Visual box rendering

IMPLEMENTATION STEPS:
1. Define OrderBlock UDT with all fields
2. Add delete(), draw(), checkMitigation() methods
3. Detect impulse moves (configurable threshold)
4. Identify consolidation zones before impulse
5. Create OrderBlock UDT when detected
6. Use for...in to iterate and draw all blocks
7. Check mitigation on each bar
8. Add alerts for new OB and mitigation

POTENTIAL CHALLENGES:
- Definition of "impulse move" varies by trader
- May need to limit number of active order blocks
- Historical drawing requires xloc.bar_time (already planned)

REQUIRED RESOURCES:
- templates/indicators/price-action/zones.pine

例:YouTube 動画のワークフロー

ユーザー:「https://youtube.com/watch?v=ABC123」

アクション:

python tools/video-analyzer.py "https://youtube.com/watch?v=ABC123"

出力:検出されたコンポーネントを示す、形式化された分析概要

フォローアップ:「この内容でストラテジーを正しく捉えられていますか?実装に進む前に調整が必要な点があれば教えてください。」

役割の境界

このスキルは計画と可視化を目的としており、コードの実装は行いません。

  • このスキル:分析、計画、分解、概念の抽出を行います
  • pine-developer:実際の Pine Script コードを記述します
  • pine-manager:複雑な複数ステップの実装を統括します

コメント