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

Pipsgrowth EX12029 MultiIndicatorConfluence — إكسبرت أدفايزر إكسبرت أدفايزر

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

Pipsgrowth EX12029 MultiIndicatorConfluence — EMA crossover EA with RSI threshold entries, dynamic lock profit, session filters, fixed spread cap, debug logging, and . إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

اكس-بي 12029 هو مستشار خبير نحيف لتتبع الاتجاه مبني حول تقاطع متوسطين وعتبة مؤشر واحد. كامل محرك القرار في OnTick يغذّى بثلاث مقابض مؤشرات تُنشأ في OnInit: EMA بـ 70 فترة (hEMA_Fast)، وEMA بـ 290 فترة (hEMA_Slow)، وRSI بـ 37 فترة (hRSI) — جميعها على سعر الإغلاق. لا يوجد MACD، ولا وضع وقف ATR، ولا إعادة اختبار، ولا مرشح إطار زمني أعلى، ولا مصنف نظام: تفصيل الـ12 طبقة في الوصف هو قالب معماري للعائلة، وليس قائمة بمفاتيح مفعّلة فعلياً في هذا البناء. ما تحصل عليه فعلاً هو منطق الدخول: تتطلب SignalBuy() أن يكون RSI[1] < 25 و RSI[0] >= 25 في حين أن TrendBiasBuy() (EMA70 > EMA290) صحيح؛ وتعكسها SignalSell() مع عتبة 70 وقراءة EMA سريعة أدنى من البطيئة. تُقيَّم الإشارات فقط على شريط جديد (IsNewBar())، لذا فإن الحركة المستمرة التي لا تطبع تقاطع عتبة RSI جديد على شريط الإغلاق للشمعة التالية ببساطة لا تتداول.

تدير المراكز بالطريقة ذاتها: بأقل قدر من المنطق وبشكل صريح. أول أمر في اتجاه يُوسم "Initial BUY" أو "Initial SELL"؛ وكل أمر لاحق في الاتجاه نفسه يُوسم "Add#1" و"Add#2" وهكذا. قبل السماح بأي إضافة، تتحقق IsAllSameDirProfitableAtLeast(dir, MinProfitPerTradeToAdd=5.0, tick) من جميع تذاكر الاتجاه المفتوح وتطلب أن يكون كل مركز مفتوح في ذلك الاتجاه رابحاً بـ 5 نقاط على الأقل — وبالتالي فلن يكدّس المستشار مركزاً خاسراً فوق مركز خاسر. الحد الأقصى الثابت هو MaxOpenTrades=6 لكل رقم سحري، يُحسب عبر الاتجاهين معاً بواسطة CountAllOpenPositions(). هذا يجعل الاستراتيجية راكب اتجاه منخفض التردد، وليس متداول ارتدادات: يضع دخولاً واحداً جديداً لكل شمعة مؤهلة حتى يصل للحد، ثم ينتظر.

طبقة قفل الربح الديناميكي هي الشيء الوحيد الذي يعمل بين الدخول والآخر. كل تيكت، تستدعي حلقة الصيانة في OnTick الدالة ApplyDynamicLockProfitToPosition() لكل تذكرة مفتوحة. تقيس هذه الدالة مدى تحرك السعر من الدخول بالنقاط (moved)، وتقسمه على InpLockProfitEveryXPoints=1500، وإذا كان عدد صحيح من "خطوات القفل" واحداً على الأقل، تضبط وقفاً جديداً عند entry + steps*1500 - 76 للشراء (أو المرآة للبيع). الـ76 نقطة هي المخزن المؤقت للتنازل الذي يمنع الوقف من الجلوس على تيكت الذروة. الدالة أحادية الاتجاه بشكل صارم: ترفض CanModifySL() أي وقف جديد ليس أضيق من الحالي (ضمن هامش ضوضاء 0.5 نقطة)، ويُقصّ الوقف الجديد أيضاً لاحترام SYMBOL_TRADE_STOPS_LEVEL و SYMBOL_TRADE_FREEZE_LEVEL للوسيط حتى لا يُرفض التعديل. بعد الحد الأدنى، تعيد ModifySLTP() المحاولة ثلاث مرات على REQUOTE أو TIMEOUT، مع نوم 120 مللي ثانية × المحاولة بين المحاولات. الأثر الصافي: على USDJPY يتراجع الوقف مع كل ساق ربح 150 نقطة، ولن يرتخي مرة أخرى طوال عمر الصفقة.

