دليل تكامل TradingView مع MagicTradeBot (إعداد كامل باستخدام NATS وWebhooks)

١. نظرة عامة

يمكن لـ MagicTradeBot استقبال إشارات التداول مباشرة من مؤشرات TradingView والاستراتيجيات وتنبيهات Pine Script. بمجرد وصول الإشارة، تمر عبر نفس محرك التنفيذ المستخدم للإشارات الداخلية للبوت — حيث يعمل كل من وضع الأوامر و DCA والقرارات الذكية والإشعارات الواسعة بشكل متماثل.

تعمل ثلاثة مكونات معًا:

  • 🔗 tv-signal-bridge — خدمة Axum مستقلة تستقبل webhooks من TradingView، وتتحقق من السر، وتوحّد رمز السهم، وتنشر إلى NATS
  • 📡 NATS JetStream — وسيط رسائل خفيف يعمل في Docker وينقل الإشارات من الجسر إلى البوت مع تسليم مرة واحدة على الأقل
  • 🤖 مستمع إشارات MagicTradeBot — يشتري في NATS، ويزيل الإشارات المكررة، ويجري فحوصات بوابة الحماية، ثم يستدعي sync_bot_scan_result
معلومة
إشارات TV الخارجية هي إشارات من الدرجة الأولى. بمجرد تسجيل مفتاح الإشارة في signal_registry.yaml، يعاملها البوت تمامًا مثل TOP_GAINER_LONG_SIGNAL أو أي إشارة داخلية أخرى.

٢. تنسيق مفتاح الإشارة

كل إشارة 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

٣. المتطلبات الأساسية

  • تثبيت وتشغيل MagicTradeBot
  • بناء ملف tv-signal-bridge الثنائي وتوفره
  • تثبيت وتشغيل Docker Desktop (لـ NATS)
  • خطة TradingView مدفوعة — Essential أو أعلى
  • عنوان URL عام أو IP حتى يتمكن TradingView من الوصول إلى الجسر

٤. الإعداد

٤.١ تشغيل NATS عبر Docker

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

٤.٢ تكوين 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"

٤.٣ تشغيل tv-signal-bridge

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

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

٤.٤ تسجيل مفاتيح الإشارة في signal_registry.yaml

register_trading_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

register_broadcast_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

٤.٥ تمكين إشارات TV في MagicTradeBot

قم بتحرير settings/tradingview.yaml:

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

٥. إعداد تنبيه TradingView

عنوان URL للويب هوك:

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

الرسالة (JSON):

{
  "secret":     "سرك-الطويل-هنا",
  "symbol":     "{{ticker}}",
  "side":       "long",
  "strategy":   "EMA_CROSS",
  "confidence": 80.0,
  "timestamp":  {{timenow}}
}

٦. الاختبار بدون 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"

٧. التحقق من السلسلة الكاملة

تحقق من سجلات الجسر ← سجلات البوت ← إشعار Discord/Telegram ← سجل الصفقة في قاعدة البيانات.

٨. مرجع التكوين

٩. استكشاف الأخطاء وإصلاحها

العرض الإصلاح
الجسر يُرجع 401 INVALID_SECRET السر غير متطابق — انسخه تمامًا كما هو
الإشارة تصل إلى الجسر ولكن ليس إلى البوت تحقق من enabled: true وأعد تشغيل البوت
'bot_name mismatch' يجب أن يكون bot_name متطابقًا في كلا ملفي التكوين

١٠. قائمة مرجعية سريعة

  • Docker Desktop قيد التشغيل
  • تم تشغيل حاوية NATS مع -js
  • الجسر يعمل على المنفذ 8090
  • تسجيل مفاتيح الإشارة في signal_registry.yaml
  • تفعيل tradingview.yaml مع bot_name مطابق
  • الاختبار باستخدام curl / PowerShell
  • تم إنشاء الإشعار والصفقة بنجاح

📎 Related Topics