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

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

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

Pipsgrowth EX03021 Grid — Grid system with optional martingale lot progression for major pairs. Places initial buy and a ladder of BuyLimit orders. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

Pipsgrowth EX03021 GridXPro هو إكسبيرت آدفيسر يعتمد على شبكة شرائية أحادية الاتجاه، يبني سلماً من أوامر الشراء في كل مرة تفرغ فيها المحفظة، ويُغلق السلة كاملةً بمجرد أن يتجاوز الربح غير المحقق عتبة محددة. لا يستخدم أي مؤشرات تقنية ولا يضع أوامر وقف خسارة على الصفقات الفردية، بل يعتمد بالكامل على درج السعر المُعرَّف بـInpGridStep (افتراضياً 50 نقطة). في كل تيكة يعيد فيها CountOpen() القيمة صفر ويكون العلم الساكن active بقيمة false، يقوم الإكسبيرت بتنفيذ شراء سوقي عند سعر Ask الحالي عبر TryBuy_EX03021(InpInitialLot, ask, 0, 0, ...)، ثم يفعّل على الفور سلسلة من أوامر BuyLimit المعلقة عند أسعار تنازلية: ask - i * InpGridStep * _Point لقيم i من 1 إلى InpMaxLevels - 1 (افتراضياً InpMaxLevels = 10 أي 9 أوامر معلقة تحت نقطة الدخول). يمنع علم active إعادة بناء السلم قبل إغلاق السلة بالكامل.

يتبع حجم اللوت لكل أمر معلق أحد نمطين يتحكم فيهما InpMartingale. عندما تكون القيمة false (الوضع الافتراضي الآمن)، تتداول جميع المستويات بـInpInitialLot (0.01). عندما تكون true، يتداول المستوى i بحجم NormalizeDouble(InpInitialLot * pow(InpMultiplier, i), 2) — أي أنه مع InpMultiplier = 1.5 الافتراضي و10 مستويات، يصل قاع السلم إلى 0.01 × 1.5^9 = 0.38 لوت، ويبلغ المجموع الهندسي عبر المستويات العشرة نحو 0.65 لوت من Exposure الإجمالي. لذلك يُعدّ مفتاح المارتنجال أكثر المدخلات حساسية في الملف كله: يُحوِّل الإكسبيرت من شبكة بسلالم ثابتة إلى شبكة ذات تصاعد أُسِّي، ومعظم المتداولين سيُبقيه مطفأً.

الخرج أيضاً قاعدة واحدة شاملة. تقرأ OnTick إجمالي الربح/الخسارة غير المحقق لكل المراكز التي يطابق POSITION_MAGIC فيها InpMagicNumber (22203021) عبر BasketProfit()، وتقارنه بـInpGridStep * _Point * CountOpen() * 100 * 0.5. العتبة تتناسب خطياً مع كلٍّ من درجة الشبكة وعدد المراكز المفتوحة — كلما امتلأ السلم بعمق أكبر، احتاجت السلة إلى حركة سعرية أكبر لصالح الاتجاه لتفعيل الإغلاق. عند تحقق الشرط تستدعي CloseAll()، التي تمشي بترتيب عكسي على PositionsTotal() وتستدعي trade.PositionClose(ticket) لكل تذكرة تطابق الرقم السحري (مُغلَّفة بـTryClose_EX03021)، ثم تمشي على OrdersTotal() وتستدعي trade.OrderDelete(ticket) لكل أمر معلق يطابق الرقم السحري. يُعاد ضبط علم active، وأول تيكة بحالة فارغة ستبني سُلَّماً جديداً. لا يوجد جني أرباح على الصفقة الفردية ولا وقف خسارة فردي؛ المخارج كلها على مستوى السلة فقط.

