P
PipsGrowth
شبكةمفتوح المصدر - مجاني

Pipsgrowth EX03022 Grid — إكسبرت أدفايزر شبكة

إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD · M5، H1

Pipsgrowth EX03022 Grid — Hedging + grid recovery EA that opens opposing positions at configurable distance. Uses a hedge-and-recover approach wit. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

EX03022 HedgingGridEA هو نظام استرداد عبر التحوط بساق واحدة، وليس شبكة متعددة المستويات كما يوحي اسم العائلة. الكود يفتح صفقة شراء واحدة بالضبط في بداية كل دورة، وينتظر حتى ينخفض السعر بمسافة قابلة للضبط دون سعر الدخول، ثم يفتح صفقة بيع واحدة بحجم ضعف اللوت لإغلاق تحوط. لا توجد مؤشرات تتحكم في هذا القرار؛ المُحفّز هو المسافة بين سعر العرض الحالي وسعر الفتح للصفقة الأولى مقاسة بالنقاط. المدخلات الوحيدة للـ EA هي حجم اللوت، ومسافة التحوط، وجني الأرباح للسلة، وبوابات جلسة GMT وحماية رأس المال المعتادة — لا شيء آخر يمكن ضبطه. يوثّق الترويسة بنية من 12 طبقة (REGIME، SIGNAL، ENTRY، CONFIRM، NO-TRADE، CAPITAL CAP، RISK، SIZING، MANAGE، EXIT، SCALING، OnTester)، لكن مسار التشغيل داخل OnTick أضيق بكثير مما يوحي ذلك: يفحص بوابة الأمان، ويجمع ربح السلة، ويعدّ الصفقات المفتوحة، ثم إما يغلق كل شيء عند جني أرباح السلة أو يطلق تحوط الطرف المقابل. كل شيء آخر في المصدر هيكل داعم.

تبدأ دورة الحياة عندما ترجع CountOpen() صفرًا ولا يكون قد تم تسجيل تذكرة ابتدائية. أول تيكت من جلسة جديدة يستدعي TryBuy_EX03022 عند سعر العرض الحالي بحجم 0.10 (القيمة الافتراضية InpLotSize)، بدون وقف خسارة، بدون جني أرباح، وبتعليق 'Psgrowth.com Expert_03022'. كائن الصفقة هو CTrade مُهيأ برقم سحري 22203022 وانزلاق 20 نقطة. تُطبّع TryBuy_EX03022 اللوت على خطوة حجم الرمز، وتقصه إلى الحد الأدنى والأقصى للرمز، وتفحص مسبقًا الهامش الحر عبر OrderCalcMargin. إذا فشل فحص الهامش تطبع الدالة رسالة وترجع false دون إرسال. وإلا تُحدّث سعر العرض، وتستدعي trade.Buy، ولا تقبل النتيجة إلا إذا كان كود الإرجاع TRADE_RETCODE_DONE أو TRADE_RETCODE_DONE_PARTIAL. الأخطاء العابرة المصنّفة حسب retcode (REQUOTE، TIMEOUT، PRICE_OFF، PRICE_CHANGED) تسبب Sleep بمقدار 200 مللي ثانية وإعادة المحاولة، حتى ثلاث محاولات. عند النجاح يزداد عداد الصفقات اليومي g_dailyTrades، وتُحفظ التذكرة في initialTicket.

في كل تيكت لاحق يعيد الـ EA حساب شيئين: ربح السلة عبر جميع الصفقات المفلترة بالرقم السحري والرمز، وعدد الصفقات المفتوحة على نفس الفلتر. إذا وصل ربح السلة إلى InpTakeProfit × _Point × 100 أو تجاوزه، يستدعي الـ EA CloseAll() التي تتكرر على قائمة الصفقات وتستخدم TryClose_EX03022 لتغلق كل تذكرة (ثلاث محاولات، 200 مللي ثانية، تصنيف الأخطاء العابرة مطابق لمساعدات الدخول). بعد إغلاق السلة يُعاد تعيين علم hedged إلى false و initialTicket إلى صفر، لتبدأ الدورة التالية بشكل نظيف.

