P
PipsGrowth
دليل شامل • التداول الآلي

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

أتقن التداول الآلي على MetaTrader 5 — من فهم ما هو الإكسبرت أدفايزر إلى بناء وتحسين ونشر روبوتات تداول مربحة باستخدام MQL5

ما هو الإكسبرت أدفايزر (EA)؟

الإكسبرت أدفايزر (Expert Advisor أو EA) هو برنامج تداول آلي يعمل داخل منصة MetaTrader 5. يقوم بتحليل السوق واتخاذ قرارات التداول وتنفيذ الصفقات تلقائياً بدون تدخل بشري — 24 ساعة في اليوم، 5 أيام في الأسبوع.

يتم كتابة الإكسبرت أدفايزر بلغة البرمجة MQL5 (MetaQuotes Language 5)، وهي لغة مصممة خصيصاً للتداول. لا تحتاج لأن تكون مبرمجاً محترفاً — يمكنك البدء بأمثلة بسيطة وبنائها تدريجياً. حتى المتداولون غير المبرمجين يمكنهم استخدام EAs جاهزة من سوق MetaTrader أو استئجار مبرمج.

🤖

تداول بدون عواطف

ينفذ الاستراتيجية كما هي بدون خوف أو طمع

24/5 بدون توقف

يراقب السوق ويتداول حتى وأنت نائم

تنفيذ فوري

يتفاعل مع إشارات السوق في أجزاء من الثانية

📊

قابل للاختبار

اختبر استراتيجيتك على سنوات من البيانات قبل المخاطرة بأموال حقيقية

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

يعمل الإكسبرت خلال دورة بسيطة تتكرر مع كل حركة سعرية (تيك) في السوق:

1

استقبال البيانات

يستقبل الأسعار والمؤشرات الفنية في الوقت الحقيقي من خادم الوسيط

2

تحليل السوق

يحلل الشروط بناءً على الاستراتيجية المبرمجة (مؤشرات، أنماط، فلاتر)

3

اتخاذ القرار

يقرر: شراء، بيع، أو انتظار. يحسب حجم المركز ونقاط الوقف/الهدف

4

تنفيذ الأمر

يرسل أمر التداول للوسيط ويدير الصفقة حتى الإغلاق

لماذا MT5 لتطوير الإكسبرت أدفايزر؟

MetaTrader 5 يتفوق على MT4 في تطوير الإكسبرت بعدة طرق:

الميزةMT4MT5
لغة البرمجةMQL4MQL5 (OOP)
سرعة الاختبارمتوسطة10× أسرع (متعدد الأنوية)
أنواع الأوامر46+ (شراء/بيع محدد وإيقاف محدد)
الأطر الزمنية921
التحوط✓ + Netting
مختبر الاستراتيجياتأساسيمتقدم (متعدد العملات، مرئي)

كيف تبدأ في 5 دقائق

1

حمّل MetaTrader 5

حمّل MT5 من وسيطك أو من metatrader5.com

2

افتح MetaEditor

اضغط F4 داخل MT5 لفتح بيئة البرمجة

3

أنشئ EA جديد

File → New → Expert Advisor واتبع المعالج

4

اختبر على حساب تجريبي

استخدم مختبر الاستراتيجيات (Ctrl+R) لاختبار الإكسبرت

مسار التعلم

ابدأ من المستوى المناسب لك وتقدم تدريجياً نحو بناء إكسبرت أدفايزر احترافي

مبتدئ

البداية مع إكسبرت أدفايزر MT5

تعلم أساسيات تطوير الإكسبرت أدفايزر على منصة MetaTrader 5.

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

30 min

بناء EA بسيط لتقاطع المتوسطات المتحركة من الصفر

أساسيات MQL5
دالة OnTick()
تنفيذ الأوامر
الاختبار

فهم هيكل MQL5

45 min

تعلم المكونات الأساسية وبناء جملة MQL5

المتغيرات
الدوال
معالجات الأحداث
الدوال المدمجة

العمل مع المؤشرات

40 min

كيفية دمج المؤشرات الفنية في الإكسبرت

iMA()
iRSI()
iMACD()
مؤشرات مخصصة
متوسط

تطوير إكسبرت متقدم

