P
PipsGrowth
الاختراقمفتوح المصدر - مجاني

Pipsgrowth EX02022 Breakout — إكسبرت أدفايزر اختراق

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

Pipsgrowth EX02022 Breakout — Donchian channel breakout strategy for XAUUSD M5 with ATR-based sizing, profit lock trailing, safe pyramiding, and sprea. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

Pipsgrowth EX02022 Breakout هو إكسبرت اختراق يعتمد على قناة دونشيان بحتة، ومُصمم للذهب XAUUSD على الإطار الزمني M5. يُشغّل خط إشارة بسيطًا عن قصد: إغلاق الشمعة السابقة فوق أعلى قمة للنطاق الأخير المكوّن من N شمعة يُطلق شراءً، والإغلاق تحت أدنى قاع يُطلق بيعًا. لا يحتوي الكود على فلتر ADX، ولا بوابة اتجاه للإطار الزمني الأعلى، ولا اختبار قوة لجسم الشمعة/المدى، ولا مصنف حالة للسوق. يُفترض أن تأتي الميزة من كيفية إدارة الإكسبرت للحجم والوقف المتحرك والهرْم وحماية رأس المال، وليس من فلترة مدخلات قوية.

تُبنى القناة داخل دالة CheckSignal() من خلال المرور على الشموع السابقة من 1 إلى InpPeriod وتتبع أعلى قمة قيد التشغيل وأدنى قاع قيد التشغيل. مع الإعداد الافتراضي InpPeriod = 20، يراقب الإكسبرت أعلى قمة وأدنى قاع لأحدث 20 شمعة M5 مغلقة، وهو ما يمثل تقريبًا 100 دقيقة من حركة السعر على الذهب. يُطلَق الشراء عندما يُغلق Close[1] فوق تلك القمة، ويُطلَق البيع عندما يُغلق Close[1] تحت ذلك القاع. يعمل القرار مرة واحدة لكل شمعة جديدة (حارس lastBar في OnTick())، لذا يكون تقييم الإشارة مستقرًا ولن تُرسَل أوامر متكررة داخل الشمعة الواحدة.

الإعدادات الافتراضية للمخاطرة أكثر جرأة بشكل ملحوظ مقارنةً بباقي عائلة EX02. InpRiskPercent = 1.0% من رصيد الحساب لكل صفقة (الإكسبرتس الأخرى في هذه العائلة تستخدم 0.5% افتراضيًا)، وInpStopLoss = 400 نقطة بينما InpTakeProfit = 1200 نقطة — أي نسبة مخاطرة إلى عائد ثابتة 1:3 محفورة في تذكرة الأمر، وليست مضاعفًا لـ ATR. يمر مسار تحديد حجم اللوت عبر CalculateLotSize() التي تقسّم balance * riskPercent / 100 على المخاطرة لكل لوت المفترضة من وقف الـ 400 نقطة، وتُقرِّب النتيجة نزولًا إلى LotsStep() للرمز، وتُقيّدها بين LotsMin() وLotsMax(). إذا ضبط المستخدم InpRiskPercent = 0، يتراجع الإكسبرت إلى InpFixedLot = 0.01.

منطق إعادة محاولة الأمر الواحد قوي: تتحقق OpenBuy() وOpenSell() أولًا من الهامش الحر عبر OrderCalcMargin()، ثم تحاول trade.Buy() / trade.Sell() حتى ثلاث مرات بفاصل 200 مللي ثانية بين المحاولات، مع تحديث Ask/Bid بين المحاولات، والخروج على أي كود رد غير قابل للاسترداد. تُفرض التعبئة على FOK عبر trade.SetTypeFilling(ORDER_FILLING_FOK). بعد دخول الأمر، يعمل نفس النمط المت aware برموز الرد في TryModify_EX02022() لتحديثات الوقف المتحرك، أيضًا بفاصل 200 مللي ثانية.