إذا بقي العداد عند 1 والصفقة غير متحوط عليها، يقرأ الـ EA سعر الفتح من POSITION_PRICE_OPEN وسعر العرض الحالي، ويحسب openPrice - bid. بمجرد أن تصل هذه المسافة إلى InpHedgeDistance نقطة (100 افتراضيًا)، تُستدعى TrySell_EX03022 بـ InpLotSize × 2 لوت (0.20 افتراضيًا) عند سعر العرض الحالي، مرة أخرى بدون وقف خسارة أو جني أرباح لكل صفقة. TrySell_EX03022 لها نفس حلقة المحاولات الثلاث ونفس حماية الهامش مثل TryBuy_EX03022، وعند النجاح يُضبط علم hedged إلى true. من تلك النقطة فصاعدًا، لن يضيف الـ EA صفقة أخرى — يراقب ربح السلة فقط. لا توجد ساق ثالثة، ولا تصاعد مارتينجال، ولا منطق تباعد يحركه InpGridStep. مُدخل InpGridStep بقيمة 50 نقطة مُعرَّف في المصدر لكنه لا يُشار إليه في OnTick ولا في مساعدات الدخول ولا في أي دالة يستدعيها OnTick؛ إنه عمليًا كود ميت وليس له أي تأثير على السلوك المباشر.

الخروج هو هدف سلة فقط. InpTakeProfit افتراضيًا 100 نقطة؛ يضرب الـ EA هذا في _Point وفي 100 لاستخلاص هدف مالي. بالنسبة لـ XAUUSD مع _Point = 0.01، هدف السلة هو 100 دولار. بالنسبة لأزواج العملات الرئيسية ذات 5 أرقام ينهار نفس التعبير إلى رقم أصغر بكثير، ولهذا يشير ترويسة الملف إلى أن الـ EA قابل للنقل إلى العملات الرئيسية والذهب لكن عمليًا الهدف الافتراضي منطقي فقط على الأدوات التي يكون فيها _Point = 0.01 أو أكبر. لا يوجد وقف خسارة لكل صفقة على أي من الساقين؛ الوقف الضمني هو نداء الهامش من الوسيط أو حدود الحساب InpEquityFloor و InpDailyLossLimit و InpWeeklyLossLimit و InpCapitalCap (كل منها افتراضيًا 0 = معطّل). يُفرض غطاء رأس المال كسقف للرصيد: إذا كان AccountInfoDouble(ACCOUNT_BALANCE) قد وصل بالفعل إلى InpCapitalCap أو تجاوزه يرفض الـ EA فتح صفقات جديدة — وهذا مفيد لاختبار الـ EA على حساب فرعي صغير.

التحكم في الجلسة هو بوابة GMT خالصة. InpUseGMTSessions افتراضيًا true. تتجوّل DetectGMTOffset_EX03022 في كل إزاحة مرشحة من -12 إلى +12، وتطبقها على وقت الخادم، وتُقيّم MqlDateTime الناتجة: يوم الأسبوع في 1..5 يُعطي 10 نقاط، الساعة في 7..21 تُعطي 5 نقاط. الإزاحة ذات الدرجة المجمعة الأعلى تُؤخذ كإزاحة GMT للوسيط وتُخزّن في g_gmtOffset. بعد ذلك تحوّل InActiveSession_EX03022 وقت الخادم إلى GMT، وتمنع السبت والأحد تمامًا، وتقبل التيكت إذا سقطت ساعة GMT في [InpLondonStartGMT، InpLondonEndGMT) = [7، 16) أو في [InpNewYorkStartGMT، InpNewYorkEndGMT) = [12، 21). النافذتان متداخلتان بين 12:00 و16:00 GMT، لذا يكون الـ EA نشطًا فعليًا عبر افتتاح لندن وافتتاح وإغلاق نيويورك.

