1. 概要
MagicTradeBotは、TradingViewのインジケーター、ストラテジー、Pine Scriptアラートから直接トレードシグナルを受信できます。 シグナルが到着すると、内部ボットシグナルと同じ実行エンジンを通過します — 注文発注、DCA、 スマートな判断、ブロードキャスト通知はすべて同じように機能します。
3つのコンポーネントが連携して動作します:
- 🔗 tv-signal-bridge — TradingViewのWebhookを受信し、シークレットを検証し、シンボルを正規化してNATSに公開するスタンドアロンのAxumサービス
- 📡 NATS JetStream — Dockerで動作する軽量メッセージブローカーで、少なくとも一度は配信される方式でブリッジからボットへシグナルを転送します
- 🤖 MagicTradeBotシグナルリスナー — NATSを購読し、重複を排除し、ゲートキーパーチェックを実行し、
sync_bot_scan_resultを呼び出します
情報
外部TVシグナルはファーストクラスシグナルとして扱われます。シグナルキーが
外部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でテスト済み
- 通知と取引が正常に作成された