طبقة الحماية المحيطة بهذا النواة البسيطة محافظة إلى حدٍّ معقول. تُعيد IsSafeToTrade_EX03021 القيمة false ويُنهِي الإكسبيرت المعالجة فور تحقق أيٍّ من هذه الشروط: خارج الجلسة النشطة (لا السبت/الأحد، إضافةً إلى لندن 7-16 بتوقيت GMT ∪ نيويورك 12-21 بتوقيت GMT عند تفعيل InpUseGMTSessions — يُكتشف ذلك عبر DetectGMTOffset_EX03021 الخاص بالـEA، الذي يجرّب كل إزاحة من -12 إلى +12 ويختار التي تحصل على أعلى نقاط بناءً على يوم الأسبوع والساعة داخل يوم التداول)، أو TimeCurrent() < g_cooldownUntil، أو حقوق الملكية تحت InpEquityFloor، أو إجمالي P/L اليومي المحقق أقل من -InpDailyLossLimit، أو P/L الأسبوعي أقل من -InpWeeklyLossLimit، أو رصيد الحساب عند سقف InpCapitalCap أو تجاوزه، أو عدد الصفقات اليومية بلغ InpMaxTradesPerDay (50)، أو g_consecLossesHD >= InpMaxConsecLosses عندما يكون موجباً. انتبه أن مسار التهدئة يُفعَّل أيضاً وبشكل مستقل عبر OnTradeTransaction: كلما أُغلقت صفقة بهذا الرقم السحري بربح/خسارة سالبة (profit + swap + commission)، تزداد قيمة g_consecLossesHD؛ وحالما تصل إلى 3 (عتبة مُتضمَّنة داخل معالج المعاملات، منفصلة عن بوابة InpMaxConsecLosses التي تساوي 0 افتراضياً)، يضبط الإكسبيرت g_cooldownUntil = TimeCurrent() + InpCooldownMinutes * 60 — أي 30 دقيقة افتراضياً. لذلك حتى مع ترك InpMaxConsecLosses = 0 وInpMaxTradesPerDay = 50 على القيم الافتراضية المتساهلة، سيتوقف الإكسبيرت نصف ساعة بعد ثلاث خسائر متتالية.

دوال التداول عبارة عن أغلفة إعادة محاولات بسيطة. تتحقق TryBuy_EX03021 أولاً من أن حجم اللوت يتوافق مع SYMBOL_VOLUME_STEP الرمز وداخل حدود SYMBOL_VOLUME_MIN/MAX، ثم تستدعي OrderCalcMargin للتأكد من كفاية الهامش — إن كان marginRequired > ACCOUNT_MARGIN_FREE تطبع رفضاً وتعود بدون إرسال. تُجرَّب trade.Buy(...) الفعلية حتى ثلاث مرات، مع إعادة المحاولة فقط عند TRADE_RETCODE_REQUOTE أو _TIMEOUT أو _PRICE_OFF أو _PRICE_CHANGED بعد Sleep(200)؛ أي retcode آخر يكسر الحلقة. تتبع TryBuyLimit_EX03021 وTryClose_EX03021 وTryOrderDelete_EX03021 نفس نمط 3 محاولات / 200 مللي ثانية. تسمح trade.SetDeviationInPoints(30) بانزلاق يصل إلى 3.0 نقطة في الإدخال السوقي؛ تُرسل الأوامر المعلقة بدون انزلاق (تبقى في الدفتر حتى تُملأ أو تُحذف). يستخدم الإكسبيرت عمداً SYMBOL_VOLUME_STEP الحالي للرمز بدلاً من 0.01 المُتضمَّن، ليتكيف مع الوسطاء الذين يستخدمون степ 0.001 أو 0.1 لوت.

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