سلوك التهدئة لديه مُحفّز مبرمج يتجاوز مُدخل InpMaxConsecLosses المرئي. تُصفّي OnTradeTransaction الصفقات بالرقم السحري والرمز، وفي كل DEAL_ENTRY_OUT أو DEAL_ENTRY_INOUT تتراكم الأرباح/الخسائر المحققة (profit + swap + commission) في g_realizedToday و g_realizedWeek. الإجمالي السلبي يزيد g_consecLossesHD؛ الإجمالي غير السلبي يعيد تعيينه إلى صفر. تُفعَّل التهدئة عند g_consecLossesHD >= 3 — وليس عند InpMaxConsecLosses — وتستخدم InpCooldownMinutes (30 افتراضيًا) لضبط g_cooldownUntil. ترفض IsSafeToTrade_EX03022 التداول بينما g_cooldownUntil في المستقبل. لذا فإن مُدخل InpMaxConsecLosses الذي يراه المستخدم هو عمليًا تجميلي؛ السلوك المباشر يرتبط بالثابت 3.

صيغة OnTester هي نسبة ربح/تراجع مسطحة مرجّحة بعامل الربح، مع بوابة trades >= 10 و maxDD > 0. ترجع (profit / maxDD) * (pf > 1 ? pf : 0)، وهي نتيجة مجمعة للعائد/النعومة/الاتساق مناسبة لترتيب محسّن الاستراتيجية. الاستراتيجيات التي تأخذ أقل من عشر صفقات في نافذة الاختبار تحصل على صفر بغض النظر عن الربحية.

للنشر: الحد الأدنى الموصى به للرصيد هو 100 دولار، لكن المخاطرة الفعلية تعتمد كليًا على InpLotSize وحجم العقد عند الوسيط. مع InpLotSize = 0.10 على XAUUSD تكون صفقة الشراء الأولى 0.10 لوت وساق التحوط 0.20 لوت، لذا يجب أن يفي الحساب بـ OrderCalcMargin لـ 0.30 لوت من تعرض الذهب. اضبط InpEquityFloor و InpDailyLossLimit و InpCapitalCap صراحة قبل التشغيل الحي — القيم الافتراضية 0 تعطل جميع الحراسات الثلاث. الـ EA حساس للفارق السعري: فارق 50 نقطة في رحلة ذهاب وإياب على هدف سلة 100 نقطة يستهلك 50% من الربح الإجمالي، وساق البيع المضاعفة باللوت تضاعف تكلفة المبادلة والعمولة لمسار الاسترداد. شغّله على وسيط فارق سعري منخفض ومبادلة منخفضة، وابدأ الاختبار الخلفي على نافذة جلسة تتداخل فيها لندن ونيويورك لتطابق بوابة الجلسة الإنتاجية.

تفاصيل الاستراتيجية

تستدعي OnTick أولاً UpdateDailyCounters_EX03022 لتدوير g_realizedToday و g_realizedWeek و g_dayStartTime و g_weekStartTime عند تجاوز حد اليوم أو الأسبوع. ثم تُشغّل IsSafeToTrade_EX03022 التي تفحص نافذة جلسة GMT، ومؤقت التهدئة، وأرضية الأسهم، وحدود الخسارة اليومية والأسبوعية، وسقف الرصيد، وعدّاد الصفقات اليومي، وعدّاد الخسائر المتتالية. فقط إذا اجتاز كل حراسة يحسب الـ EA ربح السلة وعدد الصفقات، ويقرر ما إذا كان سيغلق على هدف السلة، أو يطلق الشراء الأولي، أو يفتح تحوط البيع المضاعف. تفحص TryBuy_EX03022 و TrySell_EX03022 مسبقًا الهامش الحر عبر OrderCalcMargin وتعيدان المحاولة حتى ثلاث مرات على أخطاء REQUOTE أو TIMEOUT أو PRICE_OFF أو PRICE_CHANGED مع Sleep بمقدار 200 مللي ثانية. تستخدم TryClose_EX03022 نفس نمط إعادة المحاولة لإغلاق السلة. تُصفّي OnTradeTransaction الصفقات بالرقم السحري والرمز، وتتراكم الأرباح/الخسائر المحققة في سلاتي اليومية والأسبوعية، وتزيد g_consecLossesHD عند الخسائر، وتُفعّل تهدئة 30 دقيقة عند الخسارة المتتالية الثالثة. تُقيّم DetectGMTOffset_EX03022 إزاحات مرشحة من -12 إلى +12 مقابل استدلالات يوم الأسبوع والساعة، وتختار الأفضل، وتخزنها في g_gmtOffset لفلتر الجلسة. صيغة OnTester هي (profit / maxDD) * (pf > 1 ? pf : 0) مع بوابة trades >= 10 و maxDD > 0.

