دليل تكامل 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 الخارجية هي إشارات من الدرجة الأولى. بمجرد تسجيل مفتاح الإشارة في
إشارات 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
- تم إنشاء الإشعار والصفقة بنجاح