العودة إلى المدوّنة
Platform & Tools

بناء أول روبوت تداول خاص بك على MT5

KoraFX Research Team16 أبريل 202617 دقائق للقراءة
A sleek, modern graphic showing a trading chart on a monitor with lines of code overlaying it, symbolizing the creation of a trading bot. The FXNX logo is subtly present.

تخيلوا وجود شريك تداول لا ينام أبدًا، ولا يتأثر بالعواطف، وينفذ استراتيجيتكم بانضباط لا يتزعزع. بالنسبة للعديد من المتداولين المتوسطين، يبدو حلم التداول الآلي بعيد المنال، محاطًا بالرموز البرمجية المعقدة والمصطلحات المخيفة.

من المحتمل أنكم قضيتم ساعات لا تحصى في تحليل الرسوم البيانية، وتحديد الأنماط، وتنفيذ الصفقات يدويًا، لتفوتوا الفرص أو تستسلموا للقرارات العاطفية. ماذا لو كان بإمكانكم تحويل استراتيجية التداول التي أثبتم نجاحها إلى مستشار خبير (EA) يعمل من أجلكم على مدار 24 ساعة في اليوم، 5 أيام في الأسبوع؟

هذا الدليل لا يهدف إلى تحويلكم إلى مبرمجين محترفين بين عشية وضحاها؛ بل يهدف إلى إزالة الغموض عن عملية بناء أول روبوت تداول خاص بكم على MT5. سنرشدكم عبر الخطوات الأساسية، من فهم لغة MQL5 إلى تنفيذ المنطق الأساسي، وإجراء الاختبارات الخلفية، وحتى التعامل مع الأخطاء الشائعة. بحلول نهاية هذا الدليل، ستمتلكون المعرفة التأسيسية والثقة لتحويل أفكاركم في التداول إلى واقع آلي، مما يمنحكم مزيدًا من التحكم وربما نتائج أكثر اتساقًا.

ما الذي ستتعلمونه

إطلاق العنان للأتمتة: فهم المستشارين الخبراء (EAs) وإعداد MT5

قبل كتابة سطر واحد من التعليمات البرمجية، دعونا نحدد وجهتنا. يعتمد عالم التداول الآلي على مكونين رئيسيين في نظام MetaTrader البيئي: المستشارون الخبراء (EAs) ولغة MQL5.

ما هي المستشارون الخبراء ولماذا MQL5؟

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

  1. الانضباط: يزيل العواطف. الروبوت لا يصبح جشعًا أو خائفًا؛ إنه يتبع القواعد فقط.
  2. الكفاءة: يمكنه مراقبة العشرات من الأدوات المالية على مدار 24/5، ويتصرف بناءً على الإشارات فور ظهورها - أسرع من أي إنسان.

اللغة التي نستخدمها لكتابة هذه القواعد هي MQL5 (MetaQuotes Language 5). إنها لغة عالية المستوى ذات بنية شبيهة جدًا بلغة C++، وهي مصممة خصيصًا لتطوير روبوتات التداول والمؤشرات الفنية على MT5.

خطوتكم الأولى: استكشاف MetaEditor

مركز قيادة البرمجة الخاص بكم هو MetaEditor، والذي يأتي مدمجًا في MT5. دعونا نفتحه وننشئ مشروعكم الأول.

  1. في منصة MT5، انقروا على Tools > MetaQuotes Language Editor (أو اضغطوا على F4).
  2. سيتم فتح MetaEditor. في نافذة 'Navigator'، انقروا بزر الماوس الأيمن على 'Experts' واختاروا New.
  3. سيظهر 'MQL5 Wizard'. اختاروا Expert Advisor (template) وانقروا على Next.
  4. أعطوا الروبوت اسمًا، مثل MyFirstMACrossover، وانقروا على Next في الشاشات التالية، ثم Finish.