إتقان منطق التداول المعقد وإدارة المخاطر وتحليل الأطر الزمنية المتعددة.

أنظمة إدارة المخاطر

60 min

تنفيذ حجم مركز ديناميكي وإدارة وقف الخسارة

حجم المركز
وقف متحرك
منطق التعادل
حد التراجع

تحليل الأطر الزمنية المتعددة

50 min

بناء EAs تحلل أطر زمنية متعددة في وقت واحد

اختيار الإطار الزمني
تأكيد الاتجاه
منطق التصفية
المزامنة

إدارة الأوامر والتعديل

55 min

تقنيات متقدمة لإدارة المراكز المفتوحة والأوامر المعلقة

إغلاق جزئي
تعديل الأوامر
أنظمة الشبكة
التحوط
متقدم

تحسين الإكسبرت الاحترافي

تحسين الأداء واختبار الاستراتيجيات وإعداد الـ EA للتداول الحقيقي.

تحسين الاستراتيجية والاختبار الرجعي

75 min

استخدم مختبر الاستراتيجيات في MT5 لتحسين وفحص الإكسبرت

الخوارزميات الجينية
Walk-Forward
مونت كارلو
منع الإفراط

تحسين الأداء والسرعة

60 min

اجعل الإكسبرت أسرع وأكثر كفاءة

تحليل الكود
إدارة الذاكرة
معالجة التيك
تخزين المؤشرات

الإعداد للتداول الحقيقي

45 min

فحوصات أساسية قبل نشر الإكسبرت على حساب حقيقي

معالجة الانزلاق
أخطاء الاتصال
التسجيل
إيقاف الطوارئ

أمثلة كود MQL5

أمر شراء بسيط

تنفيذ أمر سوق أساسي

MQL5
//+------------------------------------------------------------------+
//| Execute Buy Order |
//+------------------------------------------------------------------+
void ExecuteBuyOrder()
{
double price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double sl = price - 100 * _Point; // 100 pips SL
double tp = price + 200 * _Point; // 200 pips TP
MqlTradeRequest request = {};
MqlTradeResult result = {};
request.action = TRADE_ACTION_DEAL;
request.symbol = _Symbol;
request.volume = 0.1;
request.type = ORDER_TYPE_BUY;
request.price = price;
request.sl = sl;
request.tp = tp;
request.deviation = 10;
request.magic = 123456;
request.comment = "MT5 EA Buy";
if(!OrderSend(request, result))
Print("OrderSend error: ", GetLastError());
}

تقاطع المتوسط المتحرك

اكتشاف إشارات تقاطع MA

MQL5
//+------------------------------------------------------------------+
//| Check for MA Crossover Signal |
//+------------------------------------------------------------------+
int CheckMACrossover()
{
double fast_ma[], slow_ma[];
ArraySetAsSeries(fast_ma, true);
ArraySetAsSeries(slow_ma, true);
// Get MA values
int fast_handle = iMA(_Symbol, _Period, 50, 0, MODE_SMA, PRICE_CLOSE);
int slow_handle = iMA(_Symbol, _Period, 200, 0, MODE_SMA, PRICE_CLOSE);
CopyBuffer(fast_handle, 0, 0, 3, fast_ma);
CopyBuffer(slow_handle, 0, 0, 3, slow_ma);
// Check for crossover
if(fast_ma[1] > slow_ma[1] && fast_ma[2] <= slow_ma[2])
return 1; // Bullish crossover
if(fast_ma[1] < slow_ma[1] && fast_ma[2] >= slow_ma[2])
return -1; // Bearish crossover
return 0; // No signal
}

تنفيذ وقف متحرك

وقف خسارة متحرك ديناميكي للمراكز المفتوحة

MQL5
//+------------------------------------------------------------------+
//| Trailing Stop Function |
//+------------------------------------------------------------------+
void TrailingStop(double trailPoints)
{
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
if(PositionSelectByTicket(PositionGetTicket(i)))
{
if(PositionGetString(POSITION_SYMBOL) != _Symbol) continue;
double currentSL = PositionGetDouble(POSITION_SL);
double currentPrice = PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY
? SymbolInfoDouble(_Symbol, SYMBOL_BID)
: SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double newSL = 0;
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
{
newSL = currentPrice - trailPoints * _Point;
if(newSL > currentSL && newSL < currentPrice)
{
ModifyPosition(PositionGetTicket(i), newSL, PositionGetDouble(POSITION_TP));
}
}
}
}
}