للتشغيل الحي، تكاد تكون جميع القرارات المهمة في قيم المدخلات لا في المنطق. سلم المستويات العشرة الافتراضي بـInpGridStep = 50 نقطة وInpInitialLot = 0.01 يحتاج إلى نحو 0.10 لوت من الهامش الاسمي عند مستوى الدخول، ويرتفع إلى نحو 0.65 لوت اسمي عند تفعيل المارتنجال. يُفضَّل وسيط بأسعار سواب معقولة لأن الإكسبيرت مصمم للاحتفاظ بالسلة لساعات أو أيام ريثما يكتمل التفكيك؛ الحسابات التي تدفع سواباً سلبياً على شراء الذهب أو الأزواج الرئيسية سترى هدف ربح السلة يتآكل بصمت. ولأن إغلاق السلة يفحص PositionsTotal() بحثاً عن التطابقات السحرية في كل تيكة، يجب تشغيل الإكسبيرت على رسم بياني واحد لكل رمز — تشغيله مرتين على نفس الرمز (أو بسحريين مختلفين لكن بنفس الرمز مع أوامر متداخلة) سيُنتج سباقات إغلاق مزدوجة عندما تظن كلتا الحالتين أن السلة تخصها. يُعدّ غطاء رأس المال (InpCapitalCap > 0) أداة أمان قوية لكنها غير مستغلة: ضبطه عند الحد الأقصى للرصيد الذي تريد لهذا الإكسبيرت إدارته يعني رفض الاستمرار في التداول بمجرد أن يكبر الحساب فوق ذلك السقف، ما يحمي من التراكم المضاعف غير المراقب.

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

في كل تيكة يُحدِّث الإكسبيرت أولاً g_realizedToday وg_realizedWeek وg_dailyTrades عند تجاوز حد اليوم أو الأسبوع، ثم يستدعي IsSafeToTrade_EX03021 التي تُنهِي المعالجة عند أي انتهاك للجلسة أو التهدئة أو أرضية حقوق الملكية أو خسارة يومية/أسبوعية أو غطاء رأس المال أو حد الصفقات اليومية. إن مرّت البوابة، تُبلِّغ CountOpen() ما إذا كانت السلة فارغة؛ إن كانت كذلك وactive بقيمة false، يُنفّذ الإكسبيرت شراءً سوقياً عند سعر Ask ويُفعِّل سُلَّماً تنازلياً من InpMaxLevels - 1 أوامر BuyLimit متباعدة بمقدار InpGridStep * _Point تحته. الأحجام مسطحة عند InpInitialLot عندما يكون InpMartingale مطفأً، أو هندسية عند InpInitialLot * pow(InpMultiplier, i) عند تشغيله. في التيكات اللاحقة، يُقارن ربح السلة (BasketProfit() على كل مركز يطابق الرقم السحري) بعتبة تتناسب مع InpGridStep وعدد المراكز المفتوحة، وتُستدعى CloseAll() عند بلوغها. تحاول طبقة إعادة المحاولة (TryBuy_EX03021، TryBuyLimit_EX03021، TryClose_EX03021، TryOrderDelete_EX03021) كل استدعاء يلامس الشبكة حتى 3 مرات بفواصل 200 مللي ثانية عند REQUOTE/TIMEOUT/PRICE_OFF/PRICE_CHANGED. تستمع OnTradeTransaction لأحداث TRADE_TRANSACTION_DEAL_ADD للرقم السحري، وتُجمِّع P/L المحقق في الإجماليات اليومية/الأسبوعية، وتفرض تهدئة 30 دقيقة بمجرد تسجيل 3 خسائر متتالية. تُعيد OnTester القيمة (profit/maxDD) * (pf>1 ? pf : 0) للمُحسِّن، مع بوابات trades >= 10 وmaxDD > 0.

إشارة الدخول

يدخل Pipsgrowth EX03021 GridXPro في صفقات شراء فقط. عند كل تيكة يكون فيها عدد المراكز للرقم السحري 22203021 صفراً، يُنفّذ شراءً سوقياً بسعر Ask الحالي بحجم 0.01 لوت ويُفعِّل سُلَّماً من 9 أوامر BuyLimit معلقة (مع InpMaxLevels = 10) بأسعار تنازلية ask - i * 50 * _Point لقيم i من 1 إلى 9. لا يُعاد بناء السلم إلا بعد إغلاق السلة وإعادة ضبط علم active الساكن.

إشارة الخروج

المخرج على مستوى السلة فقط. في كل تيكة تستدعي OnTick دالة BasketProfit() لجمع الربح/الخسارة غير المحقق لكل مركز يطابق الرقم السحري وتقارنه بـInpGridStep * _Point * CountOpen() * 100 * 0.5. عند بلوغ العتبة تستدعي CloseAll() التي تمشي بترتيب عكسي على المراكز وتغلق كل واحد عبر trade.PositionClose، ثم تحذف كل أمر معلق مطابق. لا يوجد وقف خسارة على الصفقة الفردية ولا جني أرباح فردي.

