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

Pipsgrowth EX01018 Adaptive — إكسبرت أدفايزر تكييفي

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

Pipsgrowth EX01018 Adaptive — Adaptive volatility EA for XAUUSD M5. Uses ATR to detect volatility regime — enters breakout buy when ATR exceeds 200 po. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

Pipsgrowth EX01018 هو إكسبرت يعتمد على اختراق التذبذب، مصمم خصيصًا لزوج XAUUSD على الإطار الزمني M5. تنحصر كل منطق الدخول في شرط واحد فقط: قراءة مؤشر ATR بفترة 14، وتحويله إلى نقاط الوسيط، فإذا تجاوز 200 نقطة، يُفتح أمر شراء. هذا هو جوهر منطق الإشارة بالكامل. لا توجد مؤشرات مذبذبة، ولا متوسطات متحركة، ولا bands بولينجر، ولا التعرف على الأنماط — فقط مؤشر ATR كمصنف لنظام السوق، ثم دخول شراء واحد. الإكسبرت لا يتداول سوى صفقات الشراء (long-only)؛ لا يوجد مسار بيع متماثل. بمجرد فتح أي صفقة، لا تُضاف أوامر أخرى فوقها: OnTick() يعود فورًا عندما يكون PositionsTotal() > 0، لذا يعمل الإكسبرت بنظام "صفقة واحدة فقط في كل مرة" ويترك وقف الخسارة الثابت عند 400 نقطة وهدف جني الأرباح عند 800 نقطة ليقوما بالعمل.

اختراق ATR هو الجزء "التكيفي" من الاسم. يقضي XAUUSD على شمعة خمس دقائق معظم وقته في نظام تذبذب يتراوح بين 50 و120 نقطة. عتبة 200 نقطة هي إشارة الإكسبرت إلى أن "شيئًا ما يحدث" — عادةً ارتفاع حاد بسبب خبر، أو كنس في افتتاح لندن، أو دفعة في نيويورك. بانتظار انتفاخ ATR قبل الشراء، يتخطى الإكسبرت عمدًا فترات التقطّع. الثمن أنه سيفوّت النقاط الأولى من أي حركة ويدفع السبريد على شمعة الاختراق؛ والميزة أن الحركات التي تشغّله تميل إلى الاستمرار بدلاً من الانعكاس في منتصف الشمعة.

المخاطرة هي الجزء الوحيد من الإكسبرت الذي يتناسب مع رأس المال. InpRiskPercent مضبوط افتراضيًا على 1.0؛ عند هذه القيمة تحسب OpenBuy() حجم اللوت من الرصيد × 1% / (مسافة وقف الخسارة بالنقاط × قيمة النقطة) باستخدام SYMBOL_TRADE_TICK_VALUE و SYMBOL_TRADE_TICK_SIZE لاستخلاص تكلفة النقطة بعملة الإيداع. إذا ضبطت InpRiskPercent على 0، يعود الإكسبرت إلى InpFixedLot = 0.01 — وهو ما يناسب تحديات الشركات الممولة التي يكون فيها حجم اللوت ثابتًا. يُقصَّر حجم اللوت النهائي بين SYMBOL_VOLUME_MIN و SYMBOL_VOLUME_MAX، ويُقرَّب إلى SYMBOL_VOLUME_STEP، ويُحدَّد بسقف الأمان InpMaxLot = 100. قبل الإرسال، تتحقق OpenBuy() أيضًا من OrderCalcMargin() مقابل ACCOUNT_MARGIN_FREE؛ إذا كان اللوت يستهلك كل الهامش الحر، يُسقط الأمر ولا يُسجَّل سوى سطر Print واحد.

الطبقات الـ 12 المذكورة في الترويسة تُنظَّم كبوابة "لا تتداول" صارمة تعمل قبل كل دخول محتمل، وليس كفروع قرار منفصلة. IsSafeToTrade() تربط سقف رأس المال (InpCapAmount، الافتراضي 0 = معطّل)، وأرضية رأس المال (InpCapFloor = 100)، و MinEquityPercent = 80% من الرصيد الأولي، وخسارة اليوم المحققة (MaxDailyLossPercent = 3%)، وسقف الخسارة الأسبوعية (InpMaxWeeklyLossPct = 8%)، و InpMaxConsecLosses = 3 → فترة تهدئة 30 دقيقة، وعداد MaxTradesPerDayGlobal = 50، وحالة السوق مفتوح، والانتماء للجلسة، وتجنب وقت الأخبار، و InpKillSwitch، وأخيرًا مفتاح إيقاف InpMaxDDPct = 20% للسحب الكلي. إذا فشل أي اختبار واحد، لا يُرسل أي أمر وتضيع التكة. فحص السوق المفتوح يتخطى السبت بالكامل، ويحجب الأحد قبل 22:00 GMT، ويرفض الدخول بعد 21:00 GMT يوم الجمعة (الوسطاء عادةً يوسّعون السبريد وكثير منهم يتوقف عن معالجة الأوامر الجديدة في هذا الوقت تقريبًا). مفتاح إيقاف السحب يطبع سطرًا واحدًا "KILL SWITCH: total DD=X% >= Y%. ALL TRADING HALTED." في أول مرة ينطلق، ويصبح الإكسبرت خاملًا حتى يعيد المستخدم ضبطه يدويًا.

تُقيَّم الجلسات بتوقيت GMT. InpServerGMTOffset = 0 افتراضيًا، وهذا يشغّل DetectGMTOffset(): تستعرض الدالة شموع H1 للخلف من الفهرس 2 إلى 99 بحثًا عن فجوة > ساعتين، وتحسب الفارق من ساعة الشمعة بعد الفجوة نسبة إلى 22:00 GMT (إغلاق الجمعة النموذجي)، وتقص النتيجة إلى ±12. إذا كنت تعرف فارق الوسيط يمكنك ترميزه مباشرةً؛ الاكتشاف التلقائي موجود لمن لا يعرف. نافذة التداول هي اتحاد لندن 7–16 GMT ونيويورك 12–21 GMT، مع InpAvoidAsia = true الذي يستبعد الكتلة 0–7 GMT ما لم تكن لندن أو نيويورك نشطة أيضًا. تداخل لندن-نيويورك بين 12 و 16 GMT هو بالتالي الوقت الوحيد الذي يمكن أن يُشغَّل فيه الإكسبرت على كلتا الجلستين في وقت واحد، وهو أيضًا الوقت الذي يحتمل أن يتجاوز فيه ATR 200 نقطة.

التعامل مع الأخبار ثنائي. IsNewsTime() ترجع true كلما كانت دقيقة GMT الحالية في حدود 30 دقيقة من افتتاح لندن أو نيويورك، لذا نافذة الحظر هي نصف ساعة قبل وبعد كل من 7:00 GMT و 12:00 GMT. العلم InpAvoidNews = true افتراضيًا؛ أطفئه إذا أردت تداول الارتفاع الحاد، لكن لاحظ أن عتبة 200 نقطة لـ ATR معايرة لحجم الدفعة التي يولّدها الخبر، لذا معظم تداولات الأخبار ستُصفّى أو تُنفّذ بالضبط في أسوأ لحظة انزلاق.

تنفيذ الصفقة يستخدم غلاف CTrade القياسي بسحر 22201018. وضع التعبئة يُكتشف تلقائيًا من SYMBOL_FILLING_MODEFOK إذا كان الوسيط يدعمها، وإلا IOC، وإلا RETURN — ويُرسل الأمر بتسامح InpSlippagePoints = 10. TryBuy_EX01018() يعيد المحاولة حتى ثلاث مرات عند TRADE_RETCODE_REQUOTE أو TRADE_RETCODE_TIMEOUT أو TRADE_RETCODE_PRICE_OFF أو TRADE_RETCODE_PRICE_CHANGED مع سكون 200 مللي ثانية بين المحاولات؛ أي retcode آخر يكسر الحلقة. الربح/الخسارة المحققة لعدّادات اليوم/الأسبوع تُقرأ في OnTradeTransaction() عبر الاستماع إلى DEAL_TRANSACTION_DEAL_ADD مع DEAL_ENTRY_OUT ومطابقة السحر، ثم تضيف profit + swap + commission إلى g_realizedToday و g_realizedWeek و g_tradesToday. الخسائر ترفع g_consecLosses وتضبط g_cooldownUntil إلى الآن + InpCooldownMin × 60 ثانية؛ الأرباح تعيد العداد إلى الصفر.

المحسّن في OnTester() يرجع profit × profit-factor مقصوص × عقوبة السحب، حيث عقوبة السحب هي 1 / (1 + DD/10)، و PF مقصوص عند 10، وثلاث بوابات صارمة تجعل معظم نتائج التحسين صفرًا: يجب أن يكون maxDD ≤ 20% (أو InpMaxDDPct إذا كان غير صفر)، وعدد الصفقات يجب أن يكون ≥ 20، وصافي الربح يجب أن يكون موجبًا. إذا اجتزت الثلاثة، يكون المعيار موجبًا؛ إذا فشل أي واحد، تُسجَّل الجولة بصفر، وهو ما تريده الاستراتيجية لانضباط walk-forward.

عمليًا، يناسب EX01018 المتداول الذي يريد إكسبرت ذهب ميكانيكي بسيط، long-only، بقاعدة دخول واحدة وشبكة أمان كاملة. عتبة 200 نقطة لـ ATR غير قابلة للتعديل من المستخدم، لذا إذا تغيّر نظام تذبذب الذهب اليومي، إما أن الاستراتيجية تُطلق أكثر أو تُطلق أقل — لا يوجد قرص لإعادة ضبطه. مع MinEquityPercent عند 80% وسقف سحب يومي 3% وأسبوعي 8% وكلي 20%، سيوقف الإكسبرت نفسه تلقائيًا بعيدًا عن المتاعب قبل أن يتعرض الحساب للخطر. حقل الحد الأدنى للإيداع بقيمة $100 يعكس الحجم الصديق للسنت عبر SYMBOL_VOLUME_MIN؛ على وسيط اللوت القياسي نفس المنطق يعمل لكن يجب أن تتوقع صفقات أقل وتذبذبات أكبر لكل صفقة.

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

في كل تكة يُشغّل الإكسبرت أولًا بوابة "لا تتداول" — IsSafeToTrade() تربط سقف رأس المال وأرضية رأس المال وأرضية الأسهم وخسارة اليوم/الأسبوع وفترة تهدئة الخسائر المتتالية وسقف عدد الصفقات وساعات السوق والانتماء للجلسة وحظر وقت الأخبار ومفتاح الإيقاف وسقف السحب الكلي 20%؛ إذا فشل أي اختبار، تُسقط التكة. مع البوابة خضراء، يقرأ الإكسبرت قيمة ATR(14) للشمعة السابقة ويقسمها على mysymbol.Point() للحصول على القيمة بنقاط الوسيط. عندما تتجاوز هذه العتبة 200 نقطة ولا توجد صفقات مفتوحة، تحسب OpenBuy() حجم اللوت من InpRiskPercent من الرصيد (أو تعود إلى InpFixedLot = 0.01)، وتقصّره ضمن حدود حجم الرمز، وتتحقق من الهامش، ثم ترسل عبر TryBuy_EX01018() بما يصل إلى ثلاث محاولات عند requote/timeout/price-change. في OnTradeTransaction() تستعرض سجل الصفقات لإسناد كل إغلاق إلى g_realizedToday و g_realizedWeek و g_tradesToday، وتُفعّل فترة تهدئة الخسائر المتتالية عند صافي ربح/خسارة سالب.

إشارة الدخول

تُطلق OpenBuy عندما يتجاوز مؤشر ATR بفترة 14 (بالنقاط على مقياس الوسيط) 200 نقطة على شمعة مغلقة — العتبة مبرمجة ثابتة في ملف .mq5، وليست قابلة للتعديل. يقرأ الإكسبرت قيمة ATR للشمعة السابقة فقط عبر CopyBuffer ويحوّلها إلى نقاط باستخدام mysymbol.Point(). صفقة واحدة في كل مرة: إذا كان PositionsTotal() > 0 يُتخطى منطق الدخول. الشراء فقط — لا يوجد مشغّل بيع متماثل.

إشارة الخروج

الخرجان ثابتان عند وقف الخسارة والهدف اللذين يربطهما الوسيط بالأمر — 400 نقطة SL و 800 نقطة TP بنسبة مخاطرة إلى عائد 1:2. لا يوجد وقف متابع، ولا رatchet لنقطة التعادل، ولا خروج مبني على الوقت؛ تُغلق الصفقة فقط عند SL أو TP أو إغلاق المستخدم لها يدويًا. طبقات سقف رأس المال والأرضية ومفتاح إيقاف السحب يمكنها منع إعادة الدخول لكنها لا تُغلق صفقة مفتوحة بالقوة.

وقف الخسارة

وقف خسارة ثابت 400 نقطة يُربط بكل أمر، يُعدَّل لأعلى لاحترام الحد الأدنى لـ SYMBOL_TRADE_STOPS_LEVEL لدى الوسيط. حجم اللوت المعتمد على المخاطرة يعني أن المخاطرة الدولارية لكل صفقة تتناسب مع مسافة وقف الخسارة؛ الوقف نفسه لا يتحرك. لا يوجد رatchet متابع أو نقطة تعادل على الصفقة الحية.

جني الأرباح

جني أرباح ثابت 800 نقطة (نسبة 1:2 مقابل وقف الخسارة 400 نقطة). لا يوجد خروج جزئي، ولا إغلاق متدرّج — الصفقة بأكملها تُغلق عند TP أو SL.

الأنسب لـ

الحد الأدنى الموصى به للرصيد هو $100 — مسار الاحتياطي بحجم سنت يستخدم SYMBOL_VOLUME_MIN، لكن رصيدًا قدره $500+ يمنح حجم المخاطرة 1% مساحة للتنفس. الإكسبرت مخصص لزوج XAUUSD فقط على الإطار M5 ويتداول جلستي لندن ونيويورك بتوقيت GMT؛ تداخل 12:00–16:00 GMT هو الوقت الذي يحتمل أن يُطلق فيه مشغّل ATR > 200. يُفضَّل تشغيله على وسيط منخفض السبريد سريع التنفيذ بزمن استجابة أقل من 50 مللي ثانية، لأن تسامح 10 نقاط انزلاق لا يغطي فروقات ECN الواسعة على شمعة خبر. مستوى المخاطرة مصنّف MEDIUM لأن وقف الخسارة الثابت ضيق بما يكفي لمنع صفقة واحدة من إلحاق ضرر حقيقي، لكن قاعدة الدخول الواحدة يمكن أن تُركّز دخولًا متعددًا في حدث تذبذب واحد.

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

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

العائلة: Adaptive الماجيك: 22201018 الإصدار: 3.00

الوصف: Adaptive volatility EA for XAUUSD M5. Uses ATR to detect volatility regime — enters breakout buy when ATR exceeds 200 points. Risk-based or fixed lot sizing, fixed SL/TP. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • OpenBuy()
  • OnTradeTransaction()
  • DetectGMTOffset()
  • ServerToGMT()
  • IsMarketOpen()
  • InActiveSession()
  • IsNewsTime()
  • IsSafeToTrade()
  • UpdateDailyCounters()
  • TryBuy_EX01018()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX01018 Adaptive — Execution Flow (from source analysis)
// Family: Adaptive
// Adaptive volatility EA for XAUUSD M5. Uses ATR to detect volatility regime — enters breakout buy when ATR exceeds 200 points. Risk-based or fixed lot sizing, fixed SL/TP. 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اسحب الإكسبرت على رسم بياني يطابق الإطار الزمني الموصى به
  7. 7هيّء المعاملات وفقاً للجدول في هذه الصفحة
  8. 8فعّل Allow Algo Trading واضغط OK

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

المعاملالافتراضيالوصف
InpRiskPercent1.0Risk percent for lot sizing
InpFixedLot0.01Fixed lot (used if risk=0)
InpStopLoss400Stop loss in points
InpTakeProfit800Take profit in points
InpSlippagePoints10Slippage in points
MaxDailyLossPercent3.0Maximum daily loss percentage
MaxTradesPerDayGlobal50Maximum trades per day (global)
MinEquityPercent80.0Stop trading if equity falls below this % of initial balance
InpMaxConsecLosses3Max consecutive losses before cooldown (0=disabled)
InpCooldownMin30Cooldown minutes after consec losses (0=disabled)
InpMaxWeeklyLossPct8.0Max weekly loss % (0=disabled)
InpCapAmount0.0Capital cap amount (stop trading at this equity)
InpCapFloor100.0Capital floor (stop trading below this equity)
InpServerGMTOffset0Server GMT offset in hours (0=auto-detect via weekend gap)
InpLondonStartHour7London session start (GMT)
InpLondonEndHour16London session end (GMT)
InpNYStartHour12New York session start (GMT)
InpNYEndHour21New York session end (GMT)
InpAvoidAsiatrueAvoid Asian session
InpAsiaStartHour0Asian session start (GMT)
InpAsiaEndHour7Asian session end (GMT)
AvoidNewstrueAvoid trading during news
InpMaxDDPct20.0Max total drawdown % (0=disabled, triggers kill switch)
InpKillSwitchfalseKill switch (stops all trading immediately)
InpDryRunfalseDry-run mode: log signals without trading
InpMaxLot100.0Maximum lot size cap
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX01018.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "3.00"
#property strict
#property description "Pipsgrowth.com EX01018 AdaptiveVol XAUUSD 5M — adaptive volatility breakout, 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 group "=== CORE ==="
input double   InpRiskPercent    = 1.0;  // Risk percent for lot sizing
input double   InpFixedLot       = 0.01; // Fixed lot (used if risk=0)
input int      InpStopLoss       = 400;  // Stop loss in points
input int      InpTakeProfit     = 800;  // Take profit in points
input int      InpMagicNumber    = 22201018;
input string   InpTradeComment   = "Psgrowth.com Expert_01018";
input int      InpSlippagePoints = 10;   // Slippage in points

input group "=== Risk Management ==="
input double MaxDailyLossPercent = 3.0;    // Maximum daily loss percentage
input int    MaxTradesPerDayGlobal = 50;   // Maximum trades per day (global)
input double MinEquityPercent = 80.0;     // Stop trading if equity falls below this % of initial balance
input int    InpMaxConsecLosses  = 3;     // Max consecutive losses before cooldown (0=disabled)
input int    InpCooldownMin      = 30;    // Cooldown minutes after consec losses (0=disabled)
input double InpMaxWeeklyLossPct = 8.0;   // Max weekly loss % (0=disabled)

input group "=== Capital Cap ==="
// InpCapEnabled removed — use InpCapAmount=0 to disable       // Enable capital cap (stop trading above cap)
input double InpCapAmount    = 0.0;     // Capital cap amount (stop trading at this equity)
input double InpCapFloor     = 100.0;      // Capital floor (stop trading below this equity)

input group "=== Sessions Management (GMT) ==="
input int    InpServerGMTOffset  = 0;      // Server GMT offset in hours (0=auto-detect via weekend gap)
input int    InpLondonStartHour  = 7;      // London session start (GMT)
input int    InpLondonEndHour    = 16;     // London session end (GMT)
input int    InpNYStartHour      = 12;     // New York session start (GMT)
input int    InpNYEndHour        = 21;     // New York session end (GMT)
input bool   InpAvoidAsia        = true;   // Avoid Asian session
input int    InpAsiaStartHour    = 0;      // Asian session start (GMT)
input int    InpAsiaEndHour      = 7;      // Asian session end (GMT)
input bool   AvoidNews = true;             // Avoid trading during news

input group "=== Safety Caps ==="
input double InpMaxDDPct           = 20.0;      // Max total drawdown % (0=disabled, triggers kill switch)
input bool   InpKillSwitch        = false;     // Kill switch (stops all trading immediately)
input bool   InpDryRun            = false;     // Dry-run mode: log signals without trading
input double InpMaxLot            = 100.0;     // Maximum lot size cap

int hATR;
double bufATR[];

//--- Hardening globals
double initialBalance = 0.0;

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

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

الوسوم:ex01018adaptivepipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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