تهانينا! لقد أنشأتم للتو الهيكل الأساسي لمستشار خبير. سترون ملفًا ينتهي بـ .mq5 - هذا هو الكود المصدري الخاص بكم، الوصفة التي يمكن قراءتها من قبل الإنسان لروبوتكم. عندما تكونون مستعدين لاختباره، ستنقرون على 'Compile' (F7)، والذي ينشئ ملف .ex5. هذا هو الملف التنفيذي الذي يمكن لـ MT5 تشغيله بالفعل.

برمجة استراتيجيتكم: هيكل المستشار الخبير والمنطق البسيط

الآن نأتي إلى الجزء الممتع: إخبار الروبوت بما يجب عليه فعله. يمتلك روبوت التداول على MT5 بعض الوظائف الأساسية التي تعمل كدماغه وجهازه العصبي. فهم هذه الوظائف هو مفتاح إحياء استراتيجيتكم.

قلب الروبوت الخاص بكم: وظائف المستشار الخبير الأساسية

يحتوي كل قالب للمستشار الخبير على ثلاث وظائف حدث رئيسية:

  • OnInit(): تعمل هذه الوظيفة مرة واحدة عند إرفاق المستشار الخبير لأول مرة بالرسم البياني. إنها المكان المثالي لمهام الإعداد، مثل تهيئة المتغيرات أو طباعة رسالة ترحيب.
  • OnDeinit(): تعمل هذه الوظيفة مرة واحدة عند إزالة المستشار الخبير من الرسم البياني. تُستخدم لمهام التنظيف، مثل حذف الكائنات الرسومية.
  • OnTick(): هذه هي نجمة العرض. تعمل وظيفة OnTick() في كل مرة يصل فيها تِك سعر جديد للرمز الذي تتداولونه. كل منطقكم الأساسي - التحقق من إشارات الدخول، وإدارة الصفقات المفتوحة، والبحث عن شروط الخروج - يوضع هنا.

تنفيذ استراتيجية تقاطع المتوسطات المتحركة البسيطة

دعونا نبرمج استراتيجية بسيطة وكلاسيكية: تقاطع المتوسط المتحرك (MA). القاعدة بسيطة: عندما يتقاطع متوسط متحرك أسرع فوق متوسط متحرك أبطأ، نشتري. وعندما يتقاطع تحته، نبيع.

إليكم كيفية ترجمة هذا المنطق إلى MQL5 داخل وظيفة OnTick(). هذا مفهوم أساسي مشابه لما يُستخدم في العديد من استراتيجيات المضاربة بتقاطع المتوسط المتحرك الأسي.

// Include the standard library for trading
#include <Trade\Trade.mqh>
CTrade trade;

// --- Input parameters so you can change them easily
input int fast_ma_period = 10;
input int slow_ma_period = 50;

// This is the main function, running on every price tick
void OnTick()
{
    // Create arrays to hold the MA data
    double fast_ma_buffer[2];
    double slow_ma_buffer[2];

    // Define the moving averages
    int fast_ma_handle = iMA(_Symbol, _Period, fast_ma_period, 0, MODE_SMA, PRICE_CLOSE);
    int slow_ma_handle = iMA(_Symbol, _Period, slow_ma_period, 0, MODE_SMA, PRICE_CLOSE);

    // Copy the last 2 values of the MAs into our arrays
    CopyBuffer(fast_ma_handle, 0, 0, 2, fast_ma_buffer);
    CopyBuffer(slow_ma_handle, 0, 0, 2, slow_ma_buffer);

    // For readability, let's assign the values to variables
    // [0] is the current bar, [1] is the previous bar
    double fast_ma_current = fast_ma_buffer[0];
    double fast_ma_previous = fast_ma_buffer[1];
    double slow_ma_current = slow_ma_buffer[0];
    double slow_ma_previous = slow_ma_buffer[1];

    // --- TRADING LOGIC ---
    // Check for a bullish crossover (fast MA crossed above slow MA)
    if (fast_ma_previous < slow_ma_previous && fast_ma_current > slow_ma_current)
    {
        // Check if we have no open positions before buying
        if (PositionsTotal() == 0)
        {
            trade.Buy(0.1, _Symbol, 0, 0, 0, "My First EA Buy");
            Print("BUY SIGNAL! Fast MA crossed above Slow MA.");
        }
    }

    // Check for a bearish crossover (fast MA crossed below slow MA)
    if (fast_ma_previous > slow_ma_previous && fast_ma_current < slow_ma_current)
    {
        // Check if we have no open positions before selling
        if (PositionsTotal() == 0)
        {
            trade.Sell(0.1, _Symbol, 0, 0, 0, "My First EA Sell");
            Print("SELL SIGNAL! Fast MA crossed below Slow MA.");
        }
    }
}
نصيحة احترافية: التحقق من PositionsTotal() == 0 أمر بالغ الأهمية. بدونه، سيفتح الروبوت الخاص بكم صفقة جديدة في كل تِك سعر بعد حدوث التقاطع، مما يؤدي إلى تدمير حسابكم بسرعة. هذا السطر البسيط يضمن أنه يتصرف مرة واحدة فقط لكل إشارة.