مدخلات المخاطر محمولة عمداً. الوقف InpSLPoints=2400 والهدف InpTPPoints=1800، ما يعطي نسبة مخاطرة/عائد 0.75:1 على أساس SL/TP ثابت. مع حجم اللوت الافتراضي 1.0 و InpUseRiskPercent=false، الحجم ثابت؛ أقلِب المفتاح واشتق CalcLotFromRisk() حجم اللوت من balance * InpRiskPercent / (SL_points * valuePerPointPerLot) وتُطبّعه على SYMBOL_VOLUME_STEP للرمز. يُمرَّر InpMaxSlippagePoints=5 الافتراضي مباشرة إلى req.deviation في كل OrderSend. تُعيد OrderSendWithRetry() المحاولة ثلاث مرات على مسار رمز الإرجاع العام، وستقوم أيضاً، عند TRADE_RETCODE_INVALID_STOPS، بإزالة SL/TP وإعادة الإرسال مرة قبل الاستسلام. يُختار وضع التعبئة بواسطة GetBestFillingMode() بهذا الترتيب: IOCRETURNFOKRETURN احتياطي، ليتكيف مع أي شيء يسمح به الوسيط.

مرشح الجلسة ميزة مجانية خلف مفتاح معطل. InpUseSessionFilter=false افتراضياً، ما يعني أن MarketIsTradableNow() تتجاوز إلى true وتتداول 24/5 ناقص نافذة الوسيط القابلة للتداول. عند تفعيله، تحلل CacheSessionConfiguration() ثلاث سلاسل "HH:MM" إلى دقائق من منتصف الليل، وتجري IsWithinTradingSessions() فحص OR لثلاث نوافذ يتعامل أيضاً مع حالة الالتفاف حيث start > end (نافذة مسائية→صباحية). القيم الافتراضية الثلاث — 07:00–10:00 (صباح لندن)، 13:00–17:00 (تداخل لندن/نيويورك)، 20:00–23:00 (مساء آسيوي) — مُحمّلة مسبقاً لكن خاملة حتى يُفعّل المستخدم المرشح، وتُحظر عطلات نهاية الأسبوع عبر day_of_week == 0 || 6 بصرف النظر عن النوافذ. بوابة الفروق مدمجة مباشرة: تحظر CheckSpreadOK() الدخول كلما كان (ask-bid)/point > InpMaxSpreadPoints=20، لذا قد يجلس XAUUSD خلال فروقات واسعة لتدحرج نيويورك مكتوف الأيدي حتى مع إيقاف مرشح الجلسة.

حل التذاكر هو المكان الوحيد الذي يبذل فيه هذا المستشار عملاً إضافياً تتخطى فيه بقية العائلة أحياناً. بعد عودة OrderSendWithRetry() بـ MqlTradeResult، تجرب OpenPosition() HistoryDealSelect(res.deal) لقراءة DEAL_POSITION_ID، ثم HistoryOrderSelect(res.order) لقراءة ORDER_POSITION_ID، ثم تنتظر حتى 5×40 مللي ثانية لتأكيد PositionSelectByTicket() أن المركز مرئي. إذا فشل ذلك، تتراجع إلى جولة PositionsTotal() مطابقة على الرمز، الرقم السحري، التعليق، والحجم. هذا هو الجزء الذي يجعل المستشار قوياً ضد الوسطاء الذين يأخذون بعض التيكتات لإظهار مركز جديد إلى PositionSelectByTicket() — وهو أمر مهم لأن ApplyDynamicLockProfitToPosition() تعمل في التيكت التالي، وليس نفس التيكت، والتذكرة المفقودة ستتخطى التراجع بصمت.

