MagicTradeBot TradingView統合ガイド(NATSとWebhookによる完全セットアップ)

1. 概要

MagicTradeBotは、TradingViewのインジケーター、ストラテジー、Pine Scriptアラートから直接トレードシグナルを受信できます。 シグナルが到着すると、内部ボットシグナルと同じ実行エンジンを通過します — 注文発注、DCA、 スマートな判断、ブロードキャスト通知はすべて同じように機能します。

3つのコンポーネントが連携して動作します:

  • 🔗 tv-signal-bridge — TradingViewのWebhookを受信し、シークレットを検証し、シンボルを正規化してNATSに公開するスタンドアロンのAxumサービス
  • 📡 NATS JetStream — Dockerで動作する軽量メッセージブローカーで、少なくとも一度は配信される方式でブリッジからボットへシグナルを転送します
  • 🤖 MagicTradeBotシグナルリスナー — NATSを購読し、重複を排除し、ゲートキーパーチェックを実行し、sync_bot_scan_resultを呼び出します
情報
外部TVシグナルはファーストクラスシグナルとして扱われます。シグナルキーがsignal_registry.yamlに登録されると、 ボットはそれをTOP_GAINER_LONG_SIGNALやその他の内部シグナルと同様に処理します。

2. シグナルキーの形式

すべてのTradingViewシグナルは次の形式のキーを生成します:

TV_{ストラテジー}_{方向}_EXTERNAL_SIGNAL

設定 生成されるシグナルキー
ストラテジー: EMA_CROSS 方向: long TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL
ストラテジー: RSI_DIV 方向: short TV_RSI_DIV_SHORT_EXTERNAL_SIGNAL
ストラテジー: SUPERTREND 方向: long TV_SUPERTREND_LONG_EXTERNAL_SIGNAL

3. 前提条件

  • MagicTradeBotがインストールされ、実行されていること
  • tv-signal-bridgeのバイナリがビルドされ、利用可能であること
  • Docker Desktopがインストールされ、実行されていること(NATS用)
  • TradingViewの有料プラン — Essential以上
  • TradingViewがブリッジに到達できるパブリックURLまたはIP

4. セットアップ

4.1 DockerでNATSを起動

docker run -d \
  --name nats \
  --restart unless-stopped \
  -p 4222:4222 \
  -p 8222:8222 \
  nats:latest -js

4.2 tv-signal-bridgeの設定

config/config.tomlを編集:

[bridge]
bot_name    = "MagicTradeBot-1"
hmac_secret = "あなたの長いシークレットをここに"

[stream]
backend  = "nats"
nats_url = "nats://127.0.0.1:4222"
subject  = "trade.signals"

[symbols.mappings]
"BTCUSDT" = "BTC/USDT"
"ETHUSDT" = "ETH/USDT"

4.3 tv-signal-bridgeを起動

# Windows
./tv-signal-bridge-win.exe

# Linux / macOS
./tv-signal-bridge-linux

4.4 signal_registry.yamlにシグナルキーを登録

register_trading_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

register_broadcast_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

4.5 MagicTradeBotでTVシグナルを有効化

settings/tradingview.yamlを編集:

enabled: true
bot_name: "MagicTradeBot-1"
stream_backend: "nats"
nats_url: "nats://127.0.0.1:4222"
subject: "trade.signals"

5. TradingViewアラートの設定

Webhook URL:

https://your-server.com:8090/webhook/tradingview

メッセージ(JSON):

{
  "secret":     "あなたの長いシークレットをここに",
  "symbol":     "{{ticker}}",
  "side":       "long",
  "strategy":   "EMA_CROSS",
  "confidence": 80.0,
  "timestamp":  {{timenow}}
}

6. TradingViewを使わないテスト

PowerShellテスト(Windows)

$timestamp = [int]([DateTimeOffset]::UtcNow.ToUnixTimeSeconds())

$body = @{
    secret     = "あなたの長いシークレットをここに"
    symbol     = "BTCUSDT"
    side       = "long"
    strategy   = "EMA_CROSS"
    confidence = 85.0
    timestamp  = $timestamp
} | ConvertTo-Json

Invoke-RestMethod -Uri "http://localhost:8090/webhook/tradingview" `
  -Method POST -Body $body -ContentType "application/json"

7. 全体の連携確認

ブリッジのログ → ボットのログ → Discord/Telegram通知 → データベースの取引記録を確認します。

8. 設定リファレンス

9. トラブルシューティング

症状 解決策
ブリッジが401 INVALID_SECRETを返す シークレットが一致しません — 正確にコピーしてください
シグナルはブリッジに届くがボットに届かない enabled: trueを確認し、ボットを再起動してください
'bot_name mismatch' bot_nameは両方の設定ファイルで同一である必要があります

10. クイックリファレンスチェックリスト

  • Docker Desktopが実行中
  • NATSコンテナが-jsオプションで起動されている
  • ブリッジがポート8090で実行中
  • シグナルキーがsignal_registry.yamlに登録されている
  • tradingview.yamlが有効で、bot_nameが一致している
  • curl / PowerShellでテスト済み
  • 通知と取引が正常に作成された

📎 Related Topics