- كيفية كتابة المؤشرات والاستراتيجيات في TradingView وربطها بمنصة التداول؟
- الجزء الأول - البدء باستخدام لغة باين سكريبت (الإصدار 5)
- الجزء الثاني - بنية التنبيهات وخطافات الويب في TradingView
- الجزء 3 - إعداد خادم ويب لاستقبال التنبيهات وإرسال الأوامر إلى البورصة
- الجزء 4 - نشر الخادم الآمن (لينكس/دوكر/سيستم دي)
- القسم 5 - نصائح حول الأمن والاستقرار
- القسم 6 - الاختبار الرجعي، والتحسين، والاختبار الأمامي
- القسم 7 - مقارنة مواقع مراكز البيانات لأغراض التداول
- القسم 8 - تكوينات الخادم الموصى بها للتداول
- القسم 9 - نصائح عملية لتقليل المخاطر في أتمتة التداول
- خاتمة
- الأسئلة الشائعة
كيفية كتابة المؤشرات والاستراتيجيات في TradingView وربطها بمنصة التداول؟
يشرح هذا الدليل الشامل والعملي خطوة بخطوة كيفية كتابة المؤشرات والاستراتيجيات باستخدام لغة باين سكريبت الإصدار 5، وإنشاء تنبيهات الويب هوك في منصة TradingView، وإعداد خادم ويب هوك آمن باستخدام Flask وccxt، بالإضافة إلى نصائح فنية وأمنية واختيار الموقع لتقليل زمن الاستجابة. هذه المقالة مناسبة للمتداولين والمطورين وفرق العمليات.
الجزء الأول - البدء باستخدام لغة باين سكريبت (الإصدار 5)
يحتوي الإصدار الخامس من لغة باين سكريبت على ميزات جديدة ووظائف متقدمة. للبدء:
- اختر الإصدار: من
//@version=5يستخدم. - نوعان رئيسيان: مؤشر (لعرضها على الرسم البياني وتوليد الإشارات) و استراتيجية (لإجراء الاختبارات السابقة وتنفيذ الأوامر الافتراضية).
- متغيرات الإدخال: من الوظيفة
مدخليُستخدم للمعلمات التي يمكن للمستخدم تعديلها. - إنذار: من
حالة تنبيهاستخدمه لتحديد شروط الإنذار القابلة للاستخدام في TradingView.
مثال بسيط للمؤشر (تقاطع المتوسط المتحرك الأسي + مرشح مؤشر القوة النسبية)
//@version=5
indicator("EMA Crossover + RSI Filter", overlay=true)
// Inputs
shortLen = input.int(9, "EMA Short Length")
longLen = input.int(21, "EMA Long Length")
rsiLen = input.int(14, "RSI Length")
rsiThresh = input.int(50, "RSI Threshold")
// Price
price = close
// Indicators
emaShort = ta.ema(price, shortLen)
emaLong = ta.ema(price, longLen)
rsi = ta.rsi(price, rsiLen)
// Signals
bull = ta.crossover(emaShort, emaLong) and rsi > rsiThresh
bear = ta.crossunder(emaShort, emaLong) and rsi < rsiThresh
plot(emaShort, color=color.blue)
plot(emaLong, color=color.orange)
plotshape(bull, title="Long", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
plotshape(bear, title="Short", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")
// Alerts
alertcondition(bull, title="Long Alert", message="LONG_SIGNAL")
alertcondition(bear, title="Short Alert", message="SHORT_SIGNAL")نصائح عملية: يجب أن تكون رسالة الإنذار بتنسيق JSON أو ببنية محددة حتى يتمكن خادم الويب من تحليلها بسهولة؛ على سبيل المثال: {"signalLONGsymbolBTCUSDTtimeframe1m"}.
مثال بسيط لاستراتيجية مع إدارة المخاطر
//@version=5
strategy("EMA Crossover Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)
// inputs ...
// (same indicators as above)
shortLen = input.int(9, "EMA Short Length")
longLen = input.int(21, "EMA Long Length")
rsiLen = input.int(14, "RSI Length")
rsiThresh = input.int(50, "RSI Threshold")
price = close
emaShort = ta.ema(price, shortLen)
emaLong = ta.ema(price, longLen)
rsi = ta.rsi(price, rsiLen)
bull = ta.crossover(emaShort, emaLong) and rsi > rsiThresh
bear = ta.crossunder(emaShort, emaLong) and rsi < rsiThresh
if bull
strategy.entry("Long", strategy.long)
if bear
strategy.entry("Short", strategy.short)
// Example Stop Loss / Take Profit
strategy.exit("Exit Long", from_entry="Long", loss=100, profit=200)
strategy.exit("Exit Short", from_entry="Short", loss=100, profit=200)توضيح: للحصول على اختبار رجعي أكثر دقة من استراتيجية الاستخدام والمعايير وقف الخسارة و جني الأرباح وقم بضبط حجم الموضع.
الجزء الثاني - بنية التنبيهات وخطافات الويب في TradingView
بعد إضافة مؤشر أو استراتيجية إلى الرسم البياني، أنشئ تنبيهًا جديدًا من قائمة التنبيهات. في الإعدادات:
- نوع التنبيه: خيار رابط الويب هوك حدد عنوان الخادم الخاص بك وأدخله (على سبيل المثال: https://trade.example.com/webhook).
- رسالة: استخدم JSON القياسي؛ قم بتضمين الحقول
رمز،فعل،سعر،الإطار الزمني،uuidوالطابع الزمني.
مثال على رسالة تنبيه:
{"symbol":"BTCUSDT","action":"LONG","price":"${close}","timeframe":"1m","strategy":"EMA_CROSS_V1"}
الجزء 3 - إعداد خادم ويب لاستقبال التنبيهات وإرسال الأوامر إلى البورصة
التصميم المقترح:
- TradingView (تنبيه) → HTTPS Webhook (NGINX + Flask/Node) → بوت (منطق الأعمال) → واجهة برمجة تطبيقات البورصة (ccxt أو SDK)
تثبيت المتطلبات الأساسية (مثال لنظام أوبونتو)
sudo apt update
sudo apt install -y python3 python3-venv python3-pip
python3 -m venv venv
source venv/bin/activate
pip install flask ccxtنموذج تطبيق app.py باستخدام Flask و ccxt
from flask import Flask, request, jsonify
import ccxt, os, hmac, hashlib, time
app = Flask(__name__)
API_KEY = os.getenv("EXCHANGE_API_KEY")
API_SECRET = os.getenv("EXCHANGE_API_SECRET")
exchange = ccxt.binance({
'apiKey': API_KEY,
'secret': API_SECRET,
'enableRateLimit': True,
})
@app.route('/webhook', methods=['POST'])
def webhook():
data = request.json
# simple validation: check data presence (use HMAC in production)
if not data:
return jsonify({"error":"no data"}),400
symbol = data.get("symbol")
action = data.get("action")
qty = data.get("qty", 0.001)
try:
if action == "LONG":
order = exchange.create_market_buy_order(symbol, qty)
elif action == "SHORT":
order = exchange.create_market_sell_order(symbol, qty)
else:
return jsonify({"error":"unknown action"}),400
return jsonify(order)
except Exception as e:
return jsonify({"error":str(e)}),500
الجزء 4 - نشر الخادم الآمن (لينكس/دوكر/سيستم دي)
التوصية: استخدم Docker Compose مع nginx كوكيل عكسي و certbot لـ TLS.
مثال على ملف docker-compose.yml
version: '3.8'
services:
app:
build: .
restart: always
environment:
- EXCHANGE_API_KEY
- EXCHANGE_API_SECRET
nginx:
image: nginx:stable
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./certs:/etc/letsencrypt
ports:
- "80:80"
- "443:443"مثال على وحدة systemd لتشغيلها بدون Docker
[Unit]
Description=Trading Webhook Bot
After=network.target
[Service]
User=trade
WorkingDirectory=/home/trade/app
Environment=EXCHANGE_API_KEY=your_key_here
Environment=EXCHANGE_API_SECRET=your_secret_here
ExecStart=/home/trade/venv/bin/gunicorn -w 4 -b 127.0.0.1:5000 app:app
Restart=always
[Install]
WantedBy=multi-user.targetأمثلة على الأوامر الإدارية:
sudo systemctl daemon-reload
sudo systemctl enable --now tradebot.service
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
القسم 5 - نصائح حول الأمن والاستقرار
- تخزين مفتاح واجهة برمجة التطبيقات (API) بشكل آمن: من متغير البيئة، ملف مع
chmod 600أو استخدم مدير الأسرار. - TLS: استخدم شهادة صالحة (certbot + nginx) لبروتوكول HTTPS.
- تأكيد الرسالة: استخدم HMAC-SHA256 للتحقق من رسائل TradingView الواردة.
- القيود وإعادة المحاولة: قم بتطبيق خوارزميات تحديد معدل الطلبات وإعادة المحاولة/التراجع.
- المراقبة والتسجيل: استخدم Prometheus + Grafana أو ELK لمراقبة الصحة وأوقات الاستجابة.
- الحماية من الهجمات: استخدم Fail2Ban و iptables وخدمات مكافحة هجمات DDoS أو CDN لنقاط النهاية العامة.
القسم 6 - الاختبار الرجعي، والتحسين، والاختبار الأمامي
- اختبار الأداء السابق: من الدوال
استراتيجية.*استخدم برنامج Pine للتحليل التاريخي، ولكن كن على دراية بالقيود البارامترية لبرنامج Pine. - تحسين: اختبر المعلمات يدويًا أو باستخدام البرامج النصية الخارجية (على سبيل المثال، إنشاء مخططات متعددة بمعلمات مختلفة).
- اختبار أمامي: قم دائمًا بالاختبار على حساب تجريبي أو بحجم صغير على خادم افتراضي خاص منخفض زمن الاستجابة بعد إجراء الاختبارات السابقة.
- قياس الانزلاق والكمون: قم بتسجيل وتحليل وقت استلام إشعار الويب ووقت تنفيذ الطلب في البورصة.
القسم 7 - مقارنة مواقع مراكز البيانات لأغراض التداول
يُعدّ موقع مركز البيانات عاملاً حاسماً في نجاح استراتيجيات التردد العالي، إذ يُؤثر كل جزء من الثانية فيه تأثيراً بالغاً. لذا، ينبغي أن يستند اختيار الموقع إلى نقاط التبادل ومسارات بروتوكول بوابة الحدود (BGP).
- أوروبا (فرانكفورت، أمستردام): مناسب للبورصات الأوروبية وبعض صناديق السيولة.
- شرق الولايات المتحدة (نيويورك، نيوجيرسي): مناسب لمنصة Coinbase والأسواق ذات الصلة في نيويورك.
- آسيا (سنغافورة، طوكيو، هونغ كونغ): مناسب لأسواق Binance Asia و OKX والأسواق الآسيوية.
إذا كنت تتداول في الغالب على منصة Binance أو البورصات الآسيوية، فإن خادم VPS في سنغافورة أو طوكيو سيكون أكثر ملاءمة؛ أما بالنسبة للبورصات الأمريكية، فإن موقع نيويورك/نيوجيرسي سيكون أفضل.
القسم 8 - تكوينات الخادم الموصى بها للتداول
خادم افتراضي خاص للتداول (زمن استجابة منخفض)
- وحدة المعالجة المركزية: 2-4 وحدات معالجة مركزية افتراضية عالية التردد
- ذاكرة الوصول العشوائي (RAM): 4-8 جيجابايت
- التخزين: قرص SSD من نوع NVMe بسعة 50-100 جيجابايت
- الشبكة: زمن استجابة منخفض/1 جيجابت في الثانية، BGP/Anycast عند الحاجة
خادم الحوسبة الثقيلة/الاختبار الخلفي
- وحدة المعالجة المركزية: 8+ وحدات معالجة مركزية افتراضية
- ذاكرة الوصول العشوائي: 32+ جيجابايت
- التخزين: NVMe 1 تيرابايت
- وحدة معالجة الرسومات (GPU): إذا كانت هناك حاجة إلى التعلم الآلي/الذكاء الاصطناعي لمعالجة النماذج
بالإضافة إلى ذلك، استخدم ميزات الأمان مثل مكافحة هجمات DDoS والشبكات الخاصة وإدارة جدار الحماية لزيادة استقرار الخدمة وأمانها.
القسم 9 - نصائح عملية لتقليل المخاطر في أتمتة التداول
- وقف الخسارة والحد الأقصى للتعرض: حدد مبلغ وقف الخسارة ومبلغ التعرض الأقصى لكل طلب.
- حالة حساب واجهة برمجة التطبيقات: تحقق من القيود وحالة اعرف عميلك (KYC).
- قاطع الدائرة: أوقف تشغيل البوت إذا زادت الأخطاء أو زاد زمن الاستجابة بشكل ملحوظ.
- مراقبة الصحة: مراقبة وقت التشغيل، وزمن الاستجابة، وحالة التحميل، وتعيين تنبيهات لفريق الدعم.
خاتمة
غطى هذا الدليل الخطوات الرئيسية بدءًا من كتابة المؤشرات والاستراتيجيات في Pine Script (الإصدار 5)، وإنشاء تنبيهات webhook في TradingView، وإعداد خادم webhook آمن باستخدام Flask/ccxt، وصولاً إلى اعتبارات الأمان المهمة، واختيار موقع مركز البيانات، وتكوينات الخادم الموصى بها.
إذا كنت بحاجة إلى حلول للبنية التحتية بما في ذلك خوادم VPS منخفضة زمن الوصول، أو خوادم مضادة لهجمات DDoS، أو خدمات خادم الرسومات للمعالجة الثقيلة، فإن شركتنا توفر هذه المرافق من خلال أكثر من 85 موقعًا عالميًا ويمكنها إعداد وتحسين بنيتك التحتية.