إشارة الدخول

يفتح صفقة شراء واحدة بسعر العرض الحالي بحجم InpLotSize (0.10 افتراضيًا)، بدون وقف خسارة وجني أرباح. بعد أن تكون الصفقة نشطة، يراقب الـ EA المسافة بين سعر الفتح وسعر العرض الحالي؛ بمجرد أن ينخفض سعر العرض بمقدار InpHedgeDistance نقطة (100 افتراضيًا) يفتح تحوط بيعي عكسي بضعف حجم اللوت (0.20) عند سعر العرض الحالي. لا توجد مؤشرات مشتركة — المُحفّز هو عتبة مسافة السعر من التذكرة الأولية فقط. لا توجد شبكة متعددة المستويات: ساق تحوط واحدة فقط تطلق في كل دورة.

إشارة الخروج

الخروج هو خروج سلة فقط. يجمع الـ EA الأرباح/الخسائر غير المحققة عبر كل صفقة بالرقم السحري 22203022 على الرمز الحالي، وبمجرد basket >= InpTakeProfit * _Point * 100 يستدعي CloseAll() ويعيد تعيين initialTicket وعلم hedged. مع InpTakeProfit الافتراضي = 100 على XAUUSD (حيث _Point = 0.01) هدف السلة هو 100 دولار. لا يوجد وقف لكل صفقة؛ الوقوفات الصلبة الوحيدة هي حدود رأس المال على مستوى الحساب والتهدئة بعد ثلاث صفقات خاسرة متتالية.

وقف الخسارة

لا يوجد وقف خسارة لكل صفقة على أي من ساقي السلة. الوقوفات الصلبة الوحيدة هي حراسات مستوى الحساب في IsSafeToTrade_EX03022InpEquityFloor (افتراضي 0 = معطّل)، InpDailyLossLimit (0 = معطّل)، InpWeeklyLossLimit (0 = معطّل) — بالإضافة إلى سقف رصيد InpCapitalCap. تفرض OnTradeTransaction أيضًا تهدئة 30 دقيقة بعد ثلاث صفقات خاسرة متتالية محققة (g_consecLossesHD >= 3)، وهي مبرمجة وتتجاهل مُدخل InpMaxConsecLosses.

جني الأرباح

جني أرباح السلة هو الهدف الوحيد. تُغلق السلة عندما تصل الأرباح/الخسائر غير المحققة عبر جميع صفقات الرقم السحري 22203022 على _Symbol إلى InpTakeProfit * _Point * 100. مع InpTakeProfit الافتراضي = 100 وعلى XAUUSD (_Point = 0.01) هذا هدف سلة قدره 100 دولار. لا يوجد جني أرباح لكل صفقة على الشراء أو تحوط البيع؛ تُغلق الساقان معًا عندما تصل السلة للهدف.

الأنسب لـ