وقف الخسارة

لا يوجد وقف خسارة على الصفقة الفردية. تُدار المخاطر على مستوى السلة عبر InpEquityFloor وInpDailyLossLimit وInpWeeklyLossLimit وInpCapitalCap، إضافةً إلى حد 50 صفقة في اليوم وفترة تهدئة 30 دقيقة تُفعَّل تلقائياً بعد 3 خسائر متتالية عبر OnTradeTransaction.

جني الأرباح

جني الأرباح على مستوى السلة بالصيغة InpGridStep * _Point * CountOpen() * 100 * 0.5 — أي أن العتبة تنمو خطياً مع كلٍّ من درجة الشبكة المُكوَّنة (50 نقطة افتراضياً) وعدد المراكز المفتوحة. لا يوجد جني أرباح على الصفقة الفردية؛ الإكسبيرت يُغلق فقط عندما يتجاوز إجمالي الربح/الخسارة غير المحقق هذا الهدف المُتدرِّج.

الأنسب لـ

الأنسب للمتداولين الذين يشغّلون EX03021 على الأزواج الرئيسية (EURUSD، GBPUSD، USDJPY) على الإطار الزمني M5، ويريدون شبكة شرائية أحادية الجانب بسُلَّم بسلالم ثابتة ومخارج على مستوى السلة فقط. الحد الأدنى للرصيد 100 دولار بالإعداد الافتراضي 0.01 لوت و10 مستويات وبدون مارتنجال؛ ارفع الإيداع أو قلِّل InpMaxLevels للحسابات الحية لأن تصنيف المخاطر VERY_HIGH. استخدم حساب ECN أو قياسي بفروقات سعرية منخفضة وسواب معقول كي لا يتآكل هدف ربح السلة خلال الليل، وشغِّل الإكسبيرت على رسم بياني واحد لكل رمز لتجنب تضارب الإغلاق المزدوج بين الأرقام السحرية.

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

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

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

الوصف: Grid system with optional martingale lot progression for major pairs. Places initial buy and a ladder of BuyLimit orders at fixed grid step intervals. Closes basket on combined profit target. Martingale is OFF by default for safety. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • BasketProfit()
  • CountOpen()
  • CloseAll()
  • DetectGMTOffset_EX03021()
  • ServerToGMT_EX03021()
  • InActiveSession_EX03021()
  • UpdateDailyCounters_EX03021()
  • IsSafeToTrade_EX03021()
  • TryBuy_EX03021()
  • TryBuyLimit_EX03021()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX03021 Grid — Execution Flow (from source analysis)
// Family: Grid
// Grid system with optional martingale lot progression for major pairs. Places initial buy and a ladder of BuyLimit orders at fixed grid step intervals. Closes basket on combined profit target. Martingale is OFF by default for safety. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

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_EX03021.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX03021 GridXPro — grid with optional martingale for major pairs, full 12-layer stack."

#include <Trade\Trade.mqh>
input group "=== Grid Settings ==="
input int    InpGridStep     = 50;
input bool   InpMartingale   = false;
input double InpMultiplier   = 1.5;
input double InpInitialLot   = 0.01;
input int    InpMaxLevels    = 10;
input group "=== Identity ==="
input int    InpMagicNumber  = 22203021;
input string InpTradeComment = "Psgrowth.com Expert_03021";

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 active=false;

//--- 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(30); g_gmtOffset = DetectGMTOffset_EX03021(); 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_EX03021();
   if(!IsSafeToTrade_EX03021()) return;
   int cnt=CountOpen();
   double basket=BasketProfit();
   if(cnt>0 && basket >= InpGridStep*_Point*cnt*100*0.5) { CloseAll(); active=false; return; }
   if(cnt==0 && !active) {
      active=true;
      double ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
      TryBuy_EX03021(InpInitialLot,ask,0,0,InpTradeComment);

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

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

الوسوم:ex03021gridpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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