الفئة
المنصة
المستوى
مبتدئ
يُستخدم في
تشغيل MT5تقييم EAتصميم الاستراتيجية

الإكسبيرت أدفايزر

برنامج تداول آلي مكتوب بلغة MQL5 يعمل داخل MetaTrader 5 ويفتح الأوامر ويعدّلها ويغلقها وفق قواعد مبرمجة دون تدخل يدوي.

أيضاً: EA, Expert Advisor, روبوت التداول, بوت التداول

حُدّث

بعبارة بسيطة

برنامج يتداول نيابة عنك داخل MetaTrader. لا يملك حُكمًا ولا ذاكرة تتجاوز ما أعطيته إياه: يستيقظ حين تستدعيه المنصة، وينظر إلى الأشياء القليلة التي كُتب لينظر إليها، ثم يتصرف.

لماذا هو مهم

الاختبارات التاريخية وأرقام التراجع والأرقام السحرية وزمن تشغيل الـ VPS، كل ذلك موجود لأن من يرسل الأوامر برنامج لا إنسان. ومعرفة ما تسلّمه المنصة للإكسبيرت وما تحجبه عنه هي الفارق بين قراءة النتيجة قراءة صحيحة وبين أن تفاجئك.

  • ينفّذ دون تردد، وفي ذلك تكمن قيمته كلها ومخاطره كلها. ومجموعة القواعد التي لا تفوّت إشارة صحيحة أبدًا هي نفسها التي لا تلاحظ أبدًا أن اليوم مختلف.
  • يرى شريحة ضيقة: أسعار رمزه، وقيم المؤشرات التي يطلبها، ومراكز الحساب ورصيده. أما الأخبار وأسعار الوسطاء الآخرين وحساباتك الأخرى فتبقى خارج تلك النافذة ما لم يجلبها الكود.
  • يُوزَّع مترجَمًا. ملف .ex5 يعمل لكنه لا يُقرأ، لذا يجب أن تأتي ثقة المشتري من أدلة اختبار منشورة لا من الكود المصدري.
  • لا يعمل إلا ما دامت المنصة تعمل. الإكسبيرت على حاسوب محمول نائم هو إكسبيرت لا يتداول، وهذا وحده مبرر استخدام الـ VPS.

في MetaTrader 5

أين يظهر في MT5

  • المتصفح ← Expert Advisors: الإكسبيرتات المترجَمة التي تراها المنصة
  • ملف ← فتح مجلد البيانات ← MQL5/Experts: المكان الذي يجب أن يوجد فيه ملف .ex5 حتى يظهر
  • شريط الأدوات ← Algo Trading: المفتاح الرئيسي؛ الإكسبيرت الذي يظهر بوجه حزين على المخطط هو إكسبيرت يحجبه هذا الزر
  • المخطط ← خصائص الإكسبيرت (F7) ← Inputs / Common: المعاملات والأذونات لكل إكسبيرت
  • عرض ← مختبر الاستراتيجيات (Ctrl+R): الإكسبيرت نفسه مشغّلًا على بيانات تاريخية

كيف تستخدمه برامج EA

  • تستدعي المنصة الدالة OnInit() مرة واحدة عند الإرفاق، وOnTick() عند كل عرض سعر وارد لرمز المخطط، وOnDeinit() عند الإزالة.
  • يجري العمل عادةً على الشموع المغلقة لا على كل تيك: يقارن الإكسبيرت وقت فتح الشمعة الحالية بالوقت الذي خزّنه، ويعود فورًا إذا لم يتشكّل شيء جديد.
  • تخرج الأوامر على هيئة بنية MqlTradeRequest معبّأة، أو عبر الغلاف CTrade الذي يعبّئ معظمها نيابة عنك.
  • تضع كل نسخة رقمًا سحريًا على أوامرها لتدير مراكزها وحدها؛ وبدونه يتنازع إكسبيرتان على التذاكر نفسها.

الإعدادات المعتادة

الإعداد القيمة المعتادة ملاحظة
Algo Trading (المنصة) مفعّل يكون مغلقًا بعد التثبيت. ولا يتداول شيء قبل تفعيله.
السماح بـ Algo Trading (لكل إكسبيرت، F7 ← Common) مفعّل إذن منفصل عن المفتاح العام للمنصة.
السماح بـ WebRequest للعنوان المُدرَج مغلق ما لم يحتجه الإكسبيرت لا يحتاجه إلا الإكسبيرت الذي يجلب بيانات خارجية؛ امنحه لكل عنوان على حدة لا دفعة واحدة.
الإطار الزمني للمخطط الإطار الزمني الذي صُمّم له الإكسبيرت استراتيجية M15 على مخطط H1 استراتيجية أخرى؛ فـ OnTick تعمل مع كل تيك، لكن منطق الشموع يقرأ فترة المخطط.
MagicNumber فريد لكل نسخة قيد التشغيل ليس لكل منتج: مخططان يشغّلان الإكسبيرت نفسه يحتاجان قيمتين.

