Техническое задание
📄 وثيقة المواصفات الفنية لروبوت التداول (MQL5 EA Specification)
📌 1. ملخص المشروع والهدف
* اسم المشروع: Gold Cent Grid-Hedge EA
* المنصة: MetaTrader 5 (MQL5)
* أداة التداول: الذهب (XAUUSD)
* نوع الحساب: حساب سنت (Cent Account)
* فكرة الاستراتيجية: تداول شبكة هيدج متوازنة (Grid-Hedging) تفتح صفقات تعزيز كل مسافة محددة، وتغلق الطرف الأكثر ربحاً عند تحقيق هدف مالّي مجمع بالدولار/السنت لإعادة هيكلة التوازن.
⚙️ 2. مدخلات الروبوت (Input Parameters)
يجب أن تحتوي قائمة المدخلات (Inputs) على المتغيرات التالية لتمكين المستخدم من تعديلها بسهولة:
| اسم المتغير | النوع | القيمة الافتراضية | الوصف الفني |
|---|---|---|---|
| InpLotSize | double | 0.10 | حجم اللوت الثابت لكل صفقة (Cent Lot) |
| InpStepPoints | int | 1000 | مسافة الشبيكة بالنواقص/النقاط (1000 point = $10.0 في الذهب) |
| InpTargetProfit | double | 1000.0 | الهدف المالي المجمع بالسنت لإغلاق الطرف الرابح ($10.0 حقيقي = 1000 Cent) |
| InpMagicNumber | ulong | 888111 | الرقم السحري المخصص للروبوت لتمييز صفقاته |
🔄 3. شروط فتح الصفقات (Entry & Grid Rules)
* الصفقة الأولى (Initial Orders Setup):
* عند تشغيل الروبوت لأول مرة على الشارت بدون صفقات مفتوحة تخص الـ Magic Number، يقوم فوراً بفتح صفقتي هيدج معاكسين بنفس الوقت:
* 1 صفقة شراء (BUY) بحجم 0.10 لوت سنت بسعر الـ Ask الحالي.
* 1 صفقة بيع (SELL) بحجم 0.10 لوت سنت بسعر الـ Bid الحالي.
* شبكة الشراء (Buy Grid Execution):
* يفحص الروبوت أحدث صفقة شراء مفتوحة (Last Buy Open Price).
* إذا هبط سعر الـ Ask بمقدار >= InpStepPoints (مثلاً 1000 نقطة) عن سعر أحدث صفقة شراء ⬅️ يفتح صفقة BUY جديدة بحجم 0.10.
* شبكة البيع (Sell Grid Execution):
* يفحص الروبوت أحدث صفقة بيع مفتوحة (Last Sell Open Price).
* إذا ارتفع سعر الـ Bid بمقدار >= InpStepPoints (مثلاً 1000 نقطة) عن سعر أحدث صفقة بيع ⬅️ يفتح صفقة SELL جديدة بحجم 0.10.
💰 4. إدارة جني الأرباح والتوازن (Basket Profit & Rebalancing)
* لا يتم وضع StopLoss أو TakeProfit فردي لكل صفقة.
* يعتمد التسكير على إجمالي الربح العائم (Floating Profit + Swap) الخاص بجميع الصفقات المفتوحة التي تحمل نفس الـ InpMagicNumber.
معيار الخروج وتصفية الأطراف (Exit Algorithm):
* يقوم الروبوت باستمرار بحساب:
* مجموع أرباح جميع صفقات الشراء المفتوحة (Total_Buy_Profit).
* مجموع أرباح جميع صفقات البيع المفتوحة (Total_Sell_Profit).
* الربح الإجمالي المجمع: Total_Profit = Total_Buy_Profit + Total_Sell_Profit.
* شرط التحقق: عندما يصبح Total_Profit >= InpTargetProfit (أي يوصل مجموع الأرباح إلى $10 / 1000 سنت):
* إذا كان Total_Buy_Profit > Total_Sell_Profit: يقوم الروبوت بإغلاق جميع صفقات الشراء المفتوحة فوراً (Close All Buy Positions) وتترك صفقات البيع مفتوحة.
* إذا كان Total_Sell_Profit > Total_Buy_Profit: يقوم الروبوت بإغلاق جميع صفقات البيع المفتوحة فوراً (Close All Sell Positions) وتترك صفقات الشراء مفتوحة.
* إذا تساوى الطرفان: يتم إغلاق جميع الصفقات بالكامل (Close All Positions).
🛡️ 5. الملاحظات الفنية للمبرمج (Technical Guidelines for Coder)
* التعامل مع النقاط (Point Calculation): يرجى التأكد من استخدام _Point بدقة بما يتوافق مع تسعير الذهب 2-Digit أو 3-Digit في المنصة.
* إدارة الأخطاء والتنفيذ: استدعاء دالة trade.PositionClose() للتأكد من إغلاق الصفقات بأمان دون مشاكل Re-quote.
* توليد السجلات (Logging): إضافة أمور Print() في المنصة عند إغلاق طرف رابح لتوضيح حجم الربح المحقق وسعر الإغلاق.