ذيالة التنفيذ قصيرة لكنها صريحة. تُعيد TryClose_EX12029() و TryClosePartial_EX12029() المحاولة ثلاث مرات على REQUOTE / TIMEOUT / PRICE_OFF / PRICE_CHANGED مع نوم 200 مللي ثانية، بينما تُعيد TryModify_EX12029() المحاولة ثلاث مرات على REQUOTE / TIMEOUT فقط مع نوم 100 مللي ثانية — التعديل هو الجانب غير المتماثل لأن PRICE_CHANGED على تعديل وقف الخسارة يُعامل كرفض من الوسيط، وليس كحالة عابرة. خلاصة القول: EX12029 هو نوع المستشار الذي تُوجّهه إلى رمز واحد على إطار زمني واحد، وتضبط حد أقصى منطقي للصفقات، وتترك قفل الربح الديناميكي مفعّلاً، وتتركه يركب. سبب وسمه "نحيف" في العائلة هو بالضبط ذلك — لا مرشحات مساعدة لتصحيحها، ولا آلة حالة نظام للتحقق منها، فقط تقاطع EMA مع بوابة RSI وتراجع 1500/76.

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

في كل تيكت، تجري الحلولة كل تذكرة مفتوحة تطابق الرقم السحري + الرمز، وتقيس ApplyDynamicLockProfitToPosition التحرك من الدخول بالنقاط، وتقسمه على 1500، وإذا كانت الخطوة الصحيحة موجبة، ترفع وقفاً جديداً إلى entry + steps1500 - 76 (للشراء) أو المرآة (للبيع)، مقصوصاً إلى مستوى stops/freeze للوسيط. يحدد اكتشاف الشمعة الجديدة مسار الدخول: تستدعي OnTick الدالة IsNewBar، ثم MarketIsTradableNow (جلسة + فحص عطلة نهاية الأسبوع)، وCheckSpreadOK (حد 20 نقطة)، ثم SignalBuy/SignalSell — الشراء هو عبور RSI(37) للأعلى عبر 25 مع EMA70 فوق EMA290، والبيع هو العبور المتماثل للأسفل عبر 70 مع السريع أدنى من البطيء. حجم اللوت ثابت 1.0 افتراضياً؛ يقلب InpUseRiskPercent=true المسار عبر CalcLotFromRisk الذي يقسم balancerisk% على SL_points*valuePerPointPerLot ويُطبّعه على درجة حجم اللوت للرمز. الإضافات تُوسم Add#N ولا تُطلق إلا عندما يكون كل مركز في الاتجاه نفسه رابحاً بـ 5 نقاط على الأقل، بحد أقصى MaxOpenTrades=6. يستخدم OrderSend دالة GetBestFillingMode (IOCRETURNFOK)، ويمسح مسار إعادة المحاولة SL/TP مرة ويُعيد الإرسال عند TRADE_RETCODE_INVALID_STOPS قبل الفشل.

إشارة الدخول

الدخول فقط عند إغلاق الشمعة: يطلب المستشار شمعة جديدة، ثم تطلق SignalBuy عندما يعبر RSI بـ 37 فترة للأعلى عبر 25 من الأسفل بينما يكون EMA70 أعلى من EMA290، وتعكسها SignalSell مع عبور RSI للأسفل عبر 70 بينما يكون EMA السريع أدنى من البطيء. أول أمر في الاتجاه يُوسم Initial، وكل أمر لاحق يُوسم Add#N، ولا تُطلق الإضافات إلا إذا كان كل مركز مفتوح في ذلك الاتجاه رابحاً بـ 5 نقاط على الأقل.

