الوثائق · Webhook

حمولة webhook من TradingView

الحقول الدقيقة التي يقرأها WebhookIngress عند وصول تنبيه TradingView إلى TheConnector.

فيديو يوتيوب (نطاق بلا ملفات تعريف ارتباط)، يُحمَّل فقط عند الضغط على تشغيل.
شرح بلا صوت — كل شيء مكتوب على الشاشة.

الهدف

توثق هذه الصفحة عقد WebhookIngress العام لتنبيهات TradingView. هذا ليس payload أوامر dashboard اليدوية.

مسار الوصول

  • في مساحة العميل: حساباتي > افتح حساب تداول > انسخ مفتاح الوصول.
  • في TradingView: Alert > Notifications > الصق https://webhook.theconnector.fr/YOUR_ACCESS_KEY في Webhook URL.
  • في حقل Message داخل TradingView، الصق الرسالة: بصيغة JSON أو في سطر واحد، كما تفضّل.
لقطة إعدادات الحساب
افتح تفاصيل الحساب وانسخ رمز الحساب أو مفتاح الوصول من لوحة التحكم الحقيقية.

صيغتان والنتيجة واحدة

يقرأ WebhookIngress صيغتين للرسالة ويعاملهما بالطريقة نفسها تمامًا: كائن JSON، أو سطر نصي واحد. استخدم الصيغة التي تفضّلها. في السطر الواحد يأتي الإجراء والرمز أولًا، ثم بقية الحقول بصيغة name=value مفصولة بفواصل.

JSON بسيط

json
{
  "action": "buy",
  "symbol": "EURUSD",
  "risk": 1,
  "sl": 0.2,
  "tp": 0.4,
  "priceMode": "percent"
}

يحدد priceMode وحدة sl وtp وprice داخل التنبيه نفسه: price أو pips أو percent. هنا يكون الوقف على بُعد 0.2% من سعر الدخول والهدف على بُعد 0.4%، أياً كان وضع السعر في الحساب؛ ومن دون priceMode يُطبَّق وضع السعر في الحساب.

الحقول التي يقرأها WebhookIngress

  • action إلزامي. الأسماء البديلة، في JSON كما في السطر الواحد: side, type, command, msgtype. type اسم بديل لحقل الأمر، لا نوع للأمر المعلق: buy مع type=limit أمران مختلفان، فيُرفض التنبيه — للأمر المعلق أمره الخاص، buylimit أو selllimit أو buystop أو sellstop، مع سعر الدخول في price.
  • symbol إلزامي لأوامر التداول. الأسماء البديلة: pair, ticker, instrument, market, asset.
  • risk يرسل كقيمة مخاطرة رقمية. للحجم الثابت استخدم volume, lot, lots, fixedVolume أو size.
  • sl وtp هما الاسمان الحاليان لوقف الخسارة وجني الربح. الأسماء البديلة: stoploss, stop_loss, takeprofit, take_profit.
  • price يستخدم فقط للأوامر المعلقة: buystop, buylimit, sellstop, selllimit.
  • expiration (الاسم البديل expiry) يحدد مدة صلاحية الأمر المعلق بالدقائق: يحذفه الوسيط إذا لم يُفعَّل قبلها، حتى والروبوت متوقف. مثال: "expiration": 60. يُتجاهل في أوامر السوق. يتطلب الروبوت 0.0.30 أو أحدث: مع روبوت أقدم يُرفض التنبيه بدلًا من ترك الأمر معلقًا إلى أجل غير مسمى. إذا لم يقبل الوسيط مدة صلاحية على هذا الرمز، يُرفض الأمر ولا يوضع أبدًا من دونها.
  • يحدد priceMode وحدة sl وtp وprice لهذا التنبيه: price أو pips أو percent. ومن دونه يُطبَّق وضع السعر في الحساب.
  • ticket, orderId, order_id, positionId أو position_id تستخدم فقط عند استهداف أمر أو مركز معروف.
  • account / accountCode وplatform اختيارية مع رابط الحساب؛ تفيد فقط في مسارات routing مشتركة.
  • يمكن إرسال streamId أو id للتتبع. يحتفظ به الخادم في معرّفه الخاص مسبوقاً بـ TV- (17 حرفاً على الأكثر، مع تحويل الشرطات إلى _)، متبوعاً بـ _ و8 أحرف. لذلك فإن تنبيهين أُرسلا بالمعرّف نفسه هما تنبيهان مستقلان: لا يُعامل الثاني أبداً كتكرار. إذا غاب، ينشئ الخادم معرّفاً.
  • tag (الاسم البديل comment) يسمّي الاستراتيجية التي ينتمي إليها التنبيه. عند الدخول يُكتب في تعليق المركز لدى الوسيط؛ وعند الإغلاق يحصر الإغلاق في المراكز التي تحمل ذلك الاسم، فيمكن لعدة استراتيجيات مشاركة حساب واحد ورمز واحد. يُحوَّل إلى أحرف صغيرة ويُقتطع إلى 12 حرفاً، ويُطبَّق ابتداءً من الروبوت 0.0.21 — ودون ذلك يُرفض الإغلاق المُسمّى بدل تنفيذه على مركز استراتيجية أخرى. وإذا أرسلت streamId خاصاً بك فإنه يحلّ محل المُولَّد ولا يصل الاسم إلى تعليق المركز أبداً: احذف streamId عند استخدام الأسماء.
  • يمكن إرسال clientRequestedAtUtc, requestedAtUtc أو requestedAt كوقت UTC للمعلومة.

