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

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

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

Pipsgrowth EX01013 Adaptive — Adaptive DS3 channel-breakout EA for XAUUSD M5. Builds dynamic ATR channels around an EMA trend filter; enters on close . إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

Pipsgrowth EX01013 Adaptive هو نظام اختراق أحادي المركز مصمم لـ XAUUSD على إطار M5، يلتقط توسعات التذبذب خارج نطاق ATR متكيف يلتف حول مرشح اتجاه EMA بطيء. بدلًا من استخدام قناة Donchian ثابتة أو غلاف Bollinger ساكن، يرسم EA نطاق القرار بشكل ديناميكي عند كل شمعة: يقرأ أحدث قيمة لـ ATR(14) وأحدث قيمة لـ EMA(100)، ثم يحسب نطاقًا علويًا عند EMA(100) + 2.0 × ATR(14) ونطاقًا سفليًا عند EMA(100) − 2.0 × ATR(14). ولأن النطاق يتحرك مع خط الاتجاه الأساسي ومع نظام التذبذب الحالي، يتسع تلقائيًا في الجلسات العالية التذبذب (افتتاح لندن، افتتاح نيويورك، ارتدادات ما بعد الأخبار) ويضيق في فترات التماسك الهادئة — عتبة الاختراق تتابع ما يعنيه التوسع فعلًا في تلك اللحظة بدلًا من الاعتماد على مسافة نقاط ثابتة.

منطق الدخول يعيش في CheckSignal()، التي تعمل مرة واحدة فقط عند اكتمال الشمعة — تحتفظ OnTick() بـ static datetime lastBar وتتخطى كل شيء حتى يتقدم iTime(_Symbol, _Period, 0). عند كل شمعة جديدة، تنسخ القيم الأخيرة لـ ATR وEMA من مقابض المؤشرات hATR وhMA (اللذان يُنشآن في OnInit() عبر iATR وiMA)، ثم تقرأ إغلاق الشمعة السابقة iClose(_Symbol, _Period, 1). إذا كان الإغلاق السابق فوق النطاق العلوي، تُستدعى OpenBuy(). وإذا كان تحت النطاق السفلي، تُستدعى OpenSell(). لا توجد بوابة زخم RSI ولا تأكيد حجم ولا نموذج ابتلاع — اختراق القناة الديناميكية هو شرط الدخول الوحيد. تفرض الدالة أيضًا قاعدة مركز واحد: if(PositionsTotal() > 0) return; تخرج فورًا إذا كانت أي صفقة على هذا الـ magic مفتوحة.

إدارة الصفقة تعتمد على وقف وهدف بمسافة ثابتة. InpStopLoss = 500 نقطة وInpTakeProfit = 1000 نقطة افتراضيًا، ما يعطي نسبة مخاطرة/عائد 1:2 لكل دخول. يُحسب حجم اللوت عبر CalculateLotSize(stopLossPoints)، التي تأخذ EffectiveCapital() — المثبَّت بدوره بين InpCapAmount وInpCapFloor (الحد الأدنى الافتراضي 100 دولار) — ثم تضربه في InpRiskPercent (افتراضي 1.0%)، وتقسمه على المخاطرة لكل لوت المحسوبة من tickValue وtickSize وpoint لدى الوسيط، وتقرّبه إلى الأسفل وفق LotsStep() للرمز. إذا كانت InpRiskPercent صفرًا أو سالبة، يلجأ EA إلى InpFixedLot (افتراضي 0.01). تتم تطبيع النتيجة في NormalizeLot() وتقييدها بـ InpMaxLot (افتراضي 100.0).

تتبع OpenBuy() وOpenSell() نفس نمط إعادة المحاولة ثلاث مرات. قبل كل محاولة، تعيد الدالة قراءة SymbolInfoDouble الحي لـ SYMBOL_ASK/SYMBOL_BID، وتعيد حساب SL وTP من السعر الحالي، وتتحقق من SYMBOL_TRADE_STOPS_LEVEL — إذا كانت مسافة الوقف الدنيا لدى الوسيط تدفع SL أو TP قريبًا جدًا من الدخول، تُدفع القيم إلى الحد الأدنى المسموح. كما يتم فحص الهامش مقابل ACCOUNT_MARGIN_FREE. عند فشل trade.Buy() / trade.Sell()، يفحص EA رمز الإعادة: requotes وtimeouts وprice-changed وprice-off تستدعي Sleep(100) ومحاولة جديدة؛ أي رمز آخر يُسجَّل وتخرج الدالة دون تداول. يتم الكشف التلقائي عن نمط التعبئة عبر DetectFillingMode() (FOKIOCRETURN) ويُعيَّن على كائن CTrade عند التهيئة.

