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

Pipsgrowth EX18004 TrendFollow — إكسبرت أدفايزر إكسبرت أدفايزر

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

Pipsgrowth EX18004 TrendFollow — ADX/DI trend-follow with regime gating — +DI/-DI cross while ADX>threshold on last CLOSED bar, wrapped in ADX+ATR- perce. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

إكسبرت Pipsgrowth EX18004 TrendFollow يصطاد الحركات الاتجاهية على XAUUSD M5 من خلال الجمع بين تقاطع خطوط +DI/-DI لمؤشر ADX على آخر شمعة مغلقة ومصنف نظام السوق المكوّن من سبع حالات، الذي يقوم بتصفية البيئات التي يكون فيها التقاطع أكثر عرضة للفشل. تم بناء الإكسبرت ليعمل بصبر — إذ لا يطلق إشارة جديدة إلا عند إغلاق الشمعة، وبعد أن تؤكد طبقة النظام أن السوق قابل للتداول. في الجلسات الآسيوية الهادئة مع ADX تحت 15 وانحراف معياري ضمن النطاق المسطح، يكتفي الإكسبرت بطباعة الحالة وينتظر.

محرك الإشارة مبني على مؤشر ADX(14) القياسي بثلاث بافرات: خط ADX الرئيسي، +DI، و−DI. المدخل InpADXThreshold (افتراضيًا 25) هو الحد الأدنى؛ فإذا كان ADX دونه، يُتجاهل التقاطع بصرف النظر عن مدى نقاء خط DI. مع تفعيل InpRequireDICross = true، لا يُطلَق الأمر إلا عند تقاطع فعلي لخطوط DI عند إغلاق الشمعة، وليس مجرد تفوق +DI على −DI. إشارة الشراء تُرسَل عندما يعبر +DI فوق −DI مع ADX≥25 وبثقة إشارة 70، وإشارة البيع هي الصورة المعكوسة. إذا عُطّل شرط التقاطع، فإن أي تفوق لـ +DI على −DI فوق عتبة ADX يُسجَّل كثقة 55 فقط.

قبل فتح أي صفقة، تستدعي ClassifyRegime() كلًا من ADX، والنسبة المئوية لـ ATR(14) عبر نافذة 100 شمعة، وعرض بولنجر باند(20, 2.0)، ثم تُسنِد إحدى الحالات السبع: REG_STRONG_TREND، REG_WEAK_TREND، REG_RANGE، REG_COMPRESS، REG_BREAKOUT، REG_CHOPPY، أو REG_NONE. حالتان منها محظورتان تمامًا: REG_CHOPPY (ADX تحت 15) وREG_COMPRESS (ATR تحت النسبة المئوية 40 وعرض بولنجر تحت 50 نقطة). أما الحالات الأربع المتبقية فتمر للمرحلة التالية، كل منها مع درجة ثقة — STRONG_TREND عند 80، BREAKOUT عند 85، WEAK_TREND عند 55، RANGE عند 40. حالتي CHOPPY وCOMPRESS تُسجَّلان في السجل دون إرسال أي أمر.

ثم تنفّذ ConfirmEntry() ثلاث فحوصات إضافية. أولًا، اتفاق الاتجاه على الإطار الزمني الأعلى: إذا كان ADX على H1 أعلى من InpADXThreshold-5 وخطوط DI على H1 تعاكس اتجاه الصفقة، يُرفض الدخول ويُسجَّل السبب HTF против. ثانيًا، فلتر RSI(14) بنقطة المنتصف يرفض إشارات الشراء تحت 50 وإشارات البيع فوق 50. ثالثًا، يجب أن يكون الفارق السعري دون InpMaxSpreadPts (300 نقطة = 30 نقطة لـ XAUUSD)، وأن تتجاوز نسبة المخاطرة إلى العائد المحسوبة 1.0 (افتراضيًا TP-mult / SL-mult = 4.0/2.0 = 2.0).