الهرْم (البناء التدريجي) هو الميزة الأبرز في هذا الإكسبرت. مع InpEnablePyramid = true (الافتراضي) وInpMaxPositions = 3، يستطيع الإكسبرت تكديس ما يصل إلى ثلاث صفقات شراء أو ثلاث صفقات بيع في الاتجاه نفسه، ولكن فقط إذا كانت الصفقة القائمة رابحة بمقدار InpMinProfitPoints = 250 نقطة على الأقل. تُفرض هذه البوابة في IsGridSafe() التي تمر على الصفقات المفتوحة لهذا الرمز وهذا الرقم السحري وتُرجع false إذا كانت أيٌّ منها تحت العتبة. النتيجة أن الإكسبرت يضيف إلى صفقة تعمل بالفعل في صالح المتداول فقط — لا يُعدّل المتوسط نزولًا في الخاسر، ولا يهرْم أسرع من كل 250 نقطة (≈ 2.50 دولار على لوت 0.01 من XAUUSD) من الحركة لصالح الصفقة القائمة. هذا هو قرار إدارة المخاطر المركزي في الإكسبرت: دخول بنسبة عائد إلى مخاطرة 1:3 مع صفقة واحدة، قابل للتوسيع إلى كومة من ثلاث صفقات عند تأكيدات الاختراق.

منطق الوقف المتحرك في ManageProfitLock() هو سنكلافتي مسنن تقليدي بمسافة ثابتة. بمجرد أن يتحرك السعر بمقدار InpTrailStart = 300 نقطة في الربح على الصفقة، يضع الإكسبرت الوقف الجديد عند Bid - InpTrailDistance = Bid - 150 نقطة للشراء (والعكس للبيع). السنكلافتي لا يُحرّك الوقف إلا أقرب إلى السعر — لا يوسّعه أبدًا. يعمل الفحص في كل تكة، لذا يُحدَّث الوقف عند كل تغير في السعر بعد تجاوز عتبة التفعيل، بدون فجوة خطوة أدنى. مع الإعدادات الافتراضية 300/150، يتفعّل التريل عند 3.00 دولار من الحركة ويقفل على بُعد 1.50 دولار خلف السعر، وهو ما يترك هامشًا مريحًا لتذبذب الذهب على M5.

تُنفَّذ بوابة عدم التداول كدالة واحدة IsSafeToTrade_EX02022() تُرجع false في أي من الحالات التالية: السوق مغلق (السبت، الأحد، أو قطع الجمعة الساعة 22:00)، فلتر الجلسة غير نشط (لا يُفحص إلا عندما InpUseGMTSessions = true، وهو متوقف افتراضيًا)، حدث إخباري عالي التأثير في حدود ±30 دقيقة (InpFilterNews = true افتراضي، يتم الاستعلام عبر CalendarValueHistory() لبلد الرمز)، equity أقل من 70% من الرصيد الأولي، تم تنفيذ 10 صفقات أو أكثر اليوم، أو تهدئة نشطة بعد 5 خسائر متتالية، أو خسارة يومية محققة تساوي أو تتجاوز InpDailyLossPct = 5% من الرصيد الأولي. التهدئة نفسها منفّذة في OnTradeTransaction()، وهي المكان الوحيد في الإكسبرت الذي يُحدّث عدّادات g_realizedToday/g_realizedWeek التراكمية وخط الخسارة g_consecLosses؛ الوصول إلى 5 على التوالي يضبط g_cooldownUntil = TimeCurrent() + 4 ساعات.

فلتر الجلسة، عند تفعيله، مضبوط على لندن 7-16 توقيت جرينتش ونيويورك 12-21 توقيت جرينتش (الإعداد الافتراضي InpNewYorkEndGMT = 21 هو المُدخل الظاهر الوحيد في نهاية مجموعة GMT لأن البقية تستخدم تصريحات input حرفية داخل الجسم بدلًا من أعلى الملف — تفصيل بسيط في هذا المصدر). عندما يكون InpUseGMTSessions = false، وهو الإعداد الافتراضي، يتم تجاوز بوابة الجلسة تمامًا ويُطلِق الإكسبرت على إشارة نظيفة في أي وقت يكون فيه السوق مفتوحًا. يتم اكتشاف فارق توقيت جرينتش المستخدم في فحوصات الجلسة وفتح السوق تلقائيًا عبر DetectGMTOffset_EX02022() من خلال بحث شامل على الفروق -12..+12، واختيار الفارق الذي يناسب يوم الأسبوع 1-5 والساعة 7-21 بشكل أفضل، مع افتراض +3 إذا لم يحرز أي مرشح آخر درجة أعلى.

خاصية تقييد رأس المال مشحونة معطّلة: InpCapAmount = 0.0 يعني أن الإكسبرت يعامل كامل رصيد الحساب كرأس مال فعلي لتحديد الحجم. ضبطه على قيمة موجبة (الإدخال يتوقع مبلغًا بالدولار) يحدّ من equity التي «يراها» الإكسبرت عند min(balance, InpCapAmount)، وInpCapFloor = 1000 يفرض حدًا أدنى لرأس المال الفعلي قبل السماح بالتداول. هذا مخصص للمستخدمين الذين يريدون تشغيل جزء صغير من حساباتهم عبر الإكسبرت دون إعادة كتابة نسبة المخاطرة.

دالة لياقة المحسّن المخصصة OnTester() هي profit * profitFactor / maxDD، مع حارسين: profitFactor يُقيَّد في النطاق 0.001-1000، والدالة تُرجع 0 إذا كانت هناك أقل من 10 صفقات في الاختبار (وهو أكثر تساهلًا بكثير من بوابة >=30 التي تستخدمها إكسبرتس أخرى في هذه العائلة). لذلك سيُفضّل المُحسّن مجموعات المعلمات ذات صافي ربح موجب، ومعامل ربح أعلى من 1، وأقصى تراجع منخفض، لكنه لن يرفض اختبارًا بعدد صفقات منخفض بشكل قاطع — وهو أمر مفيد لمرور سريع للتحسين في الجولة الأولى.

عمليًا، هذا الإكسبرت مخصص للمتداول المرتاح مع دخول اختراق غير مفلتر بشدة على الذهب ويريد أن تقوم إدارة الصفقات بالجهد الأكبر. ملف المخاطرة متوسط: صفقة واحدة بنسبة مخاطرة 1% مع وقف 400 نقطة، قابلة للتوسيع إلى ثلاث صفقات عندما يمتد الاختراق، ووقف متحرك 150 نقطة يقفل بعد 300 نقطة. ملف الوسيط الموصى به هو وسيط يستطيع تنفيذ أوامر 0.01 لوت على XAUUSD بزلاقة معقولة تحت سقف سبريد 250 نقطة (2.50 دولار)، وحساب ECN/RAW لأفضل جودة تعبئة، ووقت خادم متوافق مع GMT +2/+3 حتى يكون الفارق المكتشف تلقائيًا متسقًا مع فلتر الجلسة. يعمل الإكسبرت في كل تكة لحلقة إدارة الصفقات، لذا يجب أن يكون لدى المضيف اتصال منخفض الكمون بالوسيط لتجنب سيناريوهات الوقف المتقادم أثناء ارتفاعات الذهب السريعة.

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

يمر مسار OnTick() في الإكسبرت بثلاث routines مستقلة بالترتيب: فلتر مسبق للسبريد (يحذف التكة فورًا إذا كان mysymbol.Spread() > InpMaxSpread = 250 نقطة)، ومدير الوقف المتحرك ManageProfitLock() (الذي يسنن الوقف إلى 150 نقطة خلف السعر بمجرد أن تكون الصفقة رابحة بمقدار 300 نقطة)، وبوابة الأمان IsSafeToTrade_EX02022() (التي تحجب التداول في الأسواق المغلقة، والأخبار عالية التأثير في حدود ±30 دقيقة، وحالة equity أقل من 70% من الرصيد الأولي، وخسارة يومية تساوي أو تتجاوز 5%، وتهدئة الـ 5 خسائر المتتالية لمدة 4 ساعات، وسقف الـ 10 صفقات في اليوم). تعمل الإشارة نفسها فقط عند إغلاق الشمعة عبر حارس lastBar، وتُحسب قناة دونشيان داخل الدالة وتُطلِق OpenBuy() / OpenSell() مع فحص IsGridSafe() المراعي لاتجاه الصفقة لضمان أن أي إضافة لا تُكدَّس إلا على صفقة رابحة بالفعل بمقدار 250 نقطة على الأقل، حتى سقف الـ 3 صفقات.

إشارة الدخول

يُطلَق الدخول للشراء على شمعة M5 مغلقة عندما يُغلق Close[1] فوق أعلى قمة للنطاق السابق المكوّن من 20 شمعة (InpPeriod = 20)؛ ويُطلَق الدخول للبيع على شمعة مغلقة عندما يُغلق Close[1] تحت أدنى قاع لنفس فترة النظر. تُفحص الإشارة مرة واحدة لكل شمعة جديدة (حارس على مستوى التكة في OnTick())، بدون فلتر ADX، ولا فلتر قوة لجسم الشمعة/المدى، ولا بوابة اتجاه للإطار الزمني الأعلى — الدخول هو اختراق قناة سعرية خالص.

إشارة الخروج

تخرج الصفقات بضرب وقف الخسارة الثابت (400 نقطة) أو جني الأرباح (1200 نقطة = نسبة 1:3)، أو بالوقف المتحرك الثابت بمجرد أن يتحرك السعر 300 نقطة لصالح الصفقة (يقفل على بُعد 150 نقطة خلف السعر)، أو بإغلاق خارجي (إغلاق يدوي، استدعاء الهامش). لا يوجد خروج من إشارة معاكسة ولا خروج مرتبط بالوقت في هذا الإكسبرت — المخارج هي وقف الخسارة/جني الأرباح/الوقف المتحرك فقط.

وقف الخسارة

وقف خسارة ثابت 400 نقطة (InpStopLoss = 400) يُرفق بتذكرة الأمر، ويُستخدم كوقف للصفقة وأساس لحساب حجم اللوت في CalculateLotSize(). يُوضع الوقف فورًا عند الدخول ولا يتوسّع أبدًا؛ والوقف المتحرك فقط يقربه من السعر بعد تجاوز عتبة التفعيل البالغة 300 نقطة.

جني الأرباح

جني أرباح ثابت 1200 نقطة (InpTakeProfit = 1200) يُرفق بتذكرة الأمر، مما ينتج نسبة عائد إلى مخاطرة 1:3 مقابل وقف الـ 400 نقطة. لا يوجد منطق إغلاق جزئي ولا تخارج تدريجي — تُغلق الصفقة كاملة عند هدف 1200 نقطة أو عند الوقف المتحرك.

الأنسب لـ

مثالي لإعداد XAUUSD M5 بحد أدنى للإيداع 100 دولار على وسيط ECN/RAW سبريده منخفض يستطيع إبقاء السبريد المعتاد تحت 250 نقطة (2.50 دولار) على الذهب. مع InpRiskPercent = 1% ونسبة 1:3 لكل صفقة، يناسب الإكسبرت المتداول الذي يريد إشارة اختراق قناة سعرية بسيطة مع إدارة صفقات قوية (هرْم ثلاثي) بدلًا من دخول مفلتر بشدة، والذي يرتاح للتداول خلال تداخل جلستي لندن ونيويورك مع فلتر أخبار يستوعب الأحداث عالية التأثير. اضبط InpUseGMTSessions = true إذا كنت تريد تقييد الإكسبرت بتلك الجلستين فقط؛ اتركها false للتداول في أي وقت يكون فيه السوق مفتوحًا.

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

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

العائلة: Breakout الماجيك: 22202022 الإصدار: 2.00

الوصف: Donchian channel breakout strategy for XAUUSD M5 with ATR-based sizing, profit lock trailing, safe pyramiding, and spread filter. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • CheckSignal()
  • OpenBuy()
  • OpenSell()
  • ManageProfitLock()
  • IsGridSafe()
  • CalculateLotSize()
  • CountPositions()
  • DetectGMTOffset_EX02022()
  • ServerToGMT_EX02022()
  • IsMarketOpen_EX02022()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX02022 Breakout — Execution Flow (from source analysis)
// Family: Breakout
// Donchian channel breakout strategy for XAUUSD M5 with ATR-based sizing, profit lock trailing, safe pyramiding, and spread filter. 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
الأطر الزمنية المُحسّنة:
M5

كيفية تثبيت الإكسبرت على 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

معاملات الإكسبرت

المعاملالافتراضيالوصف
InpPeriod20Donchian Period
InpATRPeriod14ATR Period (for sizing)
InpRiskPercent1.0Risk Percent per Trade
InpFixedLot0.01Fixed Lot (if Risk=0)
InpStopLoss400Stop Loss (points)
InpTakeProfit1200Take Profit (points)
InpMagicNumber22202022Magic Number
InpTradeComment"Psgrowth.com Expert_02022"Trade Comment
InpMaxSpread250Max Spread (points)
InpSlippage3Slippage
InpEnableTrailtrueEnable Trailing Stop
InpTrailStart300Trail Start Distance (points)
InpTrailStep100Trail Step (points)
InpTrailDistance150Distance behind price (points)
InpEnablePyramidtrueEnable Pyramiding
InpMaxPositions3Max Open Positions
InpMinProfitPoints250Min Profit (points) to Add Next
InpNewYorkEndGMT21--- Hardening: Capital Protection ---
InpCapAmount0.0Capital cap amount (0=disabled)
InpDailyLossLimitPct5.0--- Hardening: Trade Safety ---
InpNewsBufferMinutes30+------------------------------------------------------------------+
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX02022.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX02022 DonchianBreakout_XAUUSD_5M — Donchian breakout with trailing and pyramiding, full 12-layer stack."
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\AccountInfo.mqh>

CTrade         trade;
CPositionInfo  position;
CSymbolInfo    mysymbol;
CAccountInfo   account;

//--- Input Groups
input group "=== Indicator Settings ==="
input int      InpPeriod         = 20;       // Donchian Period
input int      InpATRPeriod      = 14;       // ATR Period (for sizing)

input group "=== Money Management ==="
input double   InpRiskPercent    = 1.0;      // Risk Percent per Trade
input double   InpFixedLot       = 0.01;     // Fixed Lot (if Risk=0)
input int      InpStopLoss       = 400;      // Stop Loss (points)
input int      InpTakeProfit     = 1200;     // Take Profit (points)

input group "=== Trade Management ==="
input int      InpMagicNumber    = 22202022; // Magic Number
input string   InpTradeComment   = "Psgrowth.com Expert_02022"; // Trade Comment
input int      InpMaxSpread      = 250;      // Max Spread (points)
input int      InpSlippage       = 3;        // Slippage

input group "=== Profit Lock / Trailing ==="
input bool     InpEnableTrail    = true;     // Enable Trailing Stop
input int      InpTrailStart     = 300;      // Trail Start Distance (points)
input int      InpTrailStep      = 100;      // Trail Step (points)
input int      InpTrailDistance  = 150;      // Distance behind price (points)

input group "=== Pyramiding / Scaling ==="
input bool     InpEnablePyramid  = true;     // Enable Pyramiding
input int      InpMaxPositions   = 3;        // Max Open Positions
input int      InpMinProfitPoints= 250;      // Min Profit (points) to Add Next

//--- Handles
int    hATR;

//--- Global Buffers
double bufATR[];

//--- Hardening Globals
int      g_gmtOffset       = 3;
int      g_tradesToday     = 0;
datetime g_dayStartTime    = 0;
double   g_initialBalance  = 0.0;
datetime g_cooldownUntil   = 0;
int      g_consecLosses    = 0;
double   g_realizedToday   = 0.0;
double   g_realizedWeek    = 0.0;
datetime g_weekStartTime   = 0;

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

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

الوسوم:ex02022breakoutpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

اسم الملفPipsgrowth_com_EX02022.mq5
حجم الملف23.3 KB
الإصدارv2.00
PlatformMetaTrader 5
نوع الملف.mq5 Source
الاستراتيجيةالاختراق
المخاطرةمخاطرة متوسطة
الأطر الزمنية
M5
أزواج العملات
XAUUSD
الحد الأدنى للإيداع$100