تعتبر مجموعة إدارة المخاطر الجزء الأثقل في EA. IsSafeToTrade() هي البوابة التي تعمل أولًا عند كل تيكر. تتحقق بالترتيب من: بلوغ سقف رأس المال (equity ≥ InpCapAmount)، اختراق الحد الأدنى لرأس المال (equity < InpCapFloor)، حماية حقوق الملكية (equity < MinEquityPercent% من initialBalance، افتراضي 80%)، سقف الخسارة اليومية (g_realizedToday ≤ −3% من الرصيد الأولي، افتراضيًا)، سقف الخسارة الأسبوعية (g_realizedWeek ≤ −8%، افتراضيًا)، تفعيل التهدئة (g_consecLosses ≥ 3 وTimeCurrent() < g_cooldownUntil)، سقف الصفقات اليومي (g_tradesTodayMaxTradesPerDay = 10)، انفتاح السوق (فحص عطلة نهاية الأسبوع بالتوقيت العالمي)، الجلسة النشطة، فلتر وقت الأخبار، مفتاح الإيقاف، وأخيرًا قفل أقصى تراجع — عندما يصل (initialBalance − equity) / initialBalance × 100 إلى InpMaxDDPct (افتراضي 20%)، يطبع EA رسالة KILL SWITCH ويرفض جميع الدخول التالي.

تُحدَّ عدّادات PnL اليومية والأسبوعية عبر OnTradeTransaction()، التي تصفّي الصفقات الواردة بحسب رقم magic المستشار ورمز الشارت. كل صفقة DEAL_ENTRY_OUT (أو out-by / in-out) تضيف صافيها (profit + swap + commission) إلى g_realizedToday وg_realizedWeek، وتزيد g_consecLosses عند الخسارة الصافية — وهذا يدفع أيضًا g_cooldownUntil إلى TimeCurrent() + 30 × 60 إذا كانت InpCooldownMin > 0. الصفقة الرابحة تُعيد g_consecLosses إلى الصفر. تدير UpdateDailyCounters() تدوير العدادات اليومية عند تغير تاريخ الخادم.

فلترة الجلسات واعية بالمنطقة الزمنية. إما تستخدم DetectGMTOffset() قيمة InpServerGMTOffset إذا كانت غير صفرية، أو تكشفها تلقائيًا عبر مسح فجوة عطلة نهاية الأسبوع على H1 (تبحث عن فجوة بين شمعتي H1 أكبر من ساعتين، ثم تستنتج الإزاحة من ساعة نهاية الفجوة). تطرح ServerToGMT() الإزاحة، وتُرجع InActiveSession() القيمة true فقط عندما تقع الدقيقة الحالية بالتوقيت العالمي داخل لندن (7–16) أو نيويورك (12–21). مع InpAvoidAsia = true، تُرجع الدالة القيمة false صراحةً عندما يكون الوقت داخل آسيا (0–7) وخارج لندن ونيويورك — لذا شمعة أوائل لندن في 7:30 GMT تتداول رغم أن آسيا تتقاطع تقنيًا. تُعلِّم IsNewsTime() نوافذ ±30 دقيقة حول افتتاح لندن ونيويورك كمناطق حظر دخول عندما تكون AvoidNews = true.

معيار OnTester المخصص هو profit × pf × ddPenalty، حيث pf = grossProfit / |grossLoss| مثبَّت عند 10.0، وddPenalty = 1.0 / (1.0 + maxDD / 10.0). توجد ثلاث بوابات صلبة قبل الدرجة: maxDD ≤ 20% (يطابق مفتاح الإيقاف)، وعدد الصفقات ≥ 20، وصافي الربح > 0. الإرجاع 0.0 من أي من هذه البوابات يستبعد التشغيل، لذلك لا يرتّب المُحسِّن إلا الاستراتيجيات التي نجت في قواعد المخاطر الخاصة بـ EA نفسه.