التحقق من صحة الروبوت: الاختبار الخلفي والتحسين الذكي

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

وضع المستشار الخبير الخاص بكم قيد الاختبار: جهاز اختبار الاستراتيجيات

  1. في MT5، اذهبوا إلى View > Strategy Tester (أو اضغطوا على Ctrl+R).
  2. في علامة التبويب 'Settings'، اختاروا ملف .ex5 المترجم الخاص بكم.
  3. اختاروا الرمز (مثل EURUSD)، والإطار الزمني (مثل H1)، والنطاق الزمني الذي تريدون اختباره.
  4. للتشغيل الأول، استخدموا وضع 'Every tick' للحصول على أقصى دقة.
  5. انقروا على زر 'Start' الأخضر.

بمجرد الانتهاء، انقروا على علامة التبويب 'Backtest' لرؤية رسم بياني لمنحنى رأس المال الخاص بكم وتقرير بالمقاييس الرئيسية. ابحثوا عن:

  • إجمالي صافي الربح: النتيجة النهائية. هل هي إيجابية؟
  • عامل الربح: إجمالي الربح مقسومًا على إجمالي الخسارة. غالبًا ما تعتبر القيمة الأكبر من 1.5 جيدة.
  • أقصى تراجع: أكبر انخفاض في رأس المال من القمة إلى القاع. هذا مقياس للمخاطرة والألم.
  • إجمالي الصفقات: ما مدى نشاط الاستراتيجية؟

تفسير النتائج وتجنب الإفراط في التحسين

من المحتمل ألا يكون اختباركم الخلفي الأول مذهلاً. هذا طبيعي! الخطوة المنطقية التالية هي التحسين، حيث تسمحون لجهاز اختبار الاستراتيجيات بتشغيل المستشار الخبير مئات أو آلاف المرات بمعلمات إدخال مختلفة (مثل fast_ma_period و slow_ma_period) للعثور على التركيبة الأكثر ربحية.

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

تداول أكثر ذكاءً: دمج إدارة المخاطر وفحوصات الأخطاء القوية

الربحية هي نصف المعركة فقط؛ البقاء هو النصف الآخر. يجب أن يحتوي روبوت التداول الاحترافي على MT5 على إدارة للمخاطر ومعالجة للأخطاء مدمجة في حمضه النووي. دعونا نطور روبوت التقاطع البسيط الخاص بنا.

حماية رأس مالكم: إدارة المخاطر الأساسية

دعونا نضيف مدخلات لحجم العقد (lot)، ووقف الخسارة (stop loss)، وجني الأرباح (take profit). هذا يمنحكم التحكم دون الحاجة إلى تعديل الكود في كل مرة.

// --- Input parameters for Risk Management
input double lot_size = 0.1;
input int stop_loss_pips = 50;
input int take_profit_pips = 100;

الآن، نقوم بتعديل استدعاء trade.Buy(). نحتاج إلى حساب مستويات الأسعار الفعلية لوقف الخسارة وجني الأرباح.

