Pipsgrowth EX02020 Breakout — إكسبرت أدفايزر اختراق
إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD · M5
Pipsgrowth EX02020 Breakout — Advanced Donchian channel breakout EA with comprehensive money management, session control, smart exit timing, and multi. إكسبرت أدفايزر MT5 مفتوح المصدر.
نظرة عامة
إكس 02020 من Pipsgrowth يُسلَّم كإطار عمل لاختراقات دونشيان ملفوفًا بمكدس إدارة صفقات مكوّن من اثنتي عشرة طبقة. عند قراءة المصدر من الأعلى إلى الأسفل، تتضح نقطة جوهرية فورًا: دوال المؤشر الأربعة التي تقود قرار الاختراق — GetEntrySignal() وGetExitSignal() وGetIndicatorStopLoss() وGetIndicatorTakeProfit() — هي عناصر نائبة (placeholders) تُعيد على التوالي SIGNAL_NONE وfalse و0.0. كما هو منشور، لن يفتح المستشار Expert Advisor أي صفقة من تلقاء نفسه. ما يُقدّمه الملف بتفصيل كبير هو البنية التحتية المحيطة التي يحتاجها أي إشارة اختراق لكي تكون قابلة للتداول على حساب حقيقي: سلّم وقف خسارة ثابت، وقف متابع (trailing) متدرّج، نقل إلى نقطة التعادل، قفل ربح ديناميكي متدرّج، إغلاق قسري في نهاية اليوم، بوابة أخبار Forex Factory، ساعة بثلاث فتحات للجلسات، كاشف لفارق توقيت غرينتش، حاكم لتراجع الحساب، تهدئة بعد خسائر متتالية، سقف رأسمال مع أرضية، محاسبة ربح/خسارة يومي وأسبوعي، وإرسال أوامر مع تحقق مسبق من الهامش وإعادة محاولة ثلاث مرات. يعد الوصف في رأس الملف باختراق قناة دونشيان لزوج XAUUSD على الإطار M5؛ ووقت التشغيل يُسلّم كل جزء من هذا الوعد باستثناء حساب قناة السعر نفسه، المُترك للمطوّر ليستكمله.
محرك إدارة الصفقات هو قلب هذا المستشار. في كل تيك، بعد اجتياز الشروط الأوّلية (التداول مسموح، المستشار غير متوقف)، تقوم HandleSessionAndTimeManagement() بالمرور على فتحات الجلسات الثلاث، وتضبط minutes_until_session_end وأعلام الإيقاف المؤقت/الإغلاق القسري، ثم إما تسمح بالمتابعة وإما تُرجع false لإيقاف الدورة. عندما يُسمح بالتداول، تمر ManageOpenPositions() على كل صفقة لها ماجيك يساوي InpMagicNumber=22202020 والرمز يساوي _Symbol، ثم تسلسل ManageSLTP() ← ManageTrailingAndBreakeven() ← ManageProfitLock() ← ManageTimeBasedExit() ← ManageSignalBasedExit(). كل من هذه الدوال المساعدة هو غلاف رقيق حول دوال العمل الحقيقية: ApplyHardSL_TP_IfNotSet() تحاول أولًا خطافات المؤشر للوقف والهدف (التي تُعيد 0.0)، ثم تعود إلى InpHardSL_Points=50 للوقف وInpFixedTP_Points=100 للهدف. تُفعَّل ApplyTrailingStop() بمجرد تحرّك السعر بمقدار InpTrailingStop_Points=20 نقطة في الربح، ولا تُحرّك الوقف إلا بدرجات 5 نقاط. تنقل ApplyBreakEven() الوقف إلى سعر الدخول زائد InpBreakEvenLockPoints=2 بمجرد أن يصل الربح إلى InpBreakEvenTriggerPoints=30. تكون ApplyProfitLock() معطّلة افتراضيًا (InpUseProfitLock=false)، لكن عند تفعيلها تسحب الوقف كل InpProfitLockStepPoints=20 نقطة ربح إضافية، وتقف على بعد InpProfitLockSecurePoints=10 نقطة من السعر. CheckTimeBasedSL() معطّلة أيضًا (InpUseTimeBasedSL=false)؛ وعند تفعيلها بـInpTimeBasedSLMinutes=120 فإنها تُغلق أي صفقة تجاوز عمرها ساعتين بصرف النظر عن الربح.
جانب الدخول هو الجانب غير الاعتيادي في هذا المستشار. تستدعي ProcessSignalAndOpenTrade() الدالة GetEntrySignal() مرة في كل تيك وتخرج إذا كان العائد SIGNAL_NONE — وهو العائد الوحيد الممكن من الملف المنشور. تحسب OpenTradeWithSignal() بعدئذ حجم اللوت عبر CalculateLotSize() (ثابت InpLotSize=0.01 افتراضيًا، أو تلقائي التحجيم حيث InpAutoLot_Increment=0.01 لكل InpAutoLot_CapitalPerIncrement=1000 من الإكويتي، مقيّدًا بين InpAutoLot_MinAllowedLot=0.01 وInpAutoLot_MaxAllowedLot=10.0)، وتبني الوقف والهدف من خطافات المؤشر، وتُمرّر الأمر إلى OpenMarketOrder(). تتحقق دالة الأمر من OrderCalcMargin مقابل الهامش الحر، وتطبّق حارس StopsLevel (يتم توسيع الوقف/الهدف إلى StopsLevel + InpMaxSlippage + 1 نقطة إذا كانت المسافة الدنيا لوقف الوسيط ستسبب الرفض)، ثم تُرسل حتى ثلاث محاولات على الرموز TRADE_RETCODE_REQUOTE و_TIMEOUT و_PRICE_OFF و_PRICE_CHANGED، مع نوم 200 مللي ثانية بين المحاولات. بالنسبة لمطوّر يستكمل دوال Get* الأربع برياضيات دونشيان حقيقية، فإن هذا المسار بالكامل جاهز للاستخدام كما هو.
بوابات الأمان متراكبة. قبل قراءة أي إشارة، تشغّل CheckTradeFilters() فحص أخبار Forex Factory (IsForexFactoryNewsEventActive() التي تجلب عبر WebRequest موجز XML من https://nfs.faireconomy.media/ff_calendar_thisweek.xml، وتحلل كتل <event> عبر ParseFFNews()، وتطابق عملة الأساس/الاقتباس — أو الوسم الحرفي ALL — مع نافذة InpNewsBufferMinutes=30؛ تُخزَّن النتائج لمدة 10 دقائق)، ثم IsTradingDayAllowed() (من الإثنين إلى الجمعة افتراضيًا عبر InpTradingDays=TRADING_DAYS_MON_TO_FRI)، ثم IsDrawdownLimitOk() (التي تقارن Balance − Equity بكل من InpMaxDrawdownPercent=20.0% وInpMaxDrawdownAmount=0.0، وفحص المبلغ معطّل). يطبّق بلوك التقسية بعد ذلك سقف رأس المال الاختياري (InpCapAmount=0.0 يعني معطّلًا؛ عند التعيين، يكون رأس المال الفعّال min(cap, equity) ويحدث إيقاف مؤقت قاسي إذا هبط تحت InpCapFloor=1000.0)، وأرضية إكويتي (InpMinEquityPct=70.0 من g_initialBalance)، وحد خسارة يومية محقّقة (InpDailyLossLimitPct=5.0 من الرصيد الأوّلي). تفرض CanOpenNewTrade() بعد ذلك InpOneTradeOnly=true وInpMaxOpenTrades=1، وعدّاد الصفقات اليومي (InpMaxTradesPerDay=5)، وبوابة الفترات بين الصفقات (InpMinBarsBetweenTrades=1)، ووقت الإيقاف المؤقت g_pause_until_time المُعيَّن من UpdateConsecutiveLossesAndPause() بعد InpMaxConsecutiveLosingTrades=3 خسائر متتالية (إيقاف 60 دقيقة عبر InpPauseMinutesAfterLosingStreak)، وفحص الربح لكل اتجاه (InpAllowOnlyProfitableAdditions=true يتطلب أن تكون كل صفقة قائمة في نفس الاتجاه رابحة بما لا يقل عن InpMinProfitPerTradeToAdd=5.0 نقاط)، وسقف السبريد (InpMaxSpreadPoints=10). خلف ذلك توجد بوابة جلسة ثانية: عندما يكون InpUseGMTSessions=true، تترجم InActiveSession_EX02020() وقت الخادم إلى توقيت غرينتش عبر DetectGMTOffset_EX02020() (heuristic لأفضل فارق من -12 إلى +12، مع تسجيل نقاط لأيام الأسبوع 1–5 بـ+10 وللساعات 7–21 بـ+5) ولا تسمح بالتداول إلا إذا وقعت ساعة غرينتش في InpLondonStartGMT=7..InpLondonEndGMT=16 أو InpNewYorkStartGMT=12..InpNewYorkEndGMT=21.
رياضيات توجيه الأحجام جديرة بالفهم. تُرجع CalculateLotSize() الحجم الثابت InpLotSize=0.01 عندما يكون InpLotSizingMethod=LOT_FIXED؛ وعند التبديل إلى LOT_AUTO_SCALED، تختار account.Balance() أو account.Equity() بحسب InpAutoLotBaseType (افتراضي BASE_ACCOUNT_EQUITY)، وتقسم على InpAutoLot_CapitalPerIncrement=1000، وتضرب في InpAutoLot_Increment=0.01، وتقيّد بين النافذة [InpAutoLot_MinAllowedLot, InpAutoLot_MaxAllowedLot]. تُقرَّب النتيجة بعد ذلك إلى LotsStep للوسيط، وتُقيَّد مرة أخرى بين LotsMin وLotsMax للوسيط، وتُرفض مع سجل خطأ إذا انتهت تحت LotsMin. تتابع OnTradeTransaction() الربح/الخسارة المحقّقة لكل صفقة مُغلقة للماجيك، وتزيد g_realizedToday وg_realizedWeek، وتغذّي ربح/خسارة الإغلاق إلى UpdateConsecutiveLossesAndPause() لمنطق الإيقاف المؤقت. تُرجع OnTester() المخصصة قيمة profit × profitFactor / maxDD عندما يكون عدد الصفقات 10 على الأقل، وإلا فصفرًا — وهي درجة لياقة أحادية الرقم لمُحسِّن MT5.
الملخص الصادق: يُعامَل Pipsgrowth EX02020 بأفضل صورة كقشرة قابلة للتخصيص للاختراقات. هو مكتمل الميزات من جانب الإدارة — كل معامل يريده متداول جاد لزوج XAUUSD لأغراض الوقف والخروج الزمني والأخبار والجلسات وتراجع الحساب وحماية رأس المال موجود ومعروض كـinput. أما جانب الإشارة، فهو خطاف للمطوّر. كل من يخطط لتشغيل هذا على حساب حي يحتاج إما إلى استبدال دوال Get* الأربع بمنطق دونشيان (أو اختراق آخر) حقيقي، أو إلى توصيلها باستدعاءات iCustom أو iHighest أو iLowest على القناة التي يختارها. متى اكتمل ذلك، يصبح بقية الملف جاهزًا للعمل وتمثّل القيم الافتراضية المنشورة نقطة بداية معقولة: لوت 0.01 دولار، وقف 50 نقطة، هدف 100 نقطة، trailing 20/5، تعادل 30/2، إيقاف 60 دقيقة بعد 3 خسائر، حد خسارة يومية 5%، حاكم تراجُع 20%، ونوافذ جلستي لندن ونيويورك. تنشر Pipsgrowth المصدر بالكامل بحيث يستطيع مطوّر MQL5 كفء قراءة الخطافات النائبة، وإسقاط رياضيات الاختراق الخاصة به، وشحن مستشار عامل في فترة قصيرة.
تفاصيل الاستراتيجية
المصدر المنشور هو قشرة إدارة صفقات. تبدأ كل تيك بـCheckInitialConditions() (التداول مسموح، المستشار غير متوقف)، ثم تمشي HandleSessionAndTimeManagement() على فتحات الجلسات الثلاث ونوافذ الإغلاق القسري، وتمرّ ManageOpenPositions() على وقف/هدف ← trailing/تعادل ← قفل ربح ← وقف زمني ← خروج إشاري لكل صفقة ماجيكها 22202020. تشغّل CheckTradeFilters() بعد ذلك بوابة أخبار Forex Factory (مُخزَّنة 10 دقائق، مع نافذة InpNewsBufferMinutes=30 حول الحدث)، وقناع أيام التداول، وحاكم التراجُع، والإيقاف المؤقت بعد الخسائر المتتالية، وسقف الصفقات اليومي، ومرشح ربحية كل اتجاه، وسقف السبريد. إذا كان كل شيء أخضر، تستدعي ProcessSignalAndOpenTrade() الدالة GetEntrySignal() — ولأنها تُعيد SIGNAL_NONE في الملف المنشور، يبقى المستشار خاملًا حتى يستكمل المطوّر خطافات Get* الأربع برياضيات اختراق حقيقية. تنفيذ الأوامر متين: تحقق مسبق من OrderCalcMargin، وحارس StopsLevel، وحلقة 3 محاولات بفاصل 200 مللي ثانية على requote/timeout/price-off/price-changed. تراكم OnTradeTransaction() الربح/الخسارة المحقّقة اليومية والأسبوعية وتدفع منطق InpMaxConsecutiveLosingTrades=3 ← إيقاف 60 دقيقة. تُرجع OnTester() قيمة profit × profitFactor / maxDD لمُحسِّن MT5 (صفر عندما يكون عدد الصفقات أقل من 10).
يعتمد الدخول على خطاف GetEntrySignal() في كل تيك. في المصدر المنشور، هذه الدالة عنصر نائب يُعيد SIGNAL_NONE، فلا تُرسَل أي أوامر حتى يستبدلها المطوّر بحساب اختراق دونشيان (أو غيره) حقيقي. يوثّق الملف السلوك المقصود — دخول اخترااقات قناة لزوج XAUUSD على M5 بطبقات التأكيد والنظام والمخاطر كاملة — لكن رياضيات قناة السعر نفسها متروكة للمُنفّذ.
تُدار الخروج حصريًا من خلال سلسلة إدارة الصفقات، لأن GetExitSignal() عنصر نائب أيضًا. يمر المسار على ApplyHardSL_TP_IfNotSet() (وقف ثابت 50 نقطة، هدف 100 نقطة افتراضيًا)، وApplyTrailingStop() (تُحرّك الوقف بدرجات 5 نقاط بمجرد تحرّك السعر 20 نقطة في الربح)، وApplyBreakEven() (تنقل الوقف إلى الدخول + 2 نقطة عند 30 نقطة ربح)، وApplyProfitLock() (معطّلة افتراضيًا؛ عند تفعيلها تقف على بعد 10 نقاط من السعر وتتقدّم كل 20 نقطة)، وCheckTimeBasedSL() (معطّلة افتراضيًا؛ تُغلق أي صفقة تجاوز عمرها 120 دقيقة)، وManageSignalBasedExit() (التي ستحترم خروج مؤشر مستقبلي).
وقف الصفقة الواحدة هو InpHardSL_Points=50 (5 نقاط على وسيط XAUUSD من 5 أرقام)، يُعيَّن في ApplyHardSL_TP_IfNotSet(). ينتقل إلى نقطة التعادل عند 30 نقطة ربح ويُثبّت نقطتين (InpBreakEvenTriggerPoints=30 وInpBreakEvenLockPoints=2). يوجد خيار وقف قائم على ATR عبر InpUseATRStop=false مع InpATR_SL_Period=14 وInpATR_SL_Multiplier=2.0، لكن خطاف المؤشر الذي سيُغذّيه يُعيد حاليًا 0.0. الوقف على مستوى المحفظة هو حاكم تراجُع 20% (InpMaxDrawdownPercent=20.0) يُوقف جميع الدخول الجديدة عندما يصل Balance − Equity إلى هذا الحد.
هدف الصفقة الواحدة هو InpFixedTP_Points=100 (10 نقاط على وسيط XAUUSD من 5 أرقام)، ما يعطي نسبة مخاطرة إلى عائد 1:2 افتراضيًا مقابل الوقف الثابت 50 نقطة. لا يوجد تحجيم ديناميكي للهدف — GetIndicatorTakeProfit() عنصر نائب يُعيد 0.0. توجد دالة إغلاق جزئي (TryClosePartial_EX02020) في المصدر بحلقة 3 محاولات بفاصل 200 مللي ثانية، جاهزة للتوصيل بمسار الدخول متى نُفّذت طبقة الإشارة.
الحد الأدنى الموصى به للرصيد: 100 دولار (يتحقق المصدر من ذلك مقابل mySymbol.LotsMin() × الحجم الثابت InpLotSize=0.01). المستشار مبني خصيصًا لزوج XAUUSD على الإطار M5 — الماجيك 22202020، وسم التعليق Psgrowth.com Expert_02020، والقيم الافتراضية للوقف/الهدف (50/100 نقطة) مُعدّة للذهب على وسيط من 5 أرقام. شغّله على حساب ECN أو RAW منخفض السبريد (سقف السبريد InpMaxSpreadPoints=10 سيرفض معظم عروض صانعي السوق على الذهب) وخلال جلستي لندن ونيويورك (بوابتا غرينتش 07–16 و12–21 تتطابقان مع أعمق سيولة الذهب).
منطق الاستراتيجية
Pipsgrowth EX02020 Breakout — تحليل منطق الاستراتيجية (من كود .mq5)
العائلة: Breakout
الماجيك: 22202020
الإصدار: 2.00
الوصف:
Advanced Donchian channel breakout EA with comprehensive money management, session control, smart exit timing, and multi-indicator confirmation for XAUUSD. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
المؤشرات:
- مؤشرات قياسية
الدوال الرئيسية:
StringToTime()Log()ParseFFDateTime()ExtractTag()ParseFFNews()InitializeTradeObjects()ResetStateVariables()ValidateInputParameters()ValidateLotSettings()ValidateRiskSettings()
// Pipsgrowth EX02020 Breakout — Execution Flow (from source analysis)
// Family: Breakout
// Advanced Donchian channel breakout EA with comprehensive money management, session control, smart exit timing, and multi-indicator confirmation for XAUUSD. 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)ملف التحسين
كيفية تثبيت الإكسبرت على MT5
- 1حمّل ملف .mq5 بالضغط على زر التحميل أعلاه
- 2افتح برنامج MetaTrader 5 على حاسوبك
- 3من القائمة العلوية اختر File → Open Data Folder
- 4انتقل إلى مجلد MQL5 → Experts والصق الملف هناك
- 5في MT5، انقر بالزر الأيمن على Expert Advisors في لوحة Navigator → Refresh
- 6اسحب الإكسبرت على رسم H1 أو H4
- 7حدد فترة رصد النطاق وهامش الاختراق وحجم اللوت في نافذة الإعدادات
- 8فعّل Allow Algo Trading واضغط OK
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| InpNewYorkEndGMT | 21 | --- Hardening: Capital Protection --- |
| InpCapAmount | 0.0 | Capital cap amount (0=disabled) |
| InpLotSize | 0.01 | Fixed Lot Size (if LotSizingMethod is LOT_FIXED) |
| InpMagicNumber | 22202020 | Magic Number for orders (unique identifier for this EA) |
| InpTradeComment | "Psgrowth.com Expert_02020" | Trade Comment |
| InpMaxSlippage | 5 | Slippage in points (max allowed price deviation) |
| InpMaxSpreadPoints | 10 | Maximum allowed spread in points (0 for no check) |
| InpOneTradeOnly | true | Allow only one trade at a time (per symbol for this EA) |
| InpMaxOpenTrades | 1 | Maximum allowed open trades at the same time |
| InpAllowOnlyProfitableAdditions | true | Only open new trades if all existing (by this EA) are in profit |
| InpMinProfitPerTradeToAdd | 5.0 | Min. profit in points for each existing trade to open new one |
| InpMaxDrawdownPercent | 20.0 | Max drawdown % allowed (0 to disable) |
| InpMaxDrawdownAmount | 0.0 | Max drawdown amount in account currency (0 to disable) |
| InpMaxTradesPerDay | 5 | Max trades per day (0 for unlimited) |
| InpMinBarsBetweenTrades | 1 | Min bars between opening new trades |
| InpMaxConsecutiveLosingTrades | 3 | Pause trading after this many consecutive losses (0 to disable) |
| InpPauseMinutesAfterLosingStreak | 60 | Minutes to pause after reaching losing streak |
| InpAvoidTradingDuringNews | false | Avoid trading during news events |
| InpNewsBufferMinutes | 30 | Minutes before and after news to avoid trading |
| InpAvoidTradingDuringHighImpactNews | true | Avoid high impact news |
| InpAvoidTradingDuringMediumImpactNews | false | Avoid medium impact news |
| InpAvoidTradingDuringLowImpactNews | false | Avoid low impact news |
| InpNewsTimeZoneOffsetHours | 0 | Offset in hours from UTC (e.g., 2 for UTC+2, -5 for UTC-5) |
| InpNewsSource | NEWS_SOURCE_FOREX_FACTORY | News source for news filtering |
| InpLotSizingMethod | LOT_FIXED | Lot Sizing Method |
| InpAutoLotBaseType | BASE_ACCOUNT_EQUITY | Capital base for auto lot calculation |
| InpAutoLot_Increment | 0.01 | Lot size to add (e.g., 0.01) |
| InpAutoLot_CapitalPerIncrement | 1000 | For every X amount of capital |
| InpAutoLot_MaxAllowedLot | 10.0 | Maximum lot size allowed by auto calculation |
| InpAutoLot_MinAllowedLot | 0.01 | Minimum lot size allowed by auto calculation |
| InpOrderType | ORDER_TYPE_BUY_SELL | Order type |
| InpUseHardSL | true | Enable Hard Stop Loss |
| InpHardSL_Points | 50 | Fixed Stop Loss in points (0 to disable) |
| InpUseTrailingStop | true | Enable Trailing Stop |
| InpTrailingStop_Points | 20 | Trailing Stop activation in points of profit |
| InpTrailingStep_Points | 5 | Trailing Stop step in points |
| InpUseATRStop | false | Use ATR-based stop loss (Placeholder for indicator logic) |
| InpATR_SL_Period | 14 | ATR period for SL calculation |
| InpATR_SL_Multiplier | 2.0 | ATR multiplier for SL |
| InpMoveSLToBreakEven | true | Move SL to breakeven after X points |
| InpBreakEvenTriggerPoints | 30 | Points in profit to trigger breakeven move |
| InpBreakEvenLockPoints | 2 | Lock X points profit at breakeven (e.g., entry + 2 points) |
| InpUseTimeBasedSL | false | Close trade after X minutes |
| InpTimeBasedSLMinutes | 120 | Minutes before time-based SL triggers |
| InpFixedTP_Points | 100 | Fixed Take Profit in points (0 to disable) |
| InpUseProfitLock | false | Enable dynamic profit locking |
| InpProfitLockTriggerPoints | 50 | Start locking profit after this many points in profit |
| InpProfitLockStepPoints | 20 | Move SL every X points further in profit (after trigger) |
| InpProfitLockSecurePoints | 10 | How many points behind current price to lock (e.g., if price moves 20, SL moves to current - 10) |
| InpProfitLockOnlyAfterBE | true | Only start profit lock after breakeven is reached |
| InpEnableSessionControl | false | Enable sessions control |
| InpEnableSession1 | true | Enable session 1 |
| InpSession1Start | "08:00" | Session 1 start time (HH:MM server time) |
| InpSession1End | "16:00" | Session 1 end time (HH:MM server time) |
| InpEnableSession2 | false | Enable session 2 |
| InpSession2Start | "18:00" | Session 2 start time (HH:MM server time) |
| InpSession2End | "22:00" | Session 2 end time (HH:MM server time) |
| InpEnableSession3 | false | Enable session 3 |
| InpSession3Start | "00:00" | Session 3 start time (HH:MM server time) |
| InpSession3End | "00:00" | Session 3 end time (HH:MM server time) |
| InpPauseBeforeEndOfSession | true | Stop opening new trades before end of active session |
| InpPauseMinutesBeforeEndOfSession | 30 | Minutes before end of session to pause new trades |
| InpForceCloseAllTradesAtSessionEnd | false | Force close all trades at the end of an active session |
| InpForceCloseMinutesBeforeSessionEnd | 5 | Minutes before session end to force close |
| InpCloseAllTradesAtEndOfDay | false | Close all trades at specific EOD time |
| InpEndOfDayCloseTime | "23:50" | EOD time to close all trades (HH:MM server time) |
| InpEnableSmartExitManagement | false | Enable Smart Exit Management (currently simplified) |
| InpSmartExitStartMinutesBeforeSessionEnd | 60 | When to start "smartly" managing (e.g., no new trades, check for early profitable close) |
| InpEnableAlerts | true | Enable Terminal Alerts for important events |
| InpEnableEmailNotify | false | Enable Email Notifications |
| InpEnablePushNotify | false | Enable Push Notifications |
| InpLogTradeEvents | true | Log trade open/close/modify events |
| InpLogTickEvents | false | Log detailed tick processing (for debugging, can be verbose) |
| InpTradingDays | TRADING_DAYS_MON_TO_FRI | Days to allow trading |
| InpTradeMonday | true | Trade on Monday |
| InpTradeTuesday | true | Trade on Tuesday |
| InpTradeWednesday | true | Trade on Wednesday |
| InpTradeThursday | true | Trade on Thursday |
| InpTradeFriday | true | Trade on Friday |
| InpTradeSaturday | false | Trade on Saturday |
| InpTradeSunday | false | Trade on Sunday |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX02020 AdvancedDonchianEA_copy — Advanced Donchian breakout with multi-indicator confirmation, full 12-layer stack."
#include <Trade/Trade.mqh>
#include <Trade/AccountInfo.mqh>
#include <Trade/SymbolInfo.mqh>
// --- Global Variables ---
CTrade trade; // Trade object for order execution
CAccountInfo account; // Account info object for balance, equity, etc.
CSymbolInfo mySymbol; // Symbol info object for spread, lot size, etc.
// EA State Variables
long g_last_trade_bar_time = 0; // Time of last trade (for min bars between trades)
int g_consecutive_losses = 0; // Counter for consecutive losing trades
datetime g_pause_until_time = 0; // Time until which trading is paused after loss streak
int g_daily_trades_count = 0; // Number of trades opened today
datetime g_last_daily_trades_reset_time = 0; // Last reset time for daily trades count
//--- Hardening Globals
int g_gmtOffset = 3;
double g_initialBalance = 0.0;
double g_realizedToday = 0.0;
double g_realizedWeek = 0.0;
datetime g_dayStartTime = 0;
datetime g_weekStartTime = 0;
// --- Hardening: GMT Session Filter ---
input group "=== GMT Session Filter (Hardening) ===";
input bool InpUseGMTSessions = false;
input int InpLondonStartGMT = 7;
input int InpLondonEndGMT = 16;
input int InpNewYorkStartGMT = 12;
input int InpNewYorkEndGMT = 21;
// --- Hardening: Capital Protection ---
input group "=== Capital Protection (Hardening) ===";
// InpCapEnabled removed — use InpCapAmount=0 to disable
input double InpCapAmount = 0.0; // Capital cap amount (0=disabled)
input double InpCapFloor = 1000.0;
input double InpMinEquityPct = 70.0;
input double InpDailyLossLimitPct = 5.0;
string g_cached_news_xml = "";
datetime g_last_news_fetch_time = 0;
int g_news_cache_minutes = 10; // Cache for 10 minutes
// --- Input Parameters ---
//--- Trade Settings
input group "=== Trade Settings ==="
input double InpLotSize = 0.01; // Fixed Lot Size (if LotSizingMethod is LOT_FIXED)
input ulong InpMagicNumber = 22202020; // Magic Number for orders (unique identifier for this EA)
input string InpTradeComment = "Psgrowth.com Expert_02020"; // Trade Comment
input int InpMaxSlippage = 5; // Slippage in points (max allowed price deviation)
input int InpMaxSpreadPoints = 10; // Maximum allowed spread in points (0 for no check)
input bool InpOneTradeOnly = true; // Allow only one trade at a time (per symbol for this EA)
input int InpMaxOpenTrades = 1; // Maximum allowed open trades at the same time
الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على MT5 — استخدم وسيطاً موثوقاً بتنفيذ سريع وسبريد منخفض
إكسبرتات مشابهة
عرض جميع الإكسبرتاتإكسبرتات أخرى بنفس استراتيجية الاختراق
Pipsgrowth EX02026 Breakout — إكسبرت أدفايزر اختراق
Pipsgrowth EX02026 Breakout — Donchian Channel breakout EA for XAUUSD M5 with RSI confirmation, average-speed filter, session filtering, trailing stop. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX02001 Breakout — إكسبرت أدفايزر اختراق
Pipsgrowth EX02001 Breakout — Fractal Donchian high/low breakout on closed bar with RSI extreme filter. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX02027 Breakout — إكسبرت أدفايزر اختراق
Pipsgrowth EX02027 Breakout — Multi-symbol VWAP+KAMA Donchian/SuperTrend scalper with ADX regime switching between mean-reversion and breakout modes, . إكسبرت أدفايزر MT5 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.