إشارة الخروج

الخروج سلبي عبر وقف/هدف الصفقة (2400/1800 نقطة) ونشط عبر تراجع قفل الربح الديناميكي: مع كل 1500 نقطة تحرك ملائم، تشدد ApplyDynamicLockProfitToPosition الوقف إلى entry ± (steps*1500 - 76)، مقصوصاً إلى مستوى stops/freeze للوسيط ولا يتحرك إلا في الاتجاه الحمائي. لا يوجد خروج مدفوع بإشارة — تستمر الصفقة حتى يصل الوسيط إلى الوقف المعدّل أو الهدف الأصلي.

وقف الخسارة

وقف ثابت عند InpSLPoints=2400 نقطة من الدخول على كل أمر، يُضبط عبر NormalizePrice في OnTick. كما يتراجع قفل الربح الديناميكي بالوقف كل 1500 نقطة من التحرك الملائم، تاركاً مخزناً مؤقتاً للتنازل 76 نقطة ولا يتحرك إلا في الاتجاه الحمائي (ترفض CanModifySL أي ارتخاء).

جني الأرباح

جني أرباح ثابت عند InpTPPoints=1800 نقطة من الدخول على كل أمر. مع وقف 2400 نقطة، يعطي ذلك نسبة مخاطرة/عائد 0.75:1 على أساس كل صفقة؛ المستشار لا يُعدّل أو يُتابع جني الأرباح، لذا فإن تراجعات الوقف المربحة تحوّل فعلياً أجزاء من المركز إلى رانر منخفض المخاطر مع هدف 1800 نقطة الأصلي من جانب الوسيط.

الأنسب لـ

الأنسب على زوج عملات رئيسي واحد أو XAUUSD على H1 برصيد أدنى 100 دولار بمخاطرة متوسطة، وحجم افتراضي 1.0 لوت. حسابات ECN أو الفروقات المنخفضة مطلوبة لأن حد الـ20 نقطة سيحظر الدخول على الفروقات الواسعة (خاصة على الذهب خلال التدحرج)؛ وللسبب نفسه، يجب إعادة فحص المدخلات القائمة على النقاط (SL 2400، TP 1800، القفل 1500) قبل إسقاطه على XAUUSD لأن 2400 نقطة على USDJPY تساوي 240 نقطة لكن 2400 نقطة على XAUUSD تساوي 24.00 دولار لكل لوت، وهو ما يقارب 1R من نطاق الذهب اليومي المعتاد — ملف مخاطر مختلف عن إعداد الزوج الرئيسي الافتراضي. تناسب نوافذ الجلسة المهيأة مسبقاً (07-10، 13-17، 20-23 بتوقيت السيرفر) معظم فروق GMT لوسطاء MT5، لكن يجب التحقق منها قبل تفعيل InpUseSessionFilter.

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

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

العائلة: MultiIndicatorConfluence الماجيك: 22212029 الإصدار: 2.00

الوصف: EMA crossover EA with RSI threshold entries, dynamic lock profit, session filters, fixed spread cap, debug logging, and multi-position management with profitable-add gating. Variant of X1 series with diagnostics and session validation. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • Tag()
  • Log()
  • WarnOncePerSec()
  • DebugPrint()
  • IsOurPosition()
  • OwnsPosition()
  • CountOpenPositions()
  • CountAllOpenPositions()
  • CountAdditionalPositions()
  • IsAllSameDirProfitableAtLeast()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX12029 MultiIndicatorConfluence — Execution Flow (from source analysis)
// Family: MultiIndicatorConfluence
// EMA crossover EA with RSI threshold entries, dynamic lock profit, session filters, fixed spread cap, debug logging, and multi-position management with profitable-add gating. Variant of X1 series with diagnostics and session validation. 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اسحب الإكسبرت على رسم بياني يطابق الإطار الزمني الموصى به
  7. 7هيّء المعاملات وفقاً للجدول في هذه الصفحة
  8. 8فعّل Allow Algo Trading واضغط OK

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