// Inside the bullish crossover 'if' statement...

// Get the current Ask price for buying
double ask_price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
// Get the point value to calculate pips
double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT);

// Calculate SL and TP prices
double sl_price = ask_price - (stop_loss_pips * point);
double tp_price = ask_price + (take_profit_pips * point);

// Send the buy order with SL and TP
trade.Buy(lot_size, _Symbol, ask_price, sl_price, tp_price, "Buy with SL/TP");

هذه الإضافة البسيطة تحول روبوتكم من مجرد مولد إشارات إلى آلة تداول كاملة مع مخاطر محددة في كل صفقة.

بناء المرونة: معالجة الأخطاء الأساسية والتسجيل

ماذا يحدث إذا رفض الوسيط الصفقة؟ أو إذا لم يكن هناك مال كافٍ في الحساب؟ يجب أن يكون روبوتكم قادرًا على التعامل مع هذا بسلاسة. تعيد دالتا trade.Buy() و trade.Sell() نتيجة يمكننا التحقق منها.

// After sending the trade order
if (trade.ResultRetcode() != TRADE_RETCODE_DONE)
{
    Print("OrderSend failed! Error code: ", trade.ResultRetcode());
}
else
{
    Print("Order sent successfully! Ticket: ", trade.ResultTicket());
}

يتحقق هذا الكود مما إذا كانت الصفقة قد تم تنفيذها بنجاح. إذا لم يكن الأمر كذلك، فإنه يطبع رسالة خطأ في علامة التبويب 'Experts' في منصة MT5. هذه هي خطوتكم الأولى والأكثر أهمية في تصحيح الأخطاء. لمزيد من المعلومات التفصيلية حول وظائف التداول في MQL5، يعد توثيق مكتبة MQL5 القياسية الرسمي مصدرًا لا يقدر بثمن.

الصقل والتغلب على الصعاب: تصحيح أخطاء أول روبوت تداول لكم

لا يوجد مطور ينجح من المحاولة الأولى. تصحيح الأخطاء جزء طبيعي من العملية. أفضل صديقين لكم للعثور على المشاكل وإصلاحها في روبوت التداول الخاص بكم على MT5 هما وظيفة Print() ومنصة MT5 نفسها.

استكشاف أخطاء MQL5 الشائعة وإصلاحها

  • أخطاء الترجمة (Compilation Errors): تحدث هذه الأخطاء عند النقر على 'Compile' (F7) ويجد MetaEditor خطأ في بناء الجملة. عادةً ما يشير إلى السطر المحدد الذي يحتوي على الخطأ. تشمل المشكلات الشائعة الفواصل المنقوطة المفقودة ;، أو الأقواس غير المتطابقة ()، أو أسماء الوظائف المكتوبة بشكل خاطئ.
  • أخطاء وقت التشغيل (Runtime Errors): هذه أكثر تعقيدًا. يتم ترجمة الكود، لكنه لا يتصرف كما هو متوقع عند تشغيله. ربما لا يضع صفقات، أو يحسب القيم بشكل غير صحيح. هنا تصبح وظيفة Print() ضرورية.

الاستفادة من MT5 لتصحيح الأخطاء بفعالية

فكروا في Print() كطريقة لسؤال روبوتكم، "بماذا تفكر الآن؟" يمكنكم استخدامها لإخراج قيمة أي متغير في أي نقطة في الكود الخاص بكم.

مثال: إذا كنتم تشكون في أن قيم المتوسط المتحرك لديكم خاطئة، يمكنكم إضافة هذا السطر إلى وظيفة OnTick():
Print("Fast MA: ", fast_ma_current, ", Slow MA: ", slow_ma_current);

سيؤدي هذا إلى طباعة القيم الحية للمتوسطات المتحركة الخاصة بكم في علامة التبويب 'Experts' في منصة MT5 في كل مرة يصل فيها تِك سعر جديد. يمكنكم مشاهدة القيم ومعرفة ما إذا كانت تتطابق مع ما ترونه على الرسم البياني.