يُحسب وقف الخسارة من ATR(14) × InpATRSLmult (افتراضيًا 2.0×)، ثم يُمرَّر عبر EnforceStopsLevel() لرفع المسافة فوق الحد الأدنى لإيقاف الوسيط مع إضافة 5 نقاط عازلة. وقف جني الأرباح هو ضعف مسافة وقف الخسارة (TP = SL × InpATRTPmult/InpATRSLmult)، أي نسبة 1:2 افتراضيًا. حساب حجم اللوت قائم على المخاطرة: CalcLot() تقسم g_effectiveCapital × InpRiskPercent% (افتراضيًا 0.5% من الرصيد، أو يُقتَص بـ InpCapAmount إن كان مُفعّلًا) على مخاطرة اللوت عند مسافة SL المحسوبة. إذا كانت المخاطرة صفرًا، يُستخدم InpFixedLot (0.01). تُمرَّر الأحجام عبر NormalizeVolume() التي تُقرِّب لأسفل حسب خطوة اللوت وتُقيَّد بحدود الحد الأدنى والأعلى للرمز.

تدير ManageExits() المراكز في كل تيك. أولًا، الخروج عند الإشارة المعاكسة: إذا أنتج النظام إشارة شراء بينما المراكز المفتوحة بيع فقط، يُغلَق جانب البيع عبر CloseSide(POSITION_TYPE_SELL, "opp-signal"). ثانيًا، الخروج عند تغير النظام: إذا أرجعت ClassifyRegime() حالة CHOPPY في أي تيك، تُغلَق جميع المراكز المفتوحة لهذا السحر بسب "choppy". ثالثًا، إيقاف الوقت: المراكز الأقدم من MAX_BARS_IN_TRADE (200 شمعة = نحو 16.7 ساعة على M5) تُغلَق قسرًا بسبب time-stop.

تعمل منطقتا التتبع وكسر التعادل في نفس الحلقة لكل صفقة. عندما يصل الربح غير المحقق إلى 1R (المُعرَّف كـ ATR × InpATRSLmult)، يُرفَع الوقف إلى سعر الفتح + 0.05×ATR للشراء أو سعر الفتح − 0.05×ATR للبيع — كسر تعادل ضيق يُلغي حالة الخسارة لكنه يترك للصفقة مجالًا للتنفس. يُضبط التتبع على ATR × 2.5 من سعر العرض/الطلب الحالي، والإكسبرت لا يحرك الوقف إلا في الاتجاه المواتي (MathMax للشراء، MathMin للبيع، مع فرع أمان حين يكون SL صفرًا). كل أمر تعديل يمر عبر TryModify_EX18004() التي تعيد المحاولة حتى 3 مرات على أخطاء requote/timeout مع نوم 100 مللي ثانية.

يُطلَق إغلاق جزئي لمرة واحدة عندما يصل الربح إلى 0.5× مسافة TP. إذا كان حجم النصف الناتج يتجاوز الحد الأدنى للوت و1.5× الحد الأدنى، يُغلَق نصف الصفقة عبر TryClosePartial_EX18004() (3 محاولات، نوم 200 مللي ثانية) ويُضاف التذكرة إلى g_partialClosedTickets[] حتى لا تتكرر في نفس الصفقة.

طبقة الإضافة الهرمية معطلة افتراضيًا. مع InpPyramidMaxLevels > 0 (بحد أقصى 5)، تستدعي ManageScaling() بعد ManageExits()، تتحقق أن جميع المراكز القائمة في الاتجاه مربحة بـ 0.5× ATR، ثم تستدعي TryEntry() لإضافة طبقة جديدة. ترث الإضافة نفس بوابات النظام والإشارة والتأكيد وعدم التداول، فلا يمكن إضافة هرم في نظام ضعيف.

السلامة منتشرة عبر المنظومة كاملة. تحظر NoTrade() الدخول في الحالات: تشغيل قاتل الطوارئ، تجاوز الفارق 300 نقطة، ساعة الخادم خارج 7-21، عطلة نهاية الأسبوع، هبوط رأس المال الفعّال تحت InpCapFloor (افتراضيًا 50 دولارًا)، تحقق خسارة يومية 3% من رأس المال الفعّال، تحقق خسارة أسبوعية 9%، بلوغ InpMaxConcurrent (افتراضيًا 1) من المراكز المفتوحة، أو g_consecLosses ≥ 3 وكوننا لا نزال داخل نافذة تهدئة 5 شموع. تتبع الأرباح والخسائر يمشي في HistoryDealsTotal() للصفقات المطابقة لهذا السحر وهذا الرمز فقط — دون مساس بأي إكسبرت آخر. مفتاح التشغيل التجريبي (InpDryRun = true افتراضيًا) يطبع كل إشارة كان يمكن أن تُرسَل دون إرسال أمر، وهي الطريقة المثلى لتشغيل الإكسبرت أول مرة على طرفية مباشرة.

صيغة OnTester هي (STAT_PROFIT × STAT_PROFIT_FACTOR) / (1 + STAT_BALANCE_DDREL_PERCENT)، وهي ترجّح معيار التحسين بين صافي الربح وعامل الربح مع معاقبة نسبة الانخفاض النسبي للرصيد. إذا كان الاختبار أقل من 30 صفقة، تُرجِع OnTester صفرًا لكتم التحسينات الصاخبة.

ما يمكن توقّعه في الاختبار الخلفي: لأن الإكسبرت لا يُطلِق إلا على تقاطع ADX/DI على شمعة مغلقة وتُرفض حالتي CHOPPY وCOMPRESS، فإن وتيرة التداول على XAUUSD M5 معتدلة — عادة بضع إعدادات في كل جلسة لندن-نيويورك، وأقل في فترة التداخل الآسيوي. نسبة المخاطرة 1:2 والمخاطرة 0.5% لكل صفقة تعني أن الاتجاه الهادئ الطويل يولّد سلسلة من المكاسب الصغيرة المتتالية مع بعض الصفقات الكبيرة بمخاطرة 2R بين الحين والآخر، في حين أن الأسبوع المتقلب ينتج غالبًا صمتًا مرتبطًا بفترة التهدئة لا خسائر فعلية. الإغلاق الجزئي عند 0.5×TP يضمن قفل نحو 1R من كل صفقة رابحة بصرف النظر عن نقطة الخروج النهائية، وهذا ما يمنح منحنىEquity مظهره الأملس في جولات المحسّن.

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

يعالج الإكسبرت شمعة واحدة مغلقة لكل دورة: يقرأ ADX(14) مع +DI و−DI على الشمعة 1، ويمرّرها عبر مصنف نظام مكوّن من سبع حالات مبني على ADX والنسبة المئوية لـ ATR(14) عبر 100 شمعة وعرض بولنجر باند(20, 2.0)، ويحظر الدخول في حالتي CHOPPY وCOMPRESS. ثم تواجه الإعدادات الناجية ثلاث عمليات تأكيد — اتفاق ADX/DI على H1، ونقطة منتصف RSI(14) عند 50، وفحص الفارق/الحدود — قبل أن تحسب CalcLot() حجم الأمر بمخاطرة 0.5% مع وقف ATR(14) × 2.0 وجني أرباح 2×. تراقب ManageExits() كل تيك: الإشارة المعاكسة تُغلق الجانب، ونظام CHOPPY يُغلق السلة، وإيقاف الوقت عند 200 شمعة يُغلق الصفقة قسرًا، وكسر التعادل عند 1R ينقل الوقف إلى سعر الفتح ± 0.05×ATR، وتتبع ATR عند 2.5×ATR يمشي بالوقف في الاتجاه المواتي فقط، ويُطلَق إغلاق جزئي 50% عند 0.5× مسافة جني الأرباح. تعيد طبقة الإضافة الهرمية (المعطلة افتراضيًا) استخدام نفس مسار الدخول، مشروطة بكون جميع الطبقات القائمة مربحة بـ 0.5× ATR، وكل أمر تعديل أو إغلاق يُغلَّف في دالة مساعدة بـ 3 محاولات تنام 100-200 مللي ثانية عند requote/timeout.

إشارة الدخول

تُرسَل إشارة الشراء عندما يعبر +DI فوق −DI على آخر شمعة M5 مغلقة مع ADX(14) عند 25 أو أعلى، ويُرجِع مصنف النظام المكوّن من سبع حالات إحدى الحالات STRONG_TREND أو WEAK_TREND أو RANGE أو BREAKOUT (تُحظر CHOPPY وCOMPRESS)، ويوافق اتجاه ADX/DI على H1، ويكون RSI(14) فوق 50، والفارق السعري دون 300 نقطة، وتتجاوز نسبة المخاطرة إلى العائد المحسوبة 1.0. يُحجَّم الأمر عند 0.5% من رأس المال الفعّال مقابل وقف ATR(14) × 2.0، مع جني أرباح عند ضعف وقف الخسارة افتراضيًا.

إشارة الخروج

تعمل الخروج في كل تيك: تقاطع ADX/DI معاكس يُغلق الجانب القائم، وتصنيف نظام CHOPPY يُغلق جميع المراكز لهذا السحر، وإيقاف الوقت عند 200 شمعة يُغلق قسرًا أي صفقة متقادمة. بعد 1R من الربح، يُرفَع الوقف إلى سعر الفتح ± 0.05×ATR (كسر التعادل)، ثم يتتبع عند 2.5×ATR من السعر الحالي في الاتجاه المواتي فقط. عند 0.5× مسافة جني الأرباح، يُغلَق نصف الصفقة كإغلاق جزئي لمرة واحدة ويُقفَل التذكرة من إعادة الإغلاق الجزئي.

وقف الخسارة

يُحسب وقف الخسارة كـ ATR(14) × 2.0 (قابل للضبط عبر InpATRSLmult) ويُقيَّد فوق مستوى إيقاف الوسيط مضافًا إليه عازل 5 نقاط. ثم يُرفَع الوقف إلى كسر التعادل عند سعر الفتح ± 0.05×ATR بمجرد وصول الربح إلى 1R، ويتتبع عند 2.5×ATR من سعر العرض/الطلب بعد ذلك، متحركًا في الاتجاه المواتي فقط. كما يُغلق إيقاف الوقت عند 200 شمعة أي صفقة تتأخر أكثر من اللازم.

جني الأرباح

وقف جني الأرباح هو مسافة وقف الخسارة × (InpATRTPmult / InpATRSLmult)، مما يعطي نسبة مخاطرة إلى عائد 1:2 في الإعدادات الافتراضية (2.0× ATR للوقف، 4.0× ATR للجني). يُطلَق إغلاق جزئي لمرة واحدة عند 0.5× مسافة جني الأرباح، قافلًا نحو 1R من كل صفقة رابحة؛ ثم يُدار النصف المتبقي عبر وقف التتبع.

الأنسب لـ

الحد الأدنى الموصى به للرصيد: 100 دولار. يُفضَّل تشغيله على XAUUSD M5 (يعمل على أي إطار زمني) مع وسيط فروقات ضيقة يبقي فروق النقاط تحت 300 (≤ 30 نقطة على الذهب) وخادم بتوقيت GMT+0/+1/+2/+3 حتى تلتقط نافذة 7-21 بتوقيت الخادم تداخل لندن-نيويورك. مناسب لحسابات المخاطرة المتوسطة التي تريد صفقة واحدة في الوقت نفسه، بمخاطرة 0.5% لكل صفقة ونسبة 1:2 افتراضيًا. يجعل InpCapAmount وInpCapFloor منه مناسبًا لحسابات تقييم الشركات الممولة حيث تحمي سقف الرصيد الصارم أولوية على توسيع الحجم.

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

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

العائلة: TrendFollow الماجيك: 22218004 الإصدار: 2.00

الوصف: ADX/DI trend-follow with regime gating — +DI/-DI cross while ADX>threshold on last CLOSED bar, wrapped in ADX+ATR- percentile+BB-width regime classifier, HTF trend confirm, RSI midpoint filter, spread/session/no-trade gates, ATR-based SL/ TP, break-even + partial TP + ATR trailing, pyramid OFF by default, OnTester metric. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • RawSignal()
  • ConfirmEntry()
  • NoTrade()
  • TryEntry()
  • ManageExits()
  • ManageScaling()
  • EnforceStopsLevel()
  • RespectStops()
  • NormalizeVolume()
  • CalcLot()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX18004 TrendFollow — Execution Flow (from source analysis)