استخدم EX03022 على XAUUSD M5 مع InpLotSize = 0.10 و InpHedgeDistance = 100 (الافتراضيات). الحد الأدنى الموصى به للرصيد هو 100 دولار، لكن يجب أن يفي الحساب بـ OrderCalcMargin لـ 0.30 لوت من الذهب (الـ 0.10 الأولي + التحوط 0.20)، وهو ما يترجم في معظم الوسطاء إلى ما يقارب 600 إلى 1500 دولار من الهامش الحر برافعة 1:100. شغّله على وسيط فارق سعري منخفض ومبادلة منخفضة — فارق سعري 50 نقطة في رحلة ذهاب وإياب على هدف سلة 100 نقطة يستهلك 50% من الربح الإجمالي. بوابة الجلسة هي GMT لندن 7-16 اتحاد نيويورك 12-21 مع حظر عطلة نهاية الأسبوع، لذا يحتاج إلى وسيط يكون وقت خادمه ضمن +/- 12 ساعة من GMT الفعلي (تختار DetectGMTOffset_EX03022 أفضل إزاحة مرشحة عند البدء). اضبط InpEquityFloor و InpDailyLossLimit و InpCapitalCap صراحة قبل التشغيل الحي؛ القيم الافتراضية 0 تعطل الثلاثة. لا تتوقع أن يُفعّل مُدخل InpMaxConsecLosses أي شيء — التهدئة الحية تطلق عند ثالث صفقة خاسرة متتالية بصرف النظر.

منطق الاستراتيجية

Pipsgrowth EX03022 Grid — تحليل منطق الاستراتيجية (من كود .mq5)

العائلة: Grid الماجيك: 22203022 الإصدار: 2.00

الوصف: Hedging + grid recovery EA that opens opposing positions at configurable distance. Uses a hedge-and-recover approach with grid step spacing and basket take-profit close

المؤشرات:

  • مؤشرات قياسية

الدوال الرئيسية:

  • BasketProfit()
  • CountOpen()
  • CloseAll()
  • DetectGMTOffset_EX03022()
  • ServerToGMT_EX03022()
  • InActiveSession_EX03022()
  • UpdateDailyCounters_EX03022()
  • IsSafeToTrade_EX03022()
  • TryBuy_EX03022()
  • TrySell_EX03022()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX03022 Grid — Execution Flow (from source analysis)
// Family: Grid
// Hedging + grid recovery EA that opens opposing positions at configurable distance. Uses a hedge-and-recover approach with grid step spacing and basket take-profit close

ON_INIT:
    Create indicator handles: standard set
    Initialize state variables
    Detect broker GMT offset

ON_TICK:
    1. Refresh indicator buffers (closed-bar shift=1)
    2. Manage existing positions:
       - Break-even check
       - ATR trailing stop
       - Profit lock ratchet
       - Time-based exit
       - Opposite-signal exit
    3. If new bar:
       a. ClassifyRegime() — ADX/ATR/BB regime detection
       b. NoTradeGate() checks:
          - Market open + session filter
          - Spread limit
          - Cooldown after loss
          - Consecutive loss limit
          - Kill switch
          - Max drawdown
          - Max concurrent positions
          - Daily/weekly loss limits
       c. GenerateSignal() — strategy-specific entry logic
       d. CheckConfirm() — HTF alignment + R:R + ADX minimum
       e. Calculate position size from risk %
       f. Execute with retry logic
       g. Mark bar to prevent duplicates

ON_TESTER:
    Custom fitness = weighted(RecoveryFactor, ROI, ProfitFactor, TradeCount, Sharpe, Drawdown)

ملف التحسين

الوسطاء المُحسّنون:
ExnessIC Markets
الرموز المُحسّنة:
XAUUSD
الأطر الزمنية المُحسّنة:
M5H1

