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() بهذا الترتيب: IOC → RETURN → FOK → RETURN احتياطي، ليتكيف مع أي شيء يسمح به الوسيط.
مرشح الجلسة ميزة مجانية خلف مفتاح معطل. 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 (IOC→RETURN→FOK)، ويمسح مسار إعادة المحاولة 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()
// 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)ملف التحسين
كيفية تثبيت الإكسبرت على MT5
- 1حمّل ملف .mq5 بالضغط على زر التحميل أعلاه
- 2افتح برنامج MetaTrader 5 على حاسوبك
- 3من القائمة العلوية اختر File → Open Data Folder
- 4انتقل إلى مجلد MQL5 → Experts والصق الملف هناك
- 5في MT5، انقر بالزر الأيمن على Expert Advisors في لوحة Navigator → Refresh
- 6اسحب الإكسبرت على رسم بياني يطابق الإطار الزمني الموصى به
- 7هيّء المعاملات وفقاً للجدول في هذه الصفحة
- 8فعّل Allow Algo Trading واضغط OK
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| InpSymbol | "USDJPY" | Trading Symbol |
| InpTimeframe | 1 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Chart Timeframe |
| MagicNumber | 22212029 | Magic Number |
| InpTradeComment | "Psgrowth.com Expert_12029" | Trade comment |
| InpEMAFastPeriod | 70 | Fast EMA Period |
| InpEMASlowPeriod | 290 | Slow EMA Period |
| InpRSIPeriod | 37 | RSI Period |
| InpRSIBuyThreshold | 25.0 | RSI Buy Threshold (cross above) |
| InpRSISellThreshold | 70.0 | RSI Sell Threshold (cross below) |
| InpUseRiskPercent | false | Use Risk Percentage |
| InpRiskPercent | 1.0 | Risk Percentage (% of balance) |
| InpFixedLot | 1.0 | Fixed Lot Size |
| InpSLPoints | 2400 | Stop Loss (points) |
| InpTPPoints | 1800 | Take Profit (points) |
| InpMaxSlippagePoints | 5 | Maximum Slippage (points) |
| InpMaxSpreadPoints | 20.0 | Maximum allowed spread (points, 0=disabled) |
| InpUseSessionFilter | false | Enable 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 |
| InpEnableDynamicLockProfit | true | Enable Dynamic Lock Profit |
| InpLockProfitEveryXPoints | 1500 | Lock Profit Every X Points |
| InpLockMinusYPointsBuffer | 76 | Lock Buffer (points back from high) |
| MaxOpenTrades | 6 | Maximum Open Trades |
| AllowOnlyProfitableAdditions | true | Allow Only Profitable Additions |
| MinProfitPerTradeToAdd | 5.0 | Min Profit Per Trade to Add (points) |
| InpEnableDebugLogs | false | Enable verbose debug logging for decision flow |
#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;الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على MT5 — استخدم وسيطاً موثوقاً بتنفيذ سريع وسبريد منخفض
إكسبرتات مشابهة
عرض جميع الإكسبرتاتإكسبرتات أخرى بنفس استراتيجية أخرى
Pipsgrowth EX01007 Adaptive — إكسبرت أدفايزر تكييفي
Pipsgrowth EX01007 Adaptive — Adaptive signal scorer EA combining EMA crossover, RSI, Heiken Ashi, Bollinger Bands, ATR and volume spike detection int. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX01019 Adaptive — إكسبرت أدفايزر تكييفي
Pipsgrowth EX01019 Adaptive — Self-adaptive market regime EA that auto-detects trending, ranging, volatile, quiet and breakout conditions. Switches be. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX15029 SMC-OrderBlock — إكسبرت أدفايزر إكسبرت أدفايزر
Pipsgrowth EX15029 SMC-OrderBlock — Smart Money Concepts breakout EA — detects order blocks, CHOCH and liquidity sweeps using EMA cross + structure break, A. إكسبرت أدفايزر MT5 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.