وظيفة أخرى مفيدة بشكل لا يصدق هي Comment(). إنها تطبع نصًا مباشرة في الزاوية العلوية اليسرى من الرسم البياني الخاص بكم.

Comment("Bot Status: Looking for crossover...\nFast MA: ", fast_ma_current);

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

  • علامة التبويب Experts: هذا هو سجل الروبوت الخاص بكم. تظهر هنا جميع رسائل Print()، وتأكيدات تنفيذ الصفقات، والأخطاء.
  • علامة التبويب Journal: تعرض هذه العلامة أحداثًا على مستوى المنصة، مثل فقدان الاتصال بالوسيط، أو محاولات تسجيل الدخول الفاشلة، أو أخطاء المستشار الخبير الرئيسية. إذا كان الروبوت لا يفعل أي شيء على الإطلاق، تحققوا هنا أولاً.

رحلتكم إلى عالم الأتمتة تبدأ الآن

لقد قمتم للتو بقفزة كبيرة من التداول اليدوي إلى فهم أساسيات تطوير الاستراتيجيات الآلية. لقد أزلنا الغموض عن المستشارين الخبراء في MT5، وتصفحنا الهيكل الأساسي لـ MQL5، ونفذنا منطق تداول أساسي، واستكشفنا خطوات حاسمة مثل الاختبار الخلفي، وإدارة المخاطر، وتصحيح الأخطاء.

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

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

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

ما الفرق بين المستشار الخبير (Expert Advisor) والسكريبت (script) في MT5؟

السكريبت هو برنامج ينفذ إجراءً واحدًا أو سلسلة من الإجراءات مرة واحدة ثم يتوقف. أما المستشار الخبير (EA) فهو برنامج يعمل بشكل مستمر مع كل تِك سعر جديد، ويراقب السوق باستمرار ويدير الصفقات وفقًا لمنطقه الداخلي.

هل يمكنني بناء روبوت تداول على MT5 بدون برمجة؟

نعم، هناك أدوات خارجية تسمى 'EA Builder' تسمح لكم بإنشاء روبوتات باستخدام واجهة رسومية. ومع ذلك، فإن تعلم البرمجة بلغة MQL5، كما هو موضح في هذا الدليل، يمنحكم مرونة مطلقة، وتحكمًا كاملاً في استراتيجيتكم، وفهمًا أعمق بكثير لكيفية عمل الروبوت الخاص بكم.

هل لغة MQL5 صعبة التعلم للمبتدئين؟

تتمتع MQL5 ببنية مشابهة للغة البرمجة C++، والتي يمكن أن يكون لها منحنى تعلم. ومع ذلك، لا تحتاجون إلى أن تصبحوا مهندسي برمجيات لبناء روبوت تداول وظيفي على MT5. من خلال البدء باستراتيجيات بسيطة ومنطقية وتعلم وظائف التداول الأساسية، يمكن للمتداولين أن يصبحوا بارعين بسرعة نسبية.

كيف يمكنني تشغيل روبوت التداول الخاص بي على MT5 على مدار 24/7؟

لتشغيل مستشار خبير بشكل مستمر دون ترك جهاز الكمبيوتر الشخصي قيد التشغيل، تحتاجون إلى خادم افتراضي خاص (VPS). الـ VPS هو جهاز كمبيوتر بعيد يعمل دائمًا عبر الإنترنت، مما يضمن أن منصة MT5 والمستشارين الخبراء الخاصين بكم يعملون ومتصلون بالوسيط على مدار 24 ساعة في اليوم، من الاثنين إلى الجمعة.

انضم إلى مجتمع التداول

شارك الأفكار وتابع أفضل المتداولين واحصل على تحليل بالذكاء الاصطناعي — مجانًا.

التسجيل عبر Google

مستعد للارتقاء بتداولك؟

انضم إلى آلاف المتداولين الذين يتشاركون الأفكار ويتابعون الأسواق ويتعلمون معًا.

مشاركة: