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

Pipsgrowth EX09021 MeanReversion — إكسبرت أدفايزر ارتداد للمتوسط

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

Pipsgrowth EX09021 MeanReversion — WPR + Bollinger Bands mean-reversion EA that buys when WPR exits oversold below the lower BB band and sells when WPR exi. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

EX09021 هو روبوت ارتداد للمتوسط يجمع بين بولينجر باندز ومؤشر ويليامز R، ولا يطلق إشارة إلا عندما يتفق كلا المؤشرَين. الفترة 32 لمؤشر WPR أطول من المعتاد (معظم روبوتات الارتداد تستخدم 14)، وفترة 58 لبولينجر أطول بكثير من الافتراضي 20 — وهذا الاختيار مقصود. الفترات الأطول تُصفّي ضوضاء الشمعة الواحدة ولا تُعلِم إلا أحداث الإجهاد الفعلي التي تراكمت على مئات الشموع، ولهذا تم ضبط الروبوت على M5 وما فوق بدلاً من M1. مؤشر ATR(64) يغذّي مسافات الوقف والهدف الديناميكية ويتابع التذبذب الحديث على نفس الإطار الزمني البطيء، فالمسافات تتدرج حسب النظام الفعلي للرمز.

خط أنابيب الإشارة يعمل على مرحلتين. SignalWPR() يقرأ قيمة WPR على الشمعة 1 مقارنة بالشمعة 2 — إشارة الشراء تطلق عندما تكون قيمة WPR على الشمعة 1 أعلى من قيمتها على الشمعة 2 و كانت قيمة الشمعة 2 عند أو تحت -80 (خط التشبع البيعي). إشارة البيع هي المرآة: الشمعة 1 تحت الشمعة 2 مع الشمعة 2 عند أو فوق -20 (خط التشبع الشرائي). إذن المُحفِّز هو خروج WPR من منطقة متطرفة، وليس مجرد وجوده فيها. SignalBB() بعدها يفحص سعر الافتتاح على الشمعة 0 مقابل منتصفَي النصف الخارجي من مغلف بولينجر — (السفلي+الأوسط)/2 لجانب الشراء، (العلوي+الأوسط)/2 لجانب البيع. إشارة الشراء تطلق عندما يكون الافتتاح تحت المنتصف السفلي، أي أن السعر في النصف الخارجي من النطاق، وليس مجرد لمس القضيب السفلي. تُدمج الإشارتان في OnTick() بشرط AND: فقط عندما يتفق الاثنان يرى TradeProcess() إشارة شراء أو بيع. إن قال WPR إنه خرج من التشبع لكن السعر لا يزال قرب المنتصف، أو العكس، لا يفعل الروبوت شيئاً.

إدارة المراكز هي ما يميز EX09021 عن روبوت اللمس التقليدي. دالة TradeProcess() تتحقق أولاً من IsPresentPosOnCurrentBar() — صفقة واحدة جديدة فقط لكل اتجاه في الشمعة، ما يمنع الإفراط في التداول عندما يقلب السوق المتذبذب WPR مرتين على نفس الشمعة. الأهم من ذلك، قاعدة التوسع هي سعر أفضل فقط: للشراء، يقارن الروبوت سعر فتح آخر صفقة شراء بسعر العرض الحالي ويفتح صفقة جديدة فقط عندما يكون العرض الحالي أقل (price_last > SymbolInfoDouble(SYMBOL_ASK)). للبيع، يضيف فقط عندما يكون سعر الطلب الحالي أعلى من بيع سابق. هذا يجعل التوسيع محسِّناً للجودة، وليس مارتنغيل — يشدّ متوسط الدخول في حركة متواصلة، وليس العكس. لا يوجد سقف ثابت لعدد الصفقات المضافة؛ الشرط الحاكم هو فحص تحسّن السعر، والاكتفاء بشمعة واحدة لكل اتجاه.

الوقافات والأهداف افتراضياً ديناميكية من ATR وعرض بولينجر. مدخل InpStopLoss يقبل ثلاث حالات: 0 = بدون وقف، عدد صحيح موجب = نقاط ثابتة، -1 = مستمد من HalfSizeBB(0) * InpSLMltp (افتراضي 2.6). ومدخل InpTakeProfit يفعل المثل: 0 = بلا هدف، موجب = نقاط ثابتة، -1 = ATR(0) * InpTPMltp (افتراضي 1.3 بالنقاط). إذن عند الافتراضي، الوقف 2.6 مرة نصف عرض مغلف بولينجر والهدف 1.3 مرة ATR لـ 64 شمعة — عادة نسبة مكافأة/مخاطرة بين 1.5:1 و2.5:1 على معادن M5 حسب نظام التذبذب. على حسابات الصافي، تُصفّر OpenPosition() كلاً من الوقف والهدف (السطر 958) لأن الوسيط يحتفظ بمركز واحد فقط لكل رمز والوقاف الثابت سيمنع التحسين — الروبوت يحذّر صراحةً عند البدء بأنه يتوقع حساب تحوط.

حزمة الأمان هي النمط العائلي القياسي المكون من 9 بوابات، تُطبَّق عبر IsSafeToTrade_EX09021(). البوابات بالترتيب: بلوغ السقف (InpCapAmount > 0 والرصيد ≥ السقف)، انتهاك أرضية السقف (الرصيد < InpCapFloor، افتراضي 50)، أرضية 95% من الرصيد الأولي، حد خسارة يومية محققة 3%، تهدئة 3 خسائر متتالية (افتراضي 30 دقيقة)، 50 صفقة يومياً، فحص السوق مفتوح (لا تداول الجمعة بعد 21:00 GMT، كل السبت، الأحد قبل 22:00 GMT)، فحص الجلسة النشطة (اتحاد لندن 07:00–16:00 GMT ونيويورك 12:00–21:00 GMT، مع استبعاد نافذة آسيا 00:00–07:00 GMT افتراضياً)، وفلتر أخبار اختياري ±15 دقيقة حول افتتاح جلستَي لندن ونيويورك. معالج OnTradeTransaction() يحدّث g_realizedToday وg_tradesToday وg_consecLosses من تيار الصفقات الفعلي، وليس من دفاتر الروبوت — لذا العدادات اليومية تصمد أمام إعادة التشغيل في الجلسة نفسها وتطابق تاريخ الوسيط. دالة DetectGMTOffset_EX09021() تمشي للخلف عبر شموع H1 باحثةً عن فجوة عطلة نهاية أسبوع 3+ ساعات، ثم تطرح 22 لاستنتاج الإزاحة، مع الرجوع إلى InpServerGMTOffset إن ضبطته يدوياً.

مسار الدخول/الخروج يحتوي أيضاً على حارس حالة سباق. IsUncertainStateEnv() يمشي فيプール الأوامر باحثاً عن أمر بالسحر والرمز الصحيحين ولكن بدون معرّف مركز — تلك هي الفجوة بين قبول التنفيذ وتسجيل المركز. إن وجد الروبوت تلك الحالة، ينام 1000 مللي ثانية ويعيد المحاولة حتى 3 مرات (ENV_ATTEMPTS=3، ENV_WAIT_ATTEMPT=1000) قبل رفض التصرف. النمط نفسه يحرس OpenPosition() مباشرةً. TryClose_EX09021() يعيد محاولة إغلاق المركز حتى 3 مرات بفاصل 200 مللي ثانية عند REQUOTE وTIMEOUT وPRICE_OFF وPRICE_CHANGED — أي شيء آخر (PRICE_INVALID، REJECT، إلخ) يُعتبر فشلاً قاطعاً. نمط التعبئة يُكتشف تلقائياً من SYMBOL_FILLING_MODE ويُرجع إلى RETURNIOCFOK حسب ما يعلنه الوسيط، ما يجعل الروبوت متوافقاً مع إعدادات ECN والتبادل والتنفيذ الفوري.

صيغة OnTester() هي الصيغة العائلية القياسية n * p / (1 + d) — صافي الربح مضروباً في عامل الربح مقسوماً على نسبة السحب من الرصيد زائداً واحداً — مع حد أدنى 30 صفقة وحارس يُرجع 0 إن كان عامل الربح غير موجب أو السحب صفراً. هذه دالة اللياقة التي يُعظّمها مُحسِّن MT5، لذا نتائج الاختبار الخلفي في Strategy Tester ترتّب المرشحين على العائد المعدّل بالمخاطرة، وليس على الربح الإجمالي.

عملياً، EX09021 هو نظام ارتداد للمتوسط لإطار M5 وما فوق، مضبوط على عائلة الفترات الطويلة (WPR32 وBB58 وATR64). يتوقع حساب تحوط ويعمل على كل من المعادن (XAUUSD هو الرمز الافتراضي في النسخة القابلة للنشر) والعملات الرئيسية. قاعدة التوسع عند سعر أفضل تعني أنه ليس شبكة بمعنى مارتنغيل — الروبوت يضيف فقط عندما يكون السوق قد استمر في الاتجاه المتوقع. هذا يجعل السحوبات مختلفة جوهرياً عن روبوت الشبكة الكلاسيكي: بدلاً من التراكم في مركز خاسر، يتراكم في مركز رابح ويشد متوسط الدخول.

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

