بناء أول روبوت فوركس خاص بك باستخدام MQL5
تخيل أن استراتيجيتك في التداول تُنفذ على مدار 24 ساعة في اليوم، 5 أيام في الأسبوع، بدون عواطف أو إرهاق. يزيل هذا الدليل تعقيدات MQL5، ويقدم نهجًا عمليًا وتطبيقيًا لإنشاء أول روبوت تداول وظيفي وواعي بالمخاطر.
Kenji Watanabe
رئيس التحليل الفني

تخيل أن استراتيجيتك في التداول تُنفذ بشكل لا تشوبه شائبة، على مدار 24 ساعة في اليوم، 5 أيام في الأسبوع، بدون عواطف أو إرهاق أو الحاجة إلى مراقبة الشاشة باستمرار. هذا ليس حلمًا بعيد المنال للمبرمجين المتقدمين؛ إنها قوة التداول الآلي، المتاحة من خلال لغة MQL5 الخاصة بمنصة MetaTrader 5. بالنسبة للمتداولين المتوسطين الذين يتطلعون إلى الارتقاء بمستواهم، قد تبدو ترجمة استراتيجية يدوية إلى مستشار خبير (EA) أمرًا شاقًا. من أين تبدأون حتى في سد الفجوة بين فكرتكم في التداول والكود القابل للتنفيذ؟ يزيل هذا الدليل التعقيدات، ويقدم نهجًا عمليًا وتطبيقيًا لإنشاء أول روبوت تداول وظيفي وواعي بالمخاطر على MQL5. سنزيل الغموض عن بيئة MQL5، ونرشدكم عبر هياكل البرمجة الأساسية، ونمكنكم من أتمتة تداولاتكم بثقة، حتى لو لم تكتبوا سطرًا واحدًا من التعليمات البرمجية من قبل.
إتقان MQL5: أساس الروبوت الخاص بكم
قبل أن تتمكنوا من قيادة الروبوت الخاص بكم، تحتاجون إلى فهم لغته وبيئته. MQL5 (MetaQuotes Language 5) هي لغة البرمجة الأصلية لمنصة MetaTrader 5. إنها ما يتيح لكم ترجمة قواعد التداول الخاصة بكم إلى تعليمات يمكن للمنصة تنفيذها تلقائيًا. فكروا فيها على أنها العقل المدبر وراء قوة الروبوت الخاص بكم.
فهم المستشارين الخبراء (EAs)
المستشار الخبير، أو EA، هو مجرد اسم فاخر لروبوت تداول مكتوب بلغة MQL5. يتم إرفاقه برسم بياني معين في منصة MT5 الخاصة بكم ويعمل مع كل حركة سعرية (tick) واردة. هدفه الوحيد هو مراقبة السوق بناءً على القواعد المحددة مسبقًا وتنفيذ الصفقات نيابة عنكم - فتح وإدارة وإغلاق المراكز دون تدخل مباشر منكم.
التنقل في MetaEditor و MT5
مركز قيادة البرمجة الخاص بكم هو MetaEditor. يمكنكم فتحه مباشرة من منصة MT5 الخاصة بكم عن طريق النقر على أيقونة 'IDE' أو الضغط على F4. هذا هو المكان الذي ستكتبون فيه وتعدلون وتترجمون كود MQL5 الخاص بكم. عندما تقومون بترجمة الكود (بالنقر على زر 'Compile')، فإنه ينشئ ملفًا قابلاً للتنفيذ يمكن لـ MT5 فهمه وتشغيله. ستظهر المستشارين الخبراء (EAs) المترجمة في نافذة 'Navigator' في MT5 تحت قسم 'Expert Advisors'. من هناك، ما عليكم سوى سحبه وإفلاته على الرسم البياني لتفعيله.
دورة الحياة الأساسية: OnInit، OnTick، OnDeinit
كل مستشار خبير (EA) وظيفي مبني حول ثلاث دوال أحداث حاسمة. فهمها هو مفتاح بناء روبوت مستقر.
OnInit()- الإعداد: تعمل هذه الدالة مرة واحدة بالضبط عند تهيئة الـ EA لأول مرة (أي عند إفلاته على الرسم البياني). إنها مثالية لمهام الإعداد التي تتم مرة واحدة مثل تعيين المتغيرات الأولية، أو طباعة رسالة ترحيب، أو التحقق مما إذا كانت بيئة التداول جاهزة.OnTick()- الحلقة الرئيسية: هذا هو قلب الـ EA الخاص بكم. تعمل دالةOnTick()في كل مرة تصل فيها حركة سعرية (tick) جديدة للرمز الذي تم إرفاق الـ EA به. كل منطق التداول الأساسي الخاص بكم - التحقق من قيم المؤشرات، البحث عن شروط الدخول/الخروج، وإدارة الصفقات المفتوحة - يوضع هنا. هذا هو المكان الذي تنبض فيه استراتيجيتكم بالحياة حقًا.OnDeinit()- التنظيف: تعمل هذه الدالة مرة واحدة عند إزالة الـ EA من الرسم البياني أو إغلاق المنصة. تُستخدم لمهام التنظيف، مثل إزالة الكائنات الرسومية من الرسم البياني أو إرسال تحديث حالة نهائي.
الروبوت الخاص بكم لا يعمل باستمرار في حلقة محمومة؛ إنه مدفوع بالأحداث. ينتظر بصبر حركة سعرية جديدة، وينفذ المنطق في OnTick()، ثم ينتظر مرة أخرى. هذه الكفاءة هي ما يجعل التداول الآلي قويًا جدًا.
أتمتة الصفقات: فتح، تعديل، إغلاق