ما يمكن توقعه في الباك تيست: مع SL/TP الافتراضي 500/1000 على XAUUSD M5، يأخذ EA صفقات قليلة ذات حركة كبيرة — اختراقات غلاف 2× ATR على الذهب لا تتكرر، لكن عندما تحصل، يتحرك الذهب عادة 10–30 دولار في الاتجاه نفسه خلال ساعة. تتابعات 4–6 خسائر متتالية شائعة في الجلسات العرضية؛ فترتا التهدئة 3 خسائر/30 دقيقة وسقف الخسارة اليومية 3% هما خط الدفاع الأول ضد هذه التتابعات. يجب اعتبار قفل الـ 20% حدًا صلبًا للاستخدام الحي؛ خفضه دون أقصى تراجع تاريخي لمجموعة التحسين سيدفع EA لإيقاف نفسه في منتصف التشغيل.

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

يرسم غلافًا بسماكة 2× ATR(14) حول خط الأساس EMA(100) عند كل شمعة؛ وعندما يُغلق الإغلاق السابق (M5) فوق النطاق العلوي، يفتح صفقة شراء بوقف 500 نقطة وهدف 1000 نقطة؛ وعندما ينخفض الإغلاق تحت النطاق السفلي، يفتح صفقة بيع بنفس المسافات الثابتة. يتدرج حجم اللوت ليخاطر بنسبة 1% من رأس المال الفعلي لكل صفقة، مع تقييد رأس المال بـ InpCapAmount كحدّ أعلى وInpCapFloor (افتراضيًا 100 دولار) كحدّ أدنى. تخضع كل عملية دخول لبوابة IsSafeToTrade(): خسارة يومية ≤ 3%، وخسارة أسبوعية ≤ 8%، ورأس مال ≥ 80% من الرصيد الأولي، و≤ 10 صفقات يوميًا، وداخل جلسة لندن أو نيويورك (بالتوقيت العالمي، مع تجنب آسيا)، وخارج نوافذ الأخبار التي تمتد ±30 دقيقة، مع قفل killswitch عند تراجع إجمالي 20% وتهدئة لمدة 30 دقيقة بعد أي سلسلة من 3 خسائر. تحافظ OnTradeTransaction() على تزامن g_realizedToday وg_consecLosses مع تنفيذ الصفقات. درجة OnTester المخصصة هي profit × pf × ddPenalty، مع بوابات صارمة: maxDD ≤ 20%، و≥ 20 صفقة، وصافي ربح > 0.

إشارة الدخول

يدخل Pipsgrowth EX01013 في صفقة شراء عندما يغلق الشمعة السابقة (M5) فوق النطاق الديناميكي العلوي (EMA(100) + 2.0 × ATR(14))، وفي صفقة بيع عندما ينخفض الإغلاق السابق تحت النطاق السفلي (EMA(100) − 2.0 × ATR(14)). تُقيَّم الإشارة فقط عند إغلاق الشمعة وفقط في حالة عدم وجود صفقة مفتوحة على magic المستشار. فترة ATR وفترة EMA قابلتان للتعديل عبر المدخلات (InpATRPeriod = 14، InpTrendPeriod = 100، InpChannelWidth = 2.0)، مما يسمح بتوسيع النطاق أو تضييقه ليتناسب مع طبيعة تذبذب الرمز.

إشارة الخروج

يستخدم EA وقف ربح ثابت عند 1000 نقطة (الإعداد الافتراضي InpTakeProfit) — تُترك الصفقة لتُغلق من قبل الوسيط تلقائيًا. لا يوجد trailing stop ولا تحريك إلى نقطة التعادل ولا خروج مبني على الوقت داخل الكود؛ بمجرد فتح الصفقة، لا تنتهي إلا عبر SL أو TP أو إغلاق يدوي. وظيفة TryClosePosition() معرّفة لكنها لا تُستدعى من OnTick()، لذلك لا يدير EA حالات الخروج تلقائيًا.

وقف الخسارة