دالة إدارة المخاطر

حساب حجم المركز بناءً على نسبة المخاطرة

MQL5
//+------------------------------------------------------------------+
//| Calculate Position Size Based on Risk |
//+------------------------------------------------------------------+
double CalculatePositionSize(double riskPercent, double stopLossPips)
{
double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
double riskAmount = accountBalance * (riskPercent / 100.0);
double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT);
double pipValue = (tickValue / tickSize) * point * 10;
double positionSize = riskAmount / (stopLossPips * pipValue);
// Normalize to broker's lot step
double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
positionSize = MathFloor(positionSize / lotStep) * lotStep;
return positionSize;
}

أفضل الممارسات والنصائح

استخدم وقف الخسارة دائماً

لا تشغل EA بدون حماية وقف الخسارة. كل صفقة يجب أن تكون محددة المخاطرة مسبقاً.

اختبر بعناية

اختبر الإكسبرت على 10 سنوات على الأقل من البيانات في ظروف سوق مختلفة قبل التداول الحقيقي.

حسّن للظروف الحقيقية

ضمّن السبريد والعمولة والانزلاق في اختباراتك. استخدم بيانات تيك حقيقية.

ابدأ صغيراً

ابدأ بأصغر حجم لوت على حساب تجريبي. زد الحجم فقط بعد ربحية ثابتة.

راقب وسجّل كل شيء

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

اجعله بسيطاً

المعقد لا يعني الأفضل. الاستراتيجيات البسيطة والمتينة غالباً ما تتفوق على المعقدة.

أخطاء شائعة يجب تجنبها

الإفراط في التحسين (Overfitting)

الحل: لا تحسّن على نفس البيانات فقط. استخدم Walk-Forward لاختبار على بيانات لم يرها الإكسبرت.

تجاهل السبريد والعمولة

الحل: ضمّن تكاليف التداول الحقيقية. أداء رائع بسبريد 0 لا يعني شيئاً.

عدم التعامل مع أخطاء الاتصال

الحل: أضف معالجة الأخطاء لكل عملية شبكة. الاتصال يمكن أن ينقطع في أي وقت.

نشر EA بدون اختبار كافٍ

الحل: شهر واحد على الأقل على حساب تجريبي قبل التداول الحقيقي. لا استثناءات.

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

هل أحتاج لخبرة برمجة لاستخدام EA؟

لا بالضرورة. يمكنك استخدام EAs جاهزة من سوق MetaTrader أو استئجار مبرمج. لكن إذا أردت بناء EA خاص بك، ستحتاج لتعلم أساسيات MQL5 — والتي يمكن تعلمها في أسابيع.

هل يمكن للإكسبرت أن يربح دائماً؟

لا يوجد EA يربح 100% من الوقت. مثل أي استراتيجية تداول، هناك فترات ربح وخسارة. المفتاح هو إدارة المخاطر وتحقيق أرباح تفوق الخسائر على المدى الطويل.

هل يجب أن أراقب الإكسبرت باستمرار؟

على الأقل تحقق يومياً. رغم أن EA يعمل تلقائياً، الظروف غير المتوقعة (أخبار كبرى، انقطاع الإنترنت، أعطال الخادم) تتطلب تدخلاً بشرياً أحياناً.

ما الوسيط الأفضل لتشغيل EA؟

اختر وسيطاً يدعم MT5 ويقدم VPS مجاني وسبريد منخفض وتنفيذ سريع. الحسابات ECN/Raw Spread مفضلة للتداول الآلي بسبب التكاليف الأقل.

هل يمكنني تشغيل EA على VPS؟

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

هل أنت مستعد للبناء؟

حمّل MetaTrader 5، افتح MetaEditor، وابدأ بالأمثلة أعلاه. أفضل طريقة للتعلم هي بالممارسة. تذكر: التداول الآلي المربح يتطلب الوقت والصبر والتعلم المستمر.

دروس إكسبرت أدفايزر MT5 - دليل تطوير EA الشامل