الآن نأتي إلى الجزء المثير: جعل الروبوت الخاص بكم يفعل شيئًا بالفعل. يستخدم MQL5 نظام طلبات منظم لإرسال أوامر التداول. تقومون بملء هيكل 'طلب' بجميع تفاصيل الصفقة ثم إرساله باستخدام أمر. دعونا نحلل ذلك.
إرسال أوامر جديدة باستخدام OrderSend
لفتح صفقة، ستستخدمون دالة OrderSend(). أولاً، تحتاجون إلى ملء هيكل MqlTradeRequest. قد يبدو الأمر معقدًا، لكنه مجرد قائمة تحقق من التفاصيل لأمركم.
إليكم المعلمات الأساسية التي ستحتاجون إلى ملئها:
action: نوع الإجراء (على سبيل المثال،TRADE_ACTION_DEALلأمر سوق).symbol: زوج العملات (على سبيل المثال،_Symbolلاستخدام رمز الرسم البياني).volume: حجم العقد (اللوت) (على سبيل المثال،0.10).type: نوع الأمر (على سبيل المثال،ORDER_TYPE_BUYأوORDER_TYPE_SELL).price: سعر الدخول. لأمر السوق، استخدمواSymbolInfoDouble(_Symbol, SYMBOL_ASK)لعمليات الشراء وSYMBOL_BIDلعمليات البيع.sl: سعر وقف الخسارة.tp: سعر جني الأرباح.magic: رقم فريد لتعريف صفقات الـ EA الخاص بكم. هذا أمر حاسم حتى لا يتداخل الروبوت الخاص بكم مع صفقاتكم اليدوية أو المستشارين الخبراء الآخرين!
مثال على مقتطف كود (لأمر شراء):
تعديل المراكز: OrderModify
هل تحتاجون إلى تتبع وقف الخسارة أو تغيير جني الأرباح؟ OrderModify() هي أداتكم. العملية مشابهة: تحددون المركز الذي تريدون تغييره (باستخدام رقم التذكرة الخاص به) ثم ترسلون طلبًا بقيم SL و/أو TP الجديدة.
الخروج من الصفقات: OrderClose
إغلاق الصفقة يكاد يكون مطابقًا لفتحها، لكنكم تحددون رقم تذكرة المركز وتستخدمون نوع أمر معاكس (ORDER_TYPE_SELL لإغلاق صفقة شراء، والعكس صحيح). طريقة أبسط هي تعيين حقل position في طلبكم إلى رقم تذكرة الصفقة التي تريدون إغلاقها. النظام ذكي بما يكفي لمعرفة الباقي.
نصيحة احترافية: تحققوا دائمًا من
result.retcodeبعد إرسال الأمر. يخبركم رمز الإرجاع هذا ما إذا كان الأمر ناجحًا. إذا لم يكن كذلك، يمكنكم طباعة رسالة الخطأ في سجلكم لتصحيح الخطأ. التعامل الأساسي مع الأخطاء هو سمة مميزة لـ EA قوي.
برمجة استراتيجيتكم: المؤشرات والشروط
المستشار الخبير (EA) بدون استراتيجية هو مجرد آلة لوضع الأوامر. الذكاء الحقيقي يأتي من ترجمة قواعد التحليل الفني الخاصة بكم إلى كود. يجعل MQL5 الوصول إلى البيانات من مئات المؤشرات المدمجة أمرًا سهلاً بشكل مدهش.