وقف الخسارة ثابت عند 500 نقطة من سعر الدخول (الإعداد الافتراضي InpStopLoss)، يحدّده OpenBuy()/OpenSell() عند فتح الأمر ولا يتم تحريكه لاحقًا. وظيفة TryModify() موجودة في الكود لكنها لا تُستدعى من OnTick()، لذا يظل SL عند مستواه الأصلي طوال عمر الصفقة.

جني الأرباح

جني الأرباح ثابت عند 1000 نقطة (الإعداد الافتراضي InpTakeProfit)، يحدّد عند فتح الأمر ولا يُعدَّل. نسبة المخاطرة إلى العائد 1:2 مع SL عند 500 نقطة هي منطق جني الأرباح الوحيد في EA؛ لا يوجد إغلاق جزئي ولا تخارج تدريجي ولا TP سلة.

الأنسب لـ

الحد الأدنى الموصى به للإيداع: 100 دولار (يطابق InpCapFloor). مستوى المخاطرة: متوسط — نسبة المخاطرة/العائد الثابتة 1:2 مع تحديد حجم الصفقة حسب المخاطرة يحدّ من السحب، لكن اختراقات XAUUSD M5 قد تتذبذب في الجلسات العرضية. يُفضَّل التشغيل على وسيط ECN/RAW بفارق سعر منخفض وتنفيذ أقل من 50 مللي ثانية، لأن فلتر الفارق الأقصى عند 250 نقطة يُعتبر بوابة صلبة للدخول. الأنسب لـ: المتداولين الذين يستطيعون تحمّل 3–6 أيام خسائر متتالية دون التدخل — ففترة التهدئة وسقف الخسارة اليومية 3% مصمَّمان للتشغيل الآلي دون تدخل، لا للتداول التفاعلي.

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

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

العائلة: Adaptive الماجيك: 22201013 الإصدار: 2.00

الوصف: Adaptive DS3 channel-breakout EA for XAUUSD M5. Builds dynamic ATR channels around an EMA trend filter; enters on close beyond the channel. Risk-based lot sizing, fixed SL/TP. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • CheckSignal()
  • OpenBuy()
  • OpenSell()
  • CalculateLotSize()
  • DetectFillingMode()
  • TryModify()
  • TryClosePosition()
  • DetectGMTOffset()
  • ServerToGMT()
  • IsMarketOpen()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX01013 Adaptive — Execution Flow (from source analysis)
// Family: Adaptive
// Adaptive DS3 channel-breakout EA for XAUUSD M5. Builds dynamic ATR channels around an EMA trend filter; enters on close beyond the channel. Risk-based 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

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

المعاملالافتراضيالوصف
InpTradeComment"Psgrowth.com Expert_01013"Trade Comment
InpATRPeriod14ATR Period for Volatility
InpChannelWidth2.0Channel Width (ATR Multiplier)
InpTrendPeriod100Background Trend Period
InpRiskPercent1.0Risk Percent per Trade
InpFixedLot0.01Fixed Lot (if Risk=0)
InpStopLoss500Stop Loss (points)
InpTakeProfit1000Take Profit (points)
InpMagicNumber22201013Magic Number
InpMaxSpread250Max Spread (points)
InpSlippage3Slippage
MaxDailyLossPercent3.0Maximum daily loss percentage
MaxTradesPerDay10Maximum trades per day
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_EX01013.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX01013 AdaptiveDS3 XAUUSD 5M — adaptive ATR channel 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 Groups
input group "=== Identity ==="
input string   InpTradeComment   = "Psgrowth.com Expert_01013"; // Trade Comment

input group "=== Strategy Parameters ==="
input int      InpATRPeriod      = 14;       // ATR Period for Volatility
input double   InpChannelWidth   = 2.0;      // Channel Width (ATR Multiplier)
input int      InpTrendPeriod    = 100;      // Background Trend Period

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       = 500;      // Stop Loss (points)
input int      InpTakeProfit     = 1000;     // Take Profit (points)

input group "=== Trade Management ==="
input int      InpMagicNumber    = 22201013; // Magic Number
input int      InpMaxSpread      = 250;      // Max Spread (points)
input int      InpSlippage       = 3;        // Slippage

input group "=== Risk Management ==="
input double   MaxDailyLossPercent = 3.0;    // Maximum daily loss percentage
input int      MaxTradesPerDay = 10;         // Maximum trades per day
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

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

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

الوسوم:ex01013adaptivepipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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