كيفية تثبيت الإكسبرت على MT5

  1. 1حمّل ملف .mq5 بالضغط على زر التحميل أعلاه
  2. 2افتح برنامج MetaTrader 5 على حاسوبك
  3. 3من القائمة العلوية اختر File → Open Data Folder
  4. 4انتقل إلى مجلد MQL5 → Experts والصق الملف هناك
  5. 5في MT5، انقر بالزر الأيمن على Expert Advisors في لوحة Navigator → Refresh
  6. 6اسحب الإكسبرت على رسم بياني — يُنصح بـ H1 أو H4 لروبوتات الشبكة
  7. 7حدد خطوة الشبكة (نقاط)، الحد الأقصى للأوامر، وحجم اللوت في نافذة الإعدادات
  8. 8فعّل Allow Algo Trading واضغط OK
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX03022.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX03022 HedgingGridEA — hedging + grid recovery, full 12-layer stack."

#include <Trade\Trade.mqh>
input group "=== Identity ==="
input int    InpMagicNumber   = 22203022;
input string InpTradeComment  = "Psgrowth.com Expert_03022";
input group "=== Trading ==="
input double InpLotSize       = 0.10;
input int    InpHedgeDistance = 100;
input int    InpGridStep      = 50;
input int    InpTakeProfit    = 100;

input group "=== Hardening GMT Sessions ==="
input bool     InpUseGMTSessions  = true;
input int      InpLondonStartGMT  = 7;
input int      InpLondonEndGMT    = 16;
input int      InpNewYorkStartGMT = 12;
input int      InpNewYorkEndGMT   = 21;

input group "=== Hardening Capital Protection ==="
input double   InpEquityFloor     = 0.0;
input double   InpDailyLossLimit  = 0.0;
input double   InpWeeklyLossLimit = 0.0;
input double   InpCapitalCap      = 0.0;

input group "=== Hardening Trade Safety ==="
input int      InpMaxTradesPerDay = 50;
input int      InpCooldownMinutes = 30;
input int      InpMaxConsecLosses = 0;

CTrade trade;
bool   hedged=false; ulong initialTicket=0;

//--- Hardening Globals
double   g_realizedToday  = 0;
double   g_realizedWeek   = 0;
datetime g_dayStartTime   = 0;
datetime g_weekStartTime  = 0;
int      g_gmtOffset      = 3;
int      g_dailyTrades    = 0;
int      g_consecLossesHD = 0;
datetime g_cooldownUntil  = 0;

int OnInit() { trade.SetExpertMagicNumber(InpMagicNumber); trade.SetDeviationInPoints(20); g_gmtOffset = DetectGMTOffset_EX03022(); g_dayStartTime = TimeCurrent(); g_weekStartTime = TimeCurrent(); PrintFormat("GMT offset auto-detected: %d", g_gmtOffset); return INIT_SUCCEEDED; }
void OnDeinit(const int r) {}
void OnTick() {
   UpdateDailyCounters_EX03022();
   if(!IsSafeToTrade_EX03022()) return;
   double basket=BasketProfit();
   int cnt=CountOpen();
   if(cnt>0 && basket>=InpTakeProfit*_Point*100) { CloseAll(); hedged=false; initialTicket=0; return; }
   if(cnt==0 && initialTicket==0) {
      double ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
      if(TryBuy_EX03022(InpLotSize,ask,0,0,InpTradeComment))
         initialTicket=trade.ResultOrder();
      return;

الكود المصدري الكامل متاح عند التحميل

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

الوسوم:ex03022gridpipsgrowthfreemt5xauusd

تحذير صريح: لأغراض تعليمية فقط

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

وسطاء موصى بهم لهذا الإكسبرت

هذه الروبوتات تعمل على MT5 — استخدم وسيطاً موثوقاً بتنفيذ سريع وسبريد منخفض

مجتمع المستخدمين

سجّل دخولك للمشاركةتسجيل الدخول

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

اسم الملفPipsgrowth_com_EX03022.mq5
حجم الملف12.0 KB
الإصدارv2.00
PlatformMetaTrader 5
نوع الملف.mq5 Source
الاستراتيجيةشبكة
المخاطرةمخاطرة عالية جداً
الأطر الزمنية
M5H1
أزواج العملات
XAUUSD
الحد الأدنى للإيداع$100