الوصول إلى المؤشرات المدمجة
معظم المؤشرات القياسية لها دالة مقابلة في MQL5، تبدأ عادةً بـ 'i'. على سبيل المثال:
iMA(): المتوسط المتحركiRSI(): مؤشر القوة النسبيةiMACD(): تقارب وتباعد المتوسطات المتحركةiStochastic(): مؤشر ستوكاستيك
تعيد هذه الدوال 'مقبضًا' (handle)، وهو مثل مؤشر لبيانات المؤشر. ثم تستخدمون دالة أخرى، CopyBuffer()، لنسخ قيم المؤشر (مثل خط MA أو قيمة RSI) لأشرطة معينة في مصفوفة يمكنكم العمل بها.
صياغة إشارات تداول بسيطة
بمجرد حصولكم على بيانات المؤشر، يمكنكم استخدام عبارات if بسيطة لتحديد إشارات التداول الخاصة بكم. على سبيل المثال، قد تكون استراتيجية RSI الأساسية:
- إشارة شراء:
if (rsi_value < 30) - إشارة بيع:
if (rsi_value > 70)
يمكن أن يؤدي الجمع بين المؤشرات إلى إنشاء إشارات أكثر قوة. على سبيل المثال، قد ترغبون في تعلم كيفية الجمع بين مؤشرات الفوركس بذكاء لتقليل ضوضاء السوق، وهي مهارة أساسية لأي متداول آلي.
بناء تقاطع المتوسطات المتحركة
استراتيجية كلاسيكية للأتمتة هي تقاطع المتوسط المتحرك (MA). المنطق بسيط: عندما يتقاطع متوسط متحرك سريع فوق متوسط متحرك بطيء، فهذه إشارة شراء. وعندما يتقاطع تحته، فهذه إشارة بيع. إليكم كيف يمكنكم برمجة هذا المنطق داخل دالة OnTick() الخاصة بكم.
مثال: منطق تقاطع المتوسطات المتحركة
في هذا الكود،
fastMA[1]هي قيمة المتوسط المتحرك السريع على الشريط السابق، وfastMA[0]هي قيمته على الشريط الحالي الأحدث. هذا يسمح لنا باكتشاف اللحظة الدقيقة التي يحدث فيها التقاطع.
المخاطر الذكية: الإدارة الأساسية للروبوت
يمكن تدمير استراتيجية مربحة بسبب سوء إدارة المخاطر. يجب أن يحتوي الـ EA الخاص بكم على قواعد صارمة لحماية رأس مالكم. لحسن الحظ، يمنحكم MQL5 جميع الأدوات التي تحتاجونها لبناء روبوت واعي بالمخاطر.
الترميز الثابت لوقف الخسارة وجني الأرباح
الشكل الأساسي لإدارة المخاطر هو تحديد وقف الخسارة (SL) وجني الأرباح (TP) في كل صفقة. كما رأينا في مثال OrderSend، يحتوي هيكل MqlTradeRequest على حقول محددة لـ sl و tp. لا ترسلوا أمرًا بدونهما أبدًا. هذا هو خط دفاعكم الأول والأهم ضد تحركات السوق غير المتوقعة.
![A diagram showing the logic for a Moving Average Crossover. On the left, a chart shows a fast MA crossing above a slow MA. On the right, a simple logic tree shows 'Is fastMA[1] < slowMA[1]?' and 'Is fastMA[0] > slowMA[0]?' leading to a 'BUY' signal.](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2F1tyytg47%2Fproduction%2Ffbc10e9c2a9c1570894c26d67da6c3c1fc9c4833-2400x1792.png%3Fw%3D800%26fm%3Dwebp%26q%3D80&w=3840&q=75)
تحديد حجم المركز الديناميكي
بدلاً من التداول بحجم عقد ثابت مثل 0.10 في كل صفقة، فإن النهج الأكثر ذكاءً هو حساب حجم مركزكم بناءً على نسبة مئوية ثابتة من رصيد حسابكم. هذا يعني أنكم تخاطرون بأقل عندما يكون حسابكم في تراجع وأكثر عندما ينمو.
إليكم صيغة بسيطة:
حجم العقد = (رصيد الحساب * النسبة المئوية للمخاطرة) / (وقف الخسارة بالنقاط * قيمة النقطة الواحدة)
مثال:
حجم العقد = (10000 * 0.01) / (500 * 1) = 100 / 500 = 0.20 لوت
يمكنكم برمجة هذا الحساب مباشرة في الـ EA الخاص بكم لجعل إدارة المخاطر ديناميكية وسريعة الاستجابة. في حين أن هذا نهج أساسي، توجد نماذج تحديد حجم أكثر تقدمًا، والتي يمكنكم استكشافها في مواضيع مثل مواجهة مارتينجال مقابل مارتينجال العكسي في تحديد حجم الصفقات.
تجنب مخاطر المخاطر الشائعة
إليكم بعض القواعد السريعة لبناء روبوت أكثر أمانًا:
- استخدام رقم سحري: قوموا دائمًا بتعيين رقم سحري فريد لصفقات الـ EA الخاص بكم. هذا يمنعه من إغلاق صفقة فتحتموها يدويًا عن طريق الخطأ.
- تحديد عدد الصفقات المفتوحة: قوموا ببرمجة فحص للتأكد من أن الـ EA لا يفتح أكثر من عدد محدد من الصفقات في وقت واحد (
PositionsTotal()). - التحقق من السبريد: قبل فتح صفقة، تحققوا مما إذا كان السبريد الحالي واسعًا جدًا. يمكن أن تقضي الفروقات السعرية المرتفعة على ربحية الاستراتيجية. يمكنكم الحصول على هذا باستخدام
SymbolInfoInteger(_Symbol, SYMBOL_SPREAD).
لمزيد من التفاصيل المتعمقة، يعد توثيق MQL5 الرسمي حول دوال التداول مصدرًا ممتازًا وموثوقًا.
التحقق من صحة الروبوت: الاختبار، التحسين، تصحيح الأخطاء
كتابة الكود ليست سوى نصف المعركة. لا يقوم المتداول المحترف أبدًا بتشغيل روبوت على حساب حقيقي دون اختبار صارم. مختبر الاستراتيجيات المدمج في MT5 هو مختبركم لهذه المرحلة الحاسمة.
الاختبار بأثر رجعي باستخدام مختبر الاستراتيجيات
يسمح لكم مختبر الاستراتيجيات (Ctrl+R) بتشغيل الـ EA الخاص بكم على بيانات الأسعار التاريخية لمعرفة كيف كان أداؤه. يمكنكم تحديد الرمز والإطار الزمني والنطاق الزمني لاختباركم. عند الانتهاء، ستحصلون على تقرير مفصل بمقاييس رئيسية:
- إجمالي صافي الربح: الربحية الإجمالية.
- عامل الربح: إجمالي الربح مقسومًا على إجمالي الخسارة. أي شيء فوق 1.5 يعتبر جيدًا بشكل عام.
- أقصى تراجع في رأس المال: أكبر انخفاض من القمة إلى القاع في رصيد الحساب. هذا مقياس حاسم للمخاطر.