EX09021 يشغّل مولِّدَي إشارات مستقلَّين عند كل تك ويتداول فقط عندما يتفقان. WPR(32) يرصد إنهاك الزخم بالبحث عن عبور WPR الشمعة 1 خارج منطقتي -80 و-20؛ BB(58, 2.0) يرصد السعر في النصف الخارجي من مغلفه بمقارنة افتتاح الشمعة 0 بمنتصفَي النصف السفلي والعلوي من النطاق. OnTick() يدمج الإشارتين بـ AND ويمررهما إلى TradeProcess() التي تتحقق من IsPresentPosOnCurrentBar() لمنع إعادة الدخول على نفس الشمعة ثم إما تفتح مركزاً جديداً أو تضيف هرمياً بسعر أفضل قطعاً. دالة OpenPosition() تحسب الوقف والهدف الديناميكيين من نصف عرض BB وATR(64) باستخدام المضاعفات، وغلاف CTrade يستخدم GetTypeFilling() لاختيار RETURN أو IOC أو FOK حسب ما يعلنه الوسيط. قبل كل ذلك، IsSafeToTrade_EX09021() يشغّل حزمة الأمان ذات 9 بوابات — السقف، الأرضية، 95% رصيد، خسارة يومية، تهدئة خسائر متتالية، حد صفقات، السوق مفتوح، الجلسة، الأخبار — ومعالج OnTradeTransaction() يحدّث العدادات اليومية من تيار الصفقات. حارس حالة السباق IsUncertainStateEnv() ينتظر حتى 3×1000 مللي ثانية ليستقر الأمر في مركز قبل أن يسمح لـOpenPosition() بالإرسال، ما يحمي من الإدخالات المكررة في السوق السريع. OnTester() يرتّب المرشحين على n*p/(1+d) بحد أدنى 30 صفقة.

إشارة الدخول

الإشارات تتطلب اتفاق كل من WPR(32) وBB(58). WPR يطلق شراء عندما يعبر WPR الشمعة 1 لأعلى من ≤-80 (خروج من تشبع بيعي) وبيعاً عندما يعبر WPR الشمعة 1 لأسفل من ≥-20 (خروج من تشبع شرائي). بولينجر يطلق عندما يكون افتتاح الشمعة 0 في النصف الخارجي من النطاق (تحت منتصف (السفلي+الأوسط)/2 للشراء، فوق منتصف (العلوي+الأوسط)/2 للبيع). يجب أن تتفق الإشارتان في OnTick() ليتداول الروبوت.

إشارة الخروج

الخروج يحركه السعر عبر الوقف والهدف — لا يوجد إغلاق قائم على الوقت أو إشارة عكسية. تُدار المراكز بالكامل بواسطة الوقف والهدف الديناميكيين أو الثابتَين المضبوطين عند الدخول؛ لا توجد حركة لنقطة التعادل، ولا وقف متحرك، ولا إغلاق جزئي، ولا خروج بإشارة عكسية. تستمر الإضافات الهرمية في الاتجاه نفسه طالما كان الدخول الجديد بسعر أفضل.

وقف الخسارة

الوقف يساوي نصف عرض مغلف بولينجر × InpSLMltp (افتراضي 2.6) عندما InpStopLoss = -1، أو مسافة نقاط ثابتة عندما InpStopLoss > 0، أو معطّل عندما InpStopLoss = 0. على حسابات الصافي يُصفَّر كل من الوقف والهدف في OpenPosition() لأن الروبوت يتوقع صراحةً حساب تحوط. لا يوجد تعديل داخل الصفرة لإيقاف متحرك أو نقطة تعادل.

جني الأرباح

الهدف يساوي ATR(64) × InpTPMltp (افتراضي 1.3 بالنقاط) عندما InpTakeProfit = -1، أو مسافة نقاط ثابتة عندما InpTakeProfit > 0، أو معطّل عندما InpTakeProfit = 0. عند الافتراضي نسبة المخاطرة/العائد implied تقريباً بين 1.5:1 و2.5:1 على معادن M5. لا يُعدَّل الهدف بعد الدخول.

الأنسب لـ