المعاملالافتراضيالوصف
InpSymbol"USDJPY"Trading Symbol
InpTimeframe1Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Chart Timeframe
MagicNumber22212029Magic Number
InpTradeComment"Psgrowth.com Expert_12029"Trade comment
InpEMAFastPeriod70Fast EMA Period
InpEMASlowPeriod290Slow EMA Period
InpRSIPeriod37RSI Period
InpRSIBuyThreshold25.0RSI Buy Threshold (cross above)
InpRSISellThreshold70.0RSI Sell Threshold (cross below)
InpUseRiskPercentfalseUse Risk Percentage
InpRiskPercent1.0Risk Percentage (% of balance)
InpFixedLot1.0Fixed Lot Size
InpSLPoints2400Stop Loss (points)
InpTPPoints1800Take Profit (points)
InpMaxSlippagePoints5Maximum Slippage (points)
InpMaxSpreadPoints20.0Maximum allowed spread (points, 0=disabled)
InpUseSessionFilterfalseEnable Session Filter
InpSession1StartTime"07:00"Session 1 Start Time (HH:MM) - London Open
InpSession1EndTime"10:00"Session 1 End Time (HH:MM) - London Morning
InpSession2StartTime"13:00"Session 2 Start Time (HH:MM) - London/NY Overlap
InpSession2EndTime"17:00"Session 2 End Time (HH:MM) - NY Session
InpSession3StartTime"20:00"Session 3 Start Time (HH:MM) - Asian Session
InpSession3EndTime"23:00"Session 3 End Time (HH:MM) - Asian Evening
InpEnableDynamicLockProfittrueEnable Dynamic Lock Profit
InpLockProfitEveryXPoints1500Lock Profit Every X Points
InpLockMinusYPointsBuffer76Lock Buffer (points back from high)
MaxOpenTrades6Maximum Open Trades
AllowOnlyProfitableAdditionstrueAllow Only Profitable Additions
MinProfitPerTradeToAdd5.0Min Profit Per Trade to Add (points)
InpEnableDebugLogsfalseEnable verbose debug logging for decision flow
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX12029.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX12029 EA_X1_A7EC5A36 — EMA/RSI crossover with diagnostics and session validation, full 12-layer stack."

//---------------------------- Includes --------------------------------
#include <Trade/Trade.mqh>

//---------------------------- Inputs --------------------------------

//===================================================================
//                        CORE SETTINGS
//===================================================================
ENUM_TIMEFRAMES MapTimeframeInt(int tf)
{
   switch(tf)
   {
      case 1: return PERIOD_M1;
      case 2: return PERIOD_M5;
      case 3: return PERIOD_M15;
      case 4: return PERIOD_M30;
      case 5: return PERIOD_H1;
      case 6: return PERIOD_H4;
      case 7: return PERIOD_D1;
      default: return PERIOD_H1;
   }
}

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;
   }
}
ENUM_TIMEFRAMES g_InpTimeframe = PERIOD_H1;
input group "=== Identity ==="
input string          InpSymbol                = "USDJPY";     // Trading Symbol
input int InpTimeframe = 1; // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1)    // Chart Timeframe
input int             MagicNumber              = 22212029;     // Magic Number
input string          InpTradeComment          = "Psgrowth.com Expert_12029"; // Trade comment

//===================================================================
//                     TRADING STRATEGY
//===================================================================
ENUM_TIMEFRAMES MapTimeframeInt(int tf)
{
   switch(tf)
   {
      case 1: return PERIOD_M1;
      case 2: return PERIOD_M5;
      case 3: return PERIOD_M15;

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

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

الوسوم:ex12029multiindicatorconfluencepipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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