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

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

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

أتمتة التحسين والذكاء الاصطناعي

أتمتة الاختبار والتحسين من سطر الأوامر، وتكامل الذكاء الاصطناعي مع MT5.

تحسين MT5 من سطر الأوامر

90 min

تشغيل الاختبارات الراجعة والتحسين من سطر الأوامر باستخدام ملفات ini

ملفات Config
Batch Scripts
تحسين متوازي
تحليل XML
اقرأ الدليل الكامل

أتمتة ملفات Batch المتقدمة

75 min

تشغيل مئات الاختبارات عبر إكسبرتات ورموز متعددة بسكربت واحد

مصفوفة اختبار
PowerShell
CI/CD
تحليل النتائج
اقرأ الدليل الكامل

تداول الفوركس بالذكاء الاصطناعي

120 min

بناء أنظمة تداول بالذكاء الاصطناعي باستخدام ONNX وPython وMCP Server

نماذج ONNX
Python ML
MCP Server
Claude AI
اقرأ الدليل الكامل

برمجة MT5 بالإحساس: تحسين بالذكاء الاصطناعي

90 min

استخدم IDE الذكي لكتابة وتجميع واختبار وتحسين الإكسبرتات من اللغة الطبيعية

Windsurf
Cursor
Claude MCP
Vibe Coding
اقرأ الدليل الكامل

أمثلة كود 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;
}

تحسين MT5 من سطر الأوامر

ملف ini لتشغيل التحسين من سطر الأوامر

MQL5
; MT5 Optimization Config (optimize.ini)
[Tester]
Expert=MyEAs\TrendFollower
ExpertParameters=trend_follower.set
Symbol=EURUSD
Period=H1
Deposit=10000
Currency=USD
Leverage=1:100
Model=4
Optimization=2
OptimizationCriterion=5
FromDate=2023.01.01
ToDate=2025.01.01
ForwardMode=2
Report=optimization_report
ReplaceReport=1
ShutdownTerminal=1
UseLocal=1
Visual=0
Port=2000
; Run: terminal64.exe /config:optimize.ini

استنتاج ONNX في MQL5

تحميل وتشغيل نموذج ذكاء اصطناعي داخل الإكسبرت

MQL5
//+------------------------------------------------------------------+
//| ONNX Model Inference in EA |
//+------------------------------------------------------------------+
long onnx_handle;
int OnInit()
{
onnx_handle = OnnxCreate("Files\price_model.onnx", ONNX_DEFAULT);
if(onnx_handle == INVALID_HANDLE)
{
Print("ONNX load failed: ", GetLastError());
return INIT_FAILED;
}
long input_shape[] = {1, 5};
OnnxSetInputShape(onnx_handle, ONNX_DEFAULT, input_shape);
long output_shape[] = {1, 2};
OnnxSetOutputShape(onnx_handle, ONNX_DEFAULT, output_shape);
return INIT_SUCCEEDED;
}
void OnTick()
{
float features[5];
features[0] = (float)iRSI(_Symbol, _Period, 14, PRICE_CLOSE, 1);
features[1] = (float)iMA(_Symbol, _Period, 10, 0, MODE_SMA, PRICE_CLOSE, 1);
features[2] = (float)iMA(_Symbol, _Period, 50, 0, MODE_SMA, PRICE_CLOSE, 1);
features[3] = (float)((iClose(_Symbol, _Period, 1) - iClose(_Symbol, _Period, 2)) / iClose(_Symbol, _Period, 2));
features[4] = (float)iATR(_Symbol, _Period, 14, 1);
float prediction[2];
if(OnnxRun(onnx_handle, ONNX_DEFAULT, features, prediction))
{
double prob_up = prediction[1];
if(prob_up > 0.65) ExecuteBuy();
}
}

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

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

لا تشغل 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 الشامل