مشكلات تشغيلية شائعة

  • المنصة مغلقة أو نائمة أو تعيد التشغيل من أجل تحديث، فلا يعمل الإكسبيرت ببساطة، ولا يُسجَّل أي خطأ.
  • اختلاف اسم الرمز بين الوسيط والإعدادات (EURUSD مقابل EURUSD.m) يترك الإكسبيرت مرفقًا وصامتًا.
  • عدم كفاية الهامش الحر: تفشل OrderSend في كل محاولة ويستمر الإكسبيرت في المحاولة، فيمتلئ السجل بينما لا يفعل الحساب شيئًا.
  • انشغال سياق التداول حين ترسل عدة إكسبيرتات في اللحظة نفسها: إخفاقات متقطعة يصعب تكرارها.
  • اختُبر الإكسبيرت لدى وسيط بنموذج تنفيذ أو حجم عقد مختلف، فيسلك سلوكًا آخر على الحقيقي دون أي تغيير في الكود.

دوال MT5 ذات الصلة

OnInit() / OnDeinit()
تُستدعى مرة عند الإرفاق ومرة عند الإزالة، وفيهما يجري التحقق من المدخلات وإنشاء المقابض.
OnTick()
تُستدعى عند كل عرض سعر وارد لرمز المخطط؛ وهي نقطة الدخول الرئيسية.
OnTimer()
تُستدعى على فترة ثابتة يحددها EventSetTimer()، للعمل الذي لا ينبغي أن يعتمد على وصول التيكات.
OrderSend(request, result)
الاستدعاء الوحيد الذي يرسل كل عملية تداول؛ وبنية الطلب هي التي تحدد نوعها.
CTrade (Trade/Trade.mqh)
غلاف المكتبة القياسية الذي تستخدمه معظم الإكسبيرتات بدل تعبئة MqlTradeRequest يدويًا.

مثال

كل إكسبيرت تقريبًا، مختزلًا إلى الترتيب الذي تستدعيه به المنصة. لا شيء من هذا استراتيجية، بل هو الإطار الذي تجلس داخله الاستراتيجية.

1. OnInit()
مرة واحدة، عند الإرفاق
التحقق من المدخلات وإنشاء مقابض المؤشرات وضبط الرقم السحري.
2. OnTick()
عند كل عرض سعر
العودة فورًا ما لم تتشكّل شمعة جديدة، ثم تقييم القواعد.
3. OrderSend()
عند تحقق قاعدة
بنية MqlTradeRequest معبّأة واحدة لكل عملية: فتح أو تعديل أو إغلاق.
4. OnDeinit()
مرة واحدة، عند الإزالة
تحرير المقابض. ولا تُغلق المراكز المفتوحة بهذه الخطوة، بل تبقى كما هي.

إزالة الإكسبيرت من المخطط لا تغلق ما فتحه. تبقى المراكز قائمة، ولا شيء يديرها بعد ذلك.

الحساب if (iTime(_Symbol, PERIOD_CURRENT, 0) == lastBarTime) return;

النتيجة إكسبيرت يعمل على إغلاق الشمعة ويتجاهل آلاف التيكات بين قرار وآخر

كيف يُستخدم

الحكم على إكسبيرت لم تكتبه بنفسك مسألة أدلة: الملف المترجَم لا يخبرك بشيء. وفيما يلي ما ينبغي طلبه.

  • اسأل عن البيانات التي استُخدمت في الاختبار التاريخي وعن طريقة النمذجة. التيكات الحقيقية ورقم جودة النمذجة لهما معنى؛ أما منحنى رأس مال بلا بيانات فلا.
  • اسأل عن عدد الصفقات وعن الفترة. أغلق الإكسبيرت الوسيط المنشور هنا 362 صفقة على مدى سنوات عدة؛ أما أربعون صفقة في أربعة أشهر فحكاية عابرة.
  • تحقّق مما إذا كانت الاستراتيجية تُبقي الصفقات الخاسرة مفتوحة. التوسيط والتعافي الشبكي ينتجان منحنيات جميلة حتى تأتي السلة التي لا تتعافى، ولا تحذّرك أي نسبة محسوبة من الصفقات المغلقة.
  • شغّله على حساب تجريبي لدى وسيطك قبل أن تموّله. نموذج التنفيذ والسبريد وحجم العقد وتسمية الرموز تختلف كلها، وتغيّر النتائج كلها.
  • امنح كل نسخة رقمها السحري الخاص، وسجّل أيها أي قبل أن تشغّل أكثر من اثنتين.