- إجمالي الصفقات: عدد الصفقات التي تم إجراؤها.
يساعدكم تحليل هذه النتائج على فهم نقاط القوة والضعف في استراتيجيتكم. قد تظهر استراتيجية تبدو رائعة على الورق، مثل نهج تداول المراكز طويل الأجل، تراجعًا غير متوقع في الاختبار بأثر رجعي.
التحسين الأساسي للمعلمات
ماذا لو كان تقاطع المتوسطات المتحركة يعمل بشكل أفضل مع فترات 12 و 45 بدلاً من 10 و 50؟ يمكن لوضع 'التحسين' في مختبر الاستراتيجيات الإجابة على ذلك. سيقوم بتشغيل اختباركم بأثر رجعي مئات أو آلاف المرات، مجربًا مجموعات مختلفة من معلمات الإدخال الخاصة بكم (مثل FastMAPeriod و SlowMAPeriod) للعثور على الإعدادات الأكثر قوة.
تحذير: احذروا من 'الإفراط في التحسين'. العثور على المعلمات المثالية للبيانات السابقة لا يضمن النجاح في المستقبل. استخدموا التحسين للعثور على نطاقات مستقرة، وليس إعدادًا 'سحريًا' واحدًا.
استكشاف أخطاء كود MQL5 وإصلاحها
الأخطاء جزء طبيعي من التطوير. إليكم كيفية القضاء عليها:
- أخطاء الترجمة: سيقوم MetaEditor بتسليط الضوء على الأخطاء النحوية في الكود الخاص بكم حتى قبل ترجمته. ستخبركم علامة التبويب 'Errors' في الأسفل برقم السطر وما هو الخطأ.
- دالة
Print(): أفضل صديق لكم لتصحيح الأخطاء. انثروا عباراتPrint()في جميع أنحاء الكود الخاص بكم لإخراج قيم المتغيرات، أو التحقق مما إذا كان يتم استدعاء دالة، أو تأكيد أن منطقكم يتدفق بشكل صحيح. يظهر الإخراج في علامة التبويب 'Experts' في منصة MT5. - علامة التبويب 'Journal': تسجل MT5 جميع عمليات التداول والأخطاء في علامة التبويب 'Journal'. إذا فشل
OrderSend()الخاص بكم، فهذا هو أول مكان تبحثون فيه عن السبب.
من خلال الجمع بين الاختبار بأثر رجعي والتحسين وتصحيح الأخطاء الدقيق، يمكنكم بناء الثقة في الـ EA الخاص بكم قبل المخاطرة بدولار واحد.
الخلاصة: رحلتكم إلى الأتمتة تبدأ
لقد قمتم للتو بقفزة كبيرة، من استراتيجية تداول يدوية إلى مستشار خبير MQL5 ملموس وآلي. هذه الرحلة، من فهم بيئة MQL5 إلى تنفيذ إدارة مخاطر قوية وتصحيح الأخطاء، تزودكم بالمهارات الأساسية لتحويل أفكار التداول الخاصة بكم إلى حقيقة. لا تكمن قوة الأتمتة في كفاءتها فحسب، بل في قدرتها على إزالة العواطف من قرارات التداول الخاصة بكم، وتنفيذ استراتيجيتكم بانضباط لا يتزعزع. تذكروا أن بناء روبوت تداول هو عملية تكرارية من التعلم والاختبار والتحسين. المبادئ التي تعلمتموها هنا هي مجرد البداية. لتعميق فهمكم واستكشاف مفاهيم MQL5 أكثر تقدمًا، توفر FXNX ثروة من الموارد، من الدروس المتقدمة إلى منتديات المجتمع حيث يمكنكم مشاركة الأفكار والحصول على الدعم. ما هو الجانب من استراتيجية التداول الخاصة بكم الذي أنتم متحمسون لأتمتته بعد ذلك؟
هل أنتم مستعدون للبدء؟ قوموا بتنزيل MetaTrader 5، وافتحوا MetaEditor، وابدأوا في برمجة أول مستشار خبير MQL5 لكم اليوم باستخدام المبادئ التي تعلمتموها في هذا الدليل!
الأسئلة الشائعة
ما هو الفرق الرئيسي بين MQL4 و MQL5؟
MQL5 هي لغة برمجة أكثر تقدمًا وموجهة للكائنات مصممة لـ MetaTrader 5، وتوفر أداءً ومرونة أكبر. تشمل الاختلافات الرئيسية كيفية التعامل مع الأوامر (يستخدم MQL5 نظامًا قائمًا على المراكز، بينما يعتمد MQL4 على التذاكر) وسهولة الوصول إلى الميزات المتقدمة مثل التقويم الاقتصادي المدمج وعمق السوق الأكبر.
هل يمكنني تشغيل أكثر من مستشار خبير واحد على حساب MT5 الخاص بي؟
نعم، يمكنكم تشغيل عدة مستشارين خبراء في وقت واحد. يمكنكم إرفاق مستشارين خبراء مختلفين برسوم بيانية مختلفة، أو حتى عدة مستشارين خبراء على نفس الرسم البياني. من الضروري التأكد من أن كل مستشار خبير يستخدم 'رقمًا سحريًا' فريدًا في الكود الخاص به لمنعهم من التدخل في صفقات بعضهم البعض.
ما مقدار الخبرة في البرمجة التي أحتاجها لبناء روبوت فوركس MQL5؟
في حين أن الخبرة السابقة في البرمجة مفيدة، إلا أنها ليست ضرورية تمامًا. تتمتع MQL5 ببنية تشبه C++ يمكن تعلمها بالتفاني. يوفر هذا الدليل اللبنات الأساسية، ومع الكم الهائل من الموارد عبر الإنترنت ودعم المجتمع، يمكن للمتداول المصمم أن يتعلم برمجة مستشار خبير أساسي ووظيفي.
هل من الأفضل بناء روبوت فوركس خاص بي أم شراء واحد؟
يمنحكم بناء الروبوت الخاص بكم تحكمًا وفهمًا كاملين للاستراتيجية، وهي ميزة كبيرة. يمكن أن يكون شراء روبوت جاهز صندوقًا أسود بمخاطر خفية. بالنسبة للمتداولين الجادين في الأتمتة، يعد تعلم بناء المستشار الخبير الخاص بكم مهارة قيمة تسمح بالتخصيص والتكيف اللانهائي مع ظروف السوق المتغيرة.
عن الكاتب

Kenji Watanabe
رئيس التحليل الفنيKenji Watanabe is the Technical Analysis Lead at FXNX and a former researcher at the Bank of Japan. With a Master's degree in Economics from the University of Tokyo, Kenji brings 9 years of deep expertise in Japanese candlestick patterns, yen crosses, and Asian trading session dynamics. His meticulous approach to charting and pattern recognition has earned him a loyal readership among technical traders worldwide. Kenji writes with precision and clarity, turning centuries-old Japanese trading techniques into modern actionable strategies.
ترجمة بواسطة
نور حداد مترجمة مالية مبتدئة في FXNX. تحمل تخصصاً مزدوجاً في المالية والترجمة من الجامعة الأمريكية في بيروت، وتكمل حالياً فترة تدريبها في FXNX. تركّز نور على ضمان دقة المصطلحات المالية في الترجمات العربية، وهي ملتزمة بجعل تعليم الفوركس عالي الجودة متاحاً في جميع أنحاء منطقة الشرق الأوسط وشمال أفريقيا.