Pipsgrowth EX07018 MA — إكسبرت أدفايزر إكسبرت أدفايزر
إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD · M5
Pipsgrowth EX07018 MA — EMA crossover EA for XAUUSD M5 using fast/slow EMA crossover with ATR-based risk management, trailing stop, breakeven, s. إكسبرت أدفايزر MT5 مفتوح المصدر.
نظرة عامة
Pipsgrowth EX07018 MA يفتح صفقات شراء أو بيع على XAUUSD M5 كلما تقاطع المتوسط المتحرك الأسي لمدة 10 فترات مع المتوسط المتحرك الأسي لمدة 20 فترة، ويُشغّل قفلين لإدارة المخاطر (وقف عند نقطة التعادل وقف متابع متدرج) لمنع أي صفقة من العودة إلى السحب بعد أن يتحرك السعر بقدر كافٍ. يُكتشف التقاطع على شمعة مغلقة حديثاً — تتحقق دالة IsNewBar() من وقت فتح الشمعة الحالية مقابل g_lastCandle وتُرجع true مرة واحدة فقط، لذلك يُصدَر أمر واحد بالضبط عن كل تقاطع ولا يمكن أن يتسبب ارتجاف الإشارة داخل الشمعة نفسها في تنفيذ متعدد. يُبنى المتوسط الأول عبر iMA(_Symbol, _Period, 10, 0, MODE_EMA, PRICE_CLOSE)، والثاني بنفس الاستدعاء مع فترة 20. كلاهما يُحرَّر في OnDeinit().
سلسلة الدخول قصيرة. بعد انتقال IsNewBar() إلى true تستدعي OnTick() دالة IsWithinTradingSession() ثم IsSpreadOK() ثم تقرأ شمعتين من كل متوسط. يُفعَّل الشراء عندما يكون fast[1] > slow[1] وكانت الشمعة السابقة تحوي fast[2] <= slow[2] — التقاطع الصاعد الكلاسيكي. البيع هو المرآة. يُرسَل الأمر بعدها عبر trade.Buy(lot, _Symbol, ask, sl, tp, InpTradeComment) أو trade.Sell(...) مع sl = ask/bid ± 500 نقطة و tp = ask/bid ∓ 1500 نقطة. هذا يعطي نسبة مخاطرة إلى عائد 1:3 ثابتة مقابل وقف الخسارة المكون من 500 نقطة، وهي أكثر نسبة جموحاً ضمن عائلة EX07xxx MA — فمعظم الأشقاء يستهدفون 1:1 أو 1:1.5.
حجم الصفقة في CalculateLotSize(slPoints) يمر بخمسة مراحل. إذا كان InpRiskPercent أكبر من صفر تسحب الدالة AccountInfoDouble(ACCOUNT_BALANCE)، تضرب في InpRiskPercent / 100، تقسم على خسارة اللوت الواحد عند الوقف المطلوب، تُقرِّب الناتج نزولاً إلى أقرب SYMBOL_VOLUME_STEP، تُقصُّه إلى [minLot, maxLot]، ثم تستدعي OrderCalcMargin. لو كانت الهامش الناتج سيستهلك أكثر من 80% من ACCOUNT_MARGIN_FREE يُخفَّض حجم اللوت تناسبياً. يُقصُّ الرقم النهائي أيضاً عند InpMaxLotSize (1.0 افتراضياً)، فلا يمكن لرصيد متضخم أن يدفع حجم الصفقة فوق السقف الذي حدده المستخدم. إذا ضُبط InpRiskPercent على صفر تعود الدالة إلى InpFixedLot (0.01) — وهي نفس القيمة الاحتياطية التي تستخدمها الدالة كلما كانت قيمة التيك أو حجم التيك أو _Point مساوية للصفر.
بمجرد فتح الصفقة يعمل روتينان إداريان على كل تيكت، قبل منطق الشمعة الجديدة. تنتظر ManageBreakeven() حتى تصل صفقة شراء إلى InpBEStart (200) نقطة في الربح ويكون وقف الخسارة الحالي تحت سعر الدخول، ثم تحاول نقل الوقف إلى open + InpBEProfit * _Point (الدخول + 50 نقطة). تُعكس العملية للبيع. تنتظر ManageTrailingStop() بعدها 100 نقطة إضافية من الربح (300 نقطة إجمالاً من الدخول) وترفع الوقف إلى bid - InpTrailDistance * _Point (العرض الحالي مطروحاً منه 200 نقطة)، بشرط أن يكون الوقف الجديد فوق كل من الوقف الحالي وسعر الدخول. ينتج عن الاثنين معاً سلّم تدرّجي من ثلاث مراحل: قفل نقطة التعادل عند +200، تفعيل الوقف المتابع عند +300، ومواصلة الإبقاء على بعد 200 نقطة خلف السعر مع تقدّمه. يستخدم TryClose_EX07018 و TryClosePartial_EX07018 و TryModify_EX07018 نفس نمط إعادة المحاولة ثلاث مرات بفاصل 200 مللي ثانية (100 مللي ثانية للتعديل) ضد أكواد الإرجاع REQUOTE و TIMEOUT و PRICE_OFF و PRICE_CHANGED — لكن TryModify لا يعيد المحاولة إلا على REQUOTE/TIMEOUT.
فلتر الجلسة في IsWithinTradingSession() مبني كنافذتين مستقلتين لا ككتلة متواصلة. تغطي الجلسة الأولى ساعات الخادم من 8 إلى 12 (افتتاح جلسة لندن حيث يتحرك الذهب عادة بأول حركة اتجاهية له في اليوم الأوروبي). تغطي الجلسة الثانية ساعات الخادم من 14 إلى 18 (ما قبل افتتاح نيويورك ونصف جلسة الولايات المتحدة الأولى، وهي ثاني أكثر نوافذ الذهب نشاطاً). يمكن تفعيل كل جلسة بشكل مستقل عبر InpEnableSession1 و InpEnableSession2. تقرأ الدالة ساعة TimeCurrent() الخاصة بالوسيط مباشرة — لا يوجد كشف تلقائي عن توقيت GMT، فمعنى "الساعة 8" يعتمد كلياً على ساعة خادم الوسيط. تحمي IsSpreadOK() بقياس فارق العرض والطلب المباشر بالنقاط وترفض الإدخالات التي تتجاوز InpMaxSpread (200 افتراضياً)، وهو أمر ضروري على XAUUSD حيث يمكن أن يتضخم السبريد خارج ساعات الذروة أو خلال الأحداث الإخبارية.
وضع الهرم الآمن الاختياري (InpEnablePyramid = false افتراضياً) هو أكثر قطعة منطقية دقة في الإكسبرت. تقوم IsPyramidSafe() بثلاثة أشياء. أولاً تُرجع false فوراً إذا كان الهرم معطلاً أو وصل عدد الصفقات المفتوحة إلى InpMaxPyramidLevels (3). ثانياً تفحص كل الصفقات المفتوحة على الرمز/الرقم السحري. ثالثاً لكل صفقة موجودة تتحقق من وقف الخسارة الحالي مقابل سعر الدخول: للشراء يجب أن يكون SL أكبر من openPrice + InpMinSLProfit * _Point؛ للبيع يجب أن يكون SL أصغر من openPrice - InpMinSLProfit * _Point (أو صفراً). الدلالة هنا أن وقف الخسارة للصفقة الموجودة قد رُفع بالفعل إلى 150 نقطة على الأقل في الربح — أي أن روتين نقطة التعادل أو التتبع قد بدأ بالعمل. هذا يعني أنه لا يمكنك إضافة هرم إلى صفقة حديثة غير محمية. مع تفعيل كل من الهرم وسلّم الإدارة قد يبني يوم ذهبي قوي اتجاهياً ما يصل إلى ثلاثة إدخالات على نفس الجهة، كل واحدة بحماية أضيق تدريجياً.
تسمية الطبقات الاثني عشرة في رأس الملف طموحية. الكود لا يطبّق مصنف نظام سوقي ولا مرشح إطار زمني أعلى ولا ATR ولا ADX ولا RSI ولا بولنجر ولا فلتر أخبار ولا حد خسارة يومية ولا أرضية رصيد ولا توقف زمني ولا مسار إغلاق جزئي (دالة TryClosePartial_EX07018 موجودة لكن لا تُستدعى أبداً من OnTick) ولا دالة لياقة OnTester. ما يطبّقه فعلاً هو تقاطع 10/20 نظيف مع سلّمي إدارة ونافذتي جلسة وفلتر سبريد وحاسِّر حجم صفقة مدرك للهامش وهرم اختياري يضيف فقط حين تكون الصفقات السابقة محمية بالفعل. البساطة هي الجوهر: هذا إكسبرت صغير ومقروء ومتخصص يفعل شيئاً واحداً ميكانيكياً، والمتداولون الذين يحتاجون فلتر نظام أو انحياز إطار زمني أعلى أو فلتر أخبار عليهم أن يضيفوها بأنفسهم أو يختارون شقيقاً آخر من EX07xxx.
الإعداد الافتراضي هو 1% مخاطرة لكل صفقة، أرضية لوت 0.01، سقف لوت 1.0، وقف خسارة 500 نقطة، جني أرباح 1500 نقطة، نقطة تعادل عند +200 مع قفل +50، تتبع عند +300 مع مسافة 200 نقطة، الجلستان مفعّلتان، سقف سبريد 200 نقطة، الهرم معطل. يميّز الإكسبرت أوامره بالرقم السحري 22207018 وبسلسلة التعليق Psgrowth.com Expert_07018.
تفاصيل الاستراتيجية
يُشغّل تقاطع متوسط أسي 10/20 على XAUUSD M5، محصوراً في نافذتي ساعة الخادم (8–12 و 14–18) وبفارق سبريد ≤ 200 نقطة، ثم يُرسل أوامر سوق بوقف ثابت 500 نقطة وجني أرباح 1500 نقطة لنسبة 1:3 ثابتة. ترفع ManageBreakeven الوقف إلى الدخول + 50 نقطة ما إن يبلغ الربح +200؛ ثم تُدرِّج ManageTrailingStop الوقف 200 نقطة خلف السعر بمجرد أن يصل الربح +300. يضيف وضع الهرم الآمن الاختياري دخولاً ثانياً أو ثالثاً على الجهة نفسها فقط بعد أن يكون وقف الصفقة القائمة قد نُقل أصلاً إلى منطقة ربح بـ 150 نقطة على الأقل، أي أن المتابع لا يستطيع التوسع في الاتجاه إلا حين تكون الصفقة محمية أصلاً. حجم اللوت مبني على نسبة المخاطرة، مع احتياط مدرك للهامش يُقصُّ الحجم عند 80% من الهامش الحر وعند سقف InpMaxLotSize.
يُفعَّل الشراء عندما يغلق المتوسط الأسي لمدة 10 فترات فوق المتوسط لمدة 20 فترة على شمعة جديدة مفتوحة (الشمعة المغلقة للتو كانت fast <= slow، والشمعة الجديدة أصبحت fast > slow). البيع هو المرآة. قبل تنفيذ أي منهما يجب أن يجتاز الإكسبرت ثلاث بوابات: فحص الشمعة الجديدة وفلتر الجلسة (ساعات الخادم 8–12 أو 14–18) وفلتر السبريد (≤ 200 نقطة). إذا كانت هناك صفقة على نفس الرقم السحري وكان الهرم مفعّلاً، فيجب أن يكون وقف الخسارة للصفقة القائمة في منطقة ربح لا تقل عن 150 نقطة قبل السماح بدخول ثانٍ.
يحدث الخروج عند تقاطع 10/20 عكسي (يعود المتوسط السريع تحت البطيء لصفقات الشراء، أو فوقه لصفقات البيع) أو عند الوقف المتابع بعد أن تتحرك الصفقة 300 نقطة على الأقل في صالحها ويُرفع الوقف 200 نقطة خلف السعر. روتين نقطة التعادل لا يغلق الصفقة — بل ينقل الوقف فقط إلى الدخول + 50 نقطة بمجرد أن يصل الربح إلى +200. لا تُغلق الصفقات قسرياً عند نهاية الجلسة أو بقطع يوم الجمعة.
وقف الخسارة الابتدائي ثابت على بعد 500 نقطة من الدخول (sl = ask - 500_Point للشراء، bid + 500_Point للبيع). ما إن تتحرك الصفقة 200 نقطة في صالحها يُرفع الوقف إلى الدخول + 50 نقطة (قفل نقطة التعادل). ما إن تتحرك 300 نقطة في صالحها يبدأ التتبع على bid - 200 نقطة ويرتفع تدريجياً مع تقدّم السعر. لا يوجد وقف شامل لكل صفقة خارج نقطة الارتكاز 500.
جني الأرباح ثابت على بعد 1500 نقطة من الدخول، أي بنسبة مخاطرة إلى عائد 1:3 مقابل وقف الـ 500 نقطة. يُرسَل جني الأرباح مع الأمر ولا يُعدَّل بواسطة روتين التتبع. لا يوجد جني أرباح سلة ولا خروج زمني ولا مسار إغلاق جزئي مربوط بـ OnTick.
مُصمَّم لـ XAUUSD على الإطار M5 بحد أدنى للإيداع 100 دولار ومستوى مخاطرة متوسط. يحتاج وسيطاً تكون ساعته متوائمة مع نافذتي ساعة الخادم المثبَّتتين في الإكسبرت (8–12 و 14–18، واللتين تتابعان تقريباً افتتاح لندن وما قبل افتتاح نيويورك لمعظم وسطاء MT5 — تحقّق من ساعة خادمك قبل التشغيل الحي). يُنصح بشدة بحساب ECN أو RAW بسبريد منخفض لأن نسبة 1:3 مع وقف ذهب 500 نقطة حساسة لتكلفة السبريد عند الدخول.
منطق الاستراتيجية
Pipsgrowth EX07018 MA — تحليل منطق الاستراتيجية (من كود .mq5)
العائلة: MA
الماجيك: 22207018
الإصدار: 2.00
الوصف:
EMA crossover EA for XAUUSD M5 using fast/slow EMA crossover with ATR-based risk management, trailing stop, breakeven, session filter, spread filter and optional safe pyramiding. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
المؤشرات:
- مؤشرات قياسية
الدوال الرئيسية:
CalculateLotSize()IsWithinTradingSession()IsSpreadOK()CountOpenTrades()IsPyramidSafe()ManageTrailingStop()ManageBreakeven()IsNewBar()TryClose_EX07018()TryClosePartial_EX07018()
// Pipsgrowth EX07018 MA — Execution Flow (from source analysis)
// Family: MA
// EMA crossover EA for XAUUSD M5 using fast/slow EMA crossover with ATR-based risk management, trailing stop, breakeven, session filter, spread filter and optional safe pyramiding. 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اسحب الإكسبرت على رسم H4 أو اليومي للحصول على أفضل النتائج
- 7حدد فترات EMA وعتبة ADX وحجم اللوت في نافذة الإعدادات
- 8فعّل Allow Algo Trading واضغط OK
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| InpTradeComment | "Psgrowth.com Expert_07018" | Trade Comment |
| InpMagicNumber | 22207018 | Magic Number |
| InpFastMAPeriod | 10 | Fast EMA Period |
| InpSlowMAPeriod | 20 | Slow EMA Period |
| InpRiskPercent | 1.0 | Risk % per Trade |
| InpFixedLot | 0.01 | Fixed Lot (if Risk=0) |
| InpMaxLotSize | 1.0 | Max Lot Size |
| InpStopLoss | 500 | Stop Loss (Points) |
| InpTakeProfit | 1500 | Take Profit (Points) |
| InpUseTrailing | true | Enable Trailing Stop |
| InpTrailStart | 300 | Trail Start (Points) |
| InpTrailDistance | 200 | Trail Distance (Points) |
| InpUseBreakeven | true | Enable Breakeven |
| InpBEStart | 200 | BE Trigger (Points) |
| InpBEProfit | 50 | BE Lock Profit (Points) |
| InpEnableSession1 | true | Enable Session 1 |
| InpSession1Start | 8 | Session 1 Start Hour |
| InpSession1End | 12 | Session 1 End Hour |
| InpEnableSession2 | true | Enable Session 2 |
| InpSession2Start | 14 | Session 2 Start Hour |
| InpSession2End | 18 | Session 2 End Hour |
| InpEnableSpreadFilter | true | Enable Spread Filter |
| InpMaxSpread | 200 | Max Spread (Points) |
| InpEnablePyramid | false | Enable Pyramiding |
| InpMaxPyramidLevels | 3 | Max Pyramid Positions |
| InpMinSLProfit | 150 | Min SL in Profit (Points) |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX07018 XAUUSD_M5_EMA_Crossover_EA — EMA crossover with trailing/breakeven, full 12-layer stack."
#include <Trade/Trade.mqh>
CTrade trade;
//+------------------------------------------------------------------+
//| Input Parameters |
//+------------------------------------------------------------------+
input group "=== Identity ==="
input string InpTradeComment = "Psgrowth.com Expert_07018"; // Trade Comment
input ulong InpMagicNumber = 22207018; // Magic Number
input group "=== EMA Settings ==="
input int InpFastMAPeriod = 10; // Fast EMA Period
input int InpSlowMAPeriod = 20; // Slow EMA Period
input group "=== Risk Management ==="
input double InpRiskPercent = 1.0; // Risk % per Trade
input double InpFixedLot = 0.01; // Fixed Lot (if Risk=0)
input double InpMaxLotSize = 1.0; // Max Lot Size
input group "=== Stop Loss & Take Profit ==="
input int InpStopLoss = 500; // Stop Loss (Points)
input int InpTakeProfit = 1500; // Take Profit (Points)
input group "=== Trailing & Breakeven ==="
input bool InpUseTrailing = true; // Enable Trailing Stop
input int InpTrailStart = 300; // Trail Start (Points)
input int InpTrailDistance = 200; // Trail Distance (Points)
input bool InpUseBreakeven = true; // Enable Breakeven
input int InpBEStart = 200; // BE Trigger (Points)
input int InpBEProfit = 50; // BE Lock Profit (Points)
input group "=== Time Management ==="
input bool InpEnableSession1 = true; // Enable Session 1
input int InpSession1Start = 8; // Session 1 Start Hour
input int InpSession1End = 12; // Session 1 End Hour
input bool InpEnableSession2 = true; // Enable Session 2
input int InpSession2Start = 14; // Session 2 Start Hour
input int InpSession2End = 18; // Session 2 End Hour
input group "=== Spread Filter ==="
input bool InpEnableSpreadFilter = true; // Enable Spread Filter
input int InpMaxSpread = 200; // Max Spread (Points)
input group "=== Safe Pyramid ==="
input bool InpEnablePyramid = false; // Enable Pyramiding
input int InpMaxPyramidLevels = 3; // Max Pyramid Positions
input int InpMinSLProfit = 150; // Min SL in Profit (Points)
//+------------------------------------------------------------------+
//| Global Variables |
//+------------------------------------------------------------------+
int g_fastHandle, g_slowHandle;
datetime g_lastCandle = 0;
//+------------------------------------------------------------------+
الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على MT5 — استخدم وسيطاً موثوقاً بتنفيذ سريع وسبريد منخفض
إكسبرتات مشابهة
عرض جميع الإكسبرتاتإكسبرتات أخرى بنفس استراتيجية متابعة الاتجاه
Pipsgrowth EX16080 Trend — إكسبرت أدفايزر متابعة اتجاه
Pipsgrowth EX16080 Trend — EURUSD triple-EMA trend follower — trades EMA20/50 cross with EMA200 filter on H4, ATR-based SL/TP, risk-percent sizing . إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX16081 Trend — إكسبرت أدفايزر متابعة اتجاه
Pipsgrowth EX16081 Trend — Gold trend EA catching major XAUUSD trends using EMA 50/ 200 crossover on H4 with daily structure swing high/low and Fib. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX16033 Trend — إكسبرت أدفايزر متابعة اتجاه
Pipsgrowth EX16033 Trend — Price-action scalping EA using distance-based grid entries with net-take-profit targeting and optional lot multiplier. 1. إكسبرت أدفايزر MT5 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.