Şartname
كيف يعمل هذا الروبوت؟
يستخدم متوسطين متحركين: سريع (Fast) وبطيء (Slow).
• شراء (Buy): عندما يقطع المتوسط السريع المتوسط البطيء نحو الأعلى.
• بيع (Sell): عندما يقطع المتوسط السريع المتوسط البطيء نحو الأسفل.
• الكود (انسخه وضعه في MetaEditor):
خطوات تشغيل الروبوت:
افتح منصة MetaTrader 5.
.
اضغط على F4 لفتح محرر MetaEditor.
.
من القائمة الجانبية، اضغط بيمين الماوس على مجلد Experts واختر New File -> Expert Advisor.
.
سمِّ الروبوت (مثلاً Gold_Bot) ثم اضغط Finish.
.
امسح الكود الموجود وضع الكود الذي كتبته لك أعلاه.
.
اضغط على زر Compile في الأعلى وتأكد من عدم وجود أخطاء (Errors).
.
عُد إلى منصة الميتا تريدر، ستجد الروبوت في نافذة Navigator تحت قسم Expert Advisors.
.
اسحب الروبوت وضعه على شارت الذهب (XAUUSD).
.
هام جداً: تأكد من تفعيل زر "Algo Trading" في أعلى المنصة ليتحول للون الأخضر.
ملاحظات ضرورية قبل البدء:
هذا الروبوت تجريبي: هو مجرد هيكل تعليمي. الذهب يحتاج إلى إضافة "إدارة مخاطر" (Stop Loss و Take Profit) و "فلتر أوقات" ليكون مربحاً.
.
الاختبار (Backtest): لا تضعه أبداً في حساب حقيقي قبل عمل "Strategy Tester" لمدة لا تقل عن 6 أشهر على بيانات تاريخية.
.
إدارة المخاطر: في حال أردت إضافة "وقف خسارة"، يمكنك تعديل دالة trade.Buy لتشمل مستويات الأسعار، وهو أمر حيوي جداً لتجنب تصفير الحساب.
//+------------------------------------------------------------------+
//| Gold_Bot_Test.mq5 |
//| Copyright 2023, Your Name Here |
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh>
CTrade trade;
input int FastMA = 10; // فترة المتوسط السريع
input int SlowMA = 20; // فترة المتوسط البطيء
input double LotSize = 0.01; // حجم الصفقة
int handleFast, handleSlow;
int OnInit() {
handleFast = iMA(_Symbol, _Period, FastMA, 0, MODE_SMA, PRICE_CLOSE);
handleSlow = iMA(_Symbol, _Period, SlowMA, 0, MODE_SMA, PRICE_CLOSE);
return(INIT_SUCCEEDED);
}
void OnTick() {
double fast[], slow[];
CopyBuffer(handleFast, 0, 0, 2, fast);
CopyBuffer(handleSlow, 0, 0, 2, slow);
// منطق التقاطع:
// تقاطع صعودي (شراء)
if(fast[1] > slow[1] && fast[0] <= slow[0]) {
trade.Buy(LotSize, _Symbol, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 0, 0);
}
// تقاطع هبوطي (بيع)
if(fast[1] < slow[1] && fast[0] >= slow[0]) {
trade.Sell(LotSize, _Symbol, SymbolInfoDouble(_Symbol, SYMBOL_BID), 0, 0);
}
}