كل إكسبيرت مدرج هنا ينشر فترة اختباره ومصدر بياناته وجودة نمذجته وسجل صفقاته الكامل، فتصبح هذه الأدلة قابلة للفحص بدل أن تُطلب.

أخطاء شائعة

التعامل مع الإكسبيرت كأنه متداول يملك حُكمًا

هو مجموعة قواعد تستدعيها المنصة عند كل تيك. لا يستطيع أن يلاحظ أن السوق تغيّر، ولا أن بنكًا مركزيًا سيتحدث بعد عشر دقائق، ولا أن نتائجه هو نفسه قد تدهورت، إلا إذا كتب أحدهم قاعدة لذلك بالتحديد.

افتراض أن نتيجة الاختبار التاريخي ستنتقل إلى حسابك

السبريد والعمولة ونموذج التنفيذ وحجم العقد ومجموعة الرموز كلها جزء من النتيجة. الاختبار لدى وسيط دليل عن ذلك الوسيط؛ أما التشغيل التجريبي لدى وسيطك أنت فهو أرخص وسيلة لمعرفة كم ينتقل منه.

إزالة الإكسبيرت لإيقافه والظن أن الصفقات توقفت أيضًا

فصل الإكسبيرت يترك مراكزه المفتوحة في مكانها. ولا شيء بعد ذلك يتعقّبها أو يغلقها؛ تبقى حتى تلامس وقف خسارة أو هدفًا أو إغلاقًا إجباريًا.

تشغيل عدة إكسبيرتات على حساب واحد دون فصلها

بدون أرقام سحرية متمايزة يعامل كل إكسبيرت أي مركز على أنه من إدارته، فيغلق كلٌّ منهم صفقات الآخر. والعطل صامت: لا خطأ يظهر، بل نتائج لا تطابق أي استراتيجية بمفردها.

بتفصيل أكبر

كيف يبدو سجل حقيقي لمستشار خبير

التعريف يصف الآلية، أما السجل فيصف التجربة. تنشر المستشارات الأربعة عشر المعروضة هنا قائمة الصفقات المغلقة كاملة — 9,702 صفقة منذ 2019.

عبر المستشارات الـ 14 المنشورةالقيمة
الصفقات المغلقة9,702
الصفقات لكل مستشار (الوسيط)362، من 108 إلى 4,725
عامل الربح (الوسيط)1.39، من 1.27 إلى 1.52
أسوأ سلسلة خسائر (الوسيط)6 صفقات، والأسوأ 14
أطول فترة دون قمة حقوق ملكية جديدة (الوسيط)423 أيام، والأسوأ 775
عمليات تشغيل حقيقية موثّقة0

هل المستشارون الخبراء مربحون يستعرض ذلك السجل مستشاراً مستشاراً، والمستشار مقابل التداول اليدوي يعيد تشغيل الصفقات نفسها وفق قواعد الإيقاف التي يطبّقها الإنسان فعلاً.

الأسئلة الشائعة

ما هو الإكسبيرت أدفايزر في MetaTrader 5؟
برنامج مكتوب بلغة MQL5 ومترجَم إلى ملف .ex5 يعمل داخل المنصة ويتداول وفق قواعده. تستدعيه المنصة عند كل عرض سعر وارد للمخطط المرفق به، فيفتح الأوامر ويعدّلها ويغلقها دون أن يجلس أحد أمام لوحة المفاتيح.
هل يجب أن أُبقي حاسوبي مشغّلًا كي يعمل الإكسبيرت؟
نعم؛ فالإكسبيرت يعمل داخل المنصة، ولذلك لا يتداول إلا ما دامت المنصة تعمل ومتصلة. ولهذا تعيش الإكسبيرتات غير المراقَبة عادةً على خادم VPS لا على حاسوب ينام أو يعيد التشغيل.
هل أستطيع قراءة الاستراتيجية داخل إكسبيرت اشتريته؟
ليس من ملف .ex5. الإكسبيرتات المترجَمة تعمل دون كشف منطقها، ولهذا السبب تحديدًا يسلّمها البائعون بهذه الصيغة. ويجب أن تُوصف الاستراتيجية بأمانة في صفحة المنتج وأن تُدعَم بأدلة اختبار منشورة.
هل يمكنني تشغيل أكثر من إكسبيرت على الحساب نفسه؟
نعم، وهذا شائع. تحتاج كل نسخة إلى رقمها السحري الخاص كي تدير المراكز التي فتحتها هي فقط، ويحتاج الحساب إلى هامش حر يكفيها كلها في الوقت نفسه؛ فالاستراتيجيات لا تعرف بعضها بعضًا.