الحد الأدنى للرصيد: 100$ (الافتراضي لـ InpCapFloor هو 50، وأرضية 95% من الرصيد الأولي هي القيد المُلزِم للحسابات الصغيرة). الأفضل على M5 وH1 على XAUUSD؛ قابل للنقل إلى العملات الرئيسية. شغّله خلال جلستَي لندن 07:00–16:00 GMT ونيويورك 12:00–21:00 GMT — الافتراضي InpAvoidAsia يستبعد الجلسة الآسيوية. حساب التحوط مطلوب (الروبوت يطبع تحذيراً ويُصفّر الوقف/الهدف على حسابات الصافي). استخدم وسيط ECN فروقه ضيقة لأن بوابة اتفاق WPR+BB تُرقّق تيار التداول أصلاً وفروق الأسعار الواسعة ستُصفّي الباقي. سقف InpMaxTradesPerDay = 50 وحد الخسارة اليومية 3% وتهدئة 3 خسائر متتالية لمدة 30 دقيقة تجعله صالحاً للحسابات بحجم الميكرو-لوت.

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

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

العائلة: MeanReversion الماجيك: 22209021 الإصدار: 2.00

الوصف: WPR + Bollinger Bands mean-reversion EA that buys when WPR exits oversold below the lower BB band and sells when WPR exits overbought above the upper BB band. Uses ATR-based dynamic SL/TP with configurable multipliers and pyramiding on better prices. Supports hedging and netting accounts. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • CopyPricesData()
  • CopyWPRData()
  • CopyBBData()
  • CopyATRData()
  • CopyIndicatorsData()
  • PriceOpen()
  • PriceHigh()
  • PriceLow()
  • PriceClose()
  • Time()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX09021 MeanReversion — Execution Flow (from source analysis)
// Family: MeanReversion
// WPR + Bollinger Bands mean-reversion EA that buys when WPR exits oversold below the lower BB band and sells when WPR exits overbought above the upper BB band. Uses ATR-based dynamic SL/TP with configurable multipliers and pyramiding on better prices. Supports hedging and netting accounts. 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
الأطر الزمنية المُحسّنة:
M5H1

كيفية تثبيت الإكسبرت على 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حدد فترة Bollinger Bands والانحراف ومستويات RSI وحجم اللوت
  8. 8فعّل Allow Algo Trading واضغط OK

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

المعاملالافتراضيالوصف
InpTradeComment"Psgrowth.com Expert_09021"Trade comment
InpPriceBB1Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) /* BB applied price */ // Цена расчёта BB
InpCapFloor50.0+------------------------------------------------------------------+
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX09021.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX09021 ExpWPRBB — WPR + Bollinger Bands mean-reversion with ATR SL/TP, full 12-layer stack."

#include <Trade\Trade.mqh>
#include <Arrays\ArrayLong.mqh>

//+------------------------------------------------------------------+
//| Перечисления                                                     |
//+------------------------------------------------------------------+
//--- Типы сигналов
enum ENUM_SIGNAL_TYPE
  {
   SIGNAL_TYPE_NONE,                                                 // Нет сигнала
   SIGNAL_TYPE_LONG,                                                 // Сигнал на покупку
   SIGNAL_TYPE_SHORT,                                                // Сигнал на покупку
  };

//--- Структура позиций
struct SData
  {
   CArrayLong  list_tickets;                                         // Список тикетов открытых позиций
   double      total_volume;                                         // Общий объём открытых позиций
  };

//--- Структура данных позиций по типам
struct SDataPositions
  {
   SData       Buy;                                                  // Данные позиций Buy
   SData       Sell;                                                 // Данные позиций Sell
  }
Data;
//+------------------------------------------------------------------+
  
  
//+------------------------------------------------------------------+
//| Макроподстановки                                                 |
//+------------------------------------------------------------------+
#define  DATA_COUNT        3                                         // Количество получаемых данных от индикаторов (3 и более)
#define  ENV_ATTEMPTS      3                                         // Количество попыток ожидания получения окружения
#define  ENV_WAIT_ATTEMPT  1000                                      // Количество миллисекунд ожидания обновления окружения
#define  SPREAD_MLTP       3                                         // Множитель спреда для дистанции стоп-приказов

//+------------------------------------------------------------------+
//| Входные параметры                                                |
//+------------------------------------------------------------------+
ENUM_APPLIED_PRICE MapAppliedPriceInt(int ap)
{
   switch(ap)
   {
      case 1: return PRICE_CLOSE;
      case 2: return PRICE_OPEN;
      case 3: return PRICE_HIGH;
      case 4: return PRICE_LOW;
      case 5: return PRICE_MEDIAN;
      case 6: return PRICE_TYPICAL;
      case 7: return PRICE_WEIGHTED;
      default: return PRICE_CLOSE;

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

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

الوسوم:ex09021meanreversionpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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