// Family: TrendFollow
// ADX/DI trend-follow with regime gating — +DI/-DI cross while ADX>threshold on last CLOSED bar, wrapped in ADX+ATR- percentile+BB-width regime classifier, HTF trend confirm, RSI midpoint filter, spread/session/no-trade gates, ATR-based SL/ TP, break-even + partial TP + ATR trailing, pyramid OFF by default, OnTester metric. 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اسحب الإكسبرت على رسم H4 أو اليومي للحصول على أفضل النتائج
  7. 7حدد فترات EMA وعتبة ADX وحجم اللوت في نافذة الإعدادات
  8. 8فعّل Allow Algo Trading واضغط OK

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

المعاملالافتراضيالوصف
InpMagic22218004Magic number
InpTradeComment"Psgrowth.com Expert_18004"Trade comment
InpDryRuntrueDry-run: skip live orders
InpKillSwitchfalseEmergency kill switch
InpRiskPercent0.5Risk % per trade (effective_capital)
InpFixedLot0.01Fixed lot if risk=0
InpDailyLossLimitPct3.0Daily loss limit (% effective)
InpMaxConcurrent1Max concurrent trades (this magic)
InpCapAmount0.0Real-money cap ($)
InpCapFloor50.0Floor below which no entries ($)
InpADXPeriod14ADX period
InpADXThreshold25Min ADX for trend
InpRequireDICrosstrueRequire +DI/-DI cross
InpHTFTimeframePERIOD_H1Higher TF for trend agreement
InpATRSLmult2.0ATR SL multiplier
InpATRTPmult4.0ATR TP multiplier (R:R)
InpMaxSpreadPts300Max spread (points)
InpSlippagePts20Slippage (points)
InpPyramidMaxLevels0Pyramids (0=OFF, max 5)
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX18004.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX18004 ADXTrend_XAUUSD_5M — ADX/DI trend-following EA, full 12-layer stack."

#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\DealInfo.mqh>

CTrade         trade;
CPositionInfo  posInfo;
CSymbolInfo    sym;
CAccountInfo   acc;

//================== INPUTS (12-22 hard cap) ========================
input group "=== Identity ==="
input long     InpMagic              = 22218004;              // Magic number
input string   InpTradeComment       = "Psgrowth.com Expert_18004";       // Trade comment
input bool     InpDryRun             = true;                 // Dry-run: skip live orders
input bool     InpKillSwitch         = false;                // Emergency kill switch

input group "=== Risk & Sizing ==="
input double   InpRiskPercent        = 0.5;                  // Risk % per trade (effective_capital)
input double   InpFixedLot           = 0.01;                 // Fixed lot if risk=0
input double   InpDailyLossLimitPct  = 3.0;                  // Daily loss limit (% effective)
input int      InpMaxConcurrent      = 1;                    // Max concurrent trades (this magic)

input group "=== Capital Allocation Cap ==="
// InpCapEnabled removed — use InpCapAmount=0 to disable                 // Enable capital cap
input double   InpCapAmount          = 0.0;                // Real-money cap ($)
input double   InpCapFloor           = 50.0;                 // Floor below which no entries ($)

input group "=== Signal (ADX/DI) ==="
input int      InpADXPeriod          = 14;                   // ADX period
input int      InpADXThreshold       = 25;                   // Min ADX for trend
input bool     InpRequireDICross     = true;                 // Require +DI/-DI cross

input group "=== Regime Filter ==="
input int      InpHTFTimeframe       = PERIOD_H1;            // Higher TF for trend agreement

input group "=== Exit / Manage ==="
input double   InpATRSLmult          = 2.0;                  // ATR SL multiplier
input double   InpATRTPmult          = 4.0;                  // ATR TP multiplier (R:R)

input group "=== Execution ==="
input int      InpMaxSpreadPts       = 300;                  // Max spread (points)
input int      InpSlippagePts        = 20;                   // Slippage (points)
input int      InpPyramidMaxLevels   = 0;                    // Pyramids (0=OFF, max 5)
//================== INPUTS END (21 total) ==========================
//
// Tunables below are intentionally #define constants (not inputs) to
// respect the 22-input cap. Edit + recompile to change.
#define ATR_PERIOD          14       // ATR period (vol regime)
#define ATR_PCTILE_LOOKBACK 100      // ATR percentile window
#define BB_PERIOD           20       // Bollinger period
#define BB_DEV              2.0      // Bollinger deviation

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

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

الوسوم:ex18004trendfollowpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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