الرسالة نفسها في سطر واحد

الأمر نفسه الوارد أعلاه، مكتوبًا في سطر واحد:

text
buy,EURUSD,risk=1,sl=0.2,tp=0.4,priceMode=percent

ما لا ينبغي إرساله

لا تعتمد على ttl_ms: parser الحالي في WebhookIngress لا يقرؤه. يُقرأ vol_lots على أنه volume. يحتفظ كل سعر بالوحدة التي كُتب بها: تحدد اللاحقة وحدة تلك القيمة وحدها (sl_pips وsl_price وsl_pct وtp_pips وtp_price وtp_pct، وentry_pips وentry_price وentry_pct لسعر دخول الأمر المعلق)؛ أما sl وtp وprice بلا لاحقة فتأخذ priceMode (أو unit) المكتوب في التنبيه، وإلا فوضع السعر في الحساب. يطبّق الروبوت وحدة واحدة على الأمر كله، لذا يُرفض التنبيه الذي تحتاج أسعاره إلى وحدتين، ولا يُرسل أبدًا دون وقف الخسارة أو جني الربح: sl_pips مع tp_price، أو sl بلا لاحقة بجانب tp_pips (حتى على حساب مضبوط على النقاط؛ أضف priceMode=pips). ضع لاحقة على كل الأسعار، أو لا تضعها على أي منها. ويُرفض أيضًا التنبيه الذي يكتب الحقل نفسه مرتين بقيمتين مختلفتين (sl=10 ثم sl=20، أو "type":"sell" مع "action":"buy")؛ والقيمة نفسها مكتوبة مرتين تُحسب مرة واحدة.

تنبيهات مكتوبة لـ WebhookTrade

يُقرأ التنبيه المكتوب بصيغة WebhookTrade كما هو بالنسبة إلى symbol وaction (buy_limit، sell_stop…) وprice وstop_loss وtake_profit وsize (لوتات) وexpiration (دقائق)؛ يسمّي comment الاستراتيجية مثل tag؛ أما username وapi_key وbroker وaccount_type فتُتجاهل. من أوامر الإغلاق لديها يُقرأ close_all على أنه closeall؛ وبدل close_buy وclose_sell وclose_pending أرسل closelong وcloseshort أو cancellong وcancelshort. معاملاتها الأخرى للوقف والهدف والحجم والوقف المتحرك ونقطة التعادل — sl_percentage وtp_percentage وsl_distance وtp_distance وsl_distance_price وtp_distance_price وstop_amount وprofit_amount وsize_percentage وrisk_percentage وsize_multiplier وts_… وbreakeven_… — تؤدي إلى رفض التنبيه برسالة تسمّيها: لو نُفّذ دونها لخرج الأمر بلا وقفه أو بحجم آخر. اكتبها باستخدام sl / tp مع priceMode، وvolume أو risk، وbetrigger / trailtrig / traildist.

لديك تنبيهات بالفعل؟ احتفظ بها

لا حاجة إلى إعادة كتابة تنبيهاتك. تعمل الرسالة المكتوبة في سطر واحد كما هي، حتى لو بدأت بمعرّف ترخيص: في كل تنبيه على TradingView، استبدل فقط رابط الـ webhook برابطك أنت، أي الرابط الذي ينتهي بمفتاح الوصول الخاص بك. عندها تُتجاهَل القيمة الموضوعة قبل الأمر، وتُترجم تلقائيًا أسماء المعاملات مثل sl_pips وtp_price وvol_lots. باستثناء حالة واحدة: التنبيه الذي يخلط وحدات السعر (sl_pips مع tp_price مثلًا) يُرفض الآن: اكتب كل الأسعار بالوحدة نفسها.

حالة خاصة بالوسيط؟ اتصل بالدعم