P
PipsGrowth
متابعة الاتجاهمفتوح المصدر - مجاني

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()
الرمز الزائف (Pseudocode)
// 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)

ملف التحسين

الوسطاء المُحسّنون:
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اسحب الإكسبرت على رسم H4 أو اليومي للحصول على أفضل النتائج
  7. 7حدد فترات EMA وعتبة ADX وحجم اللوت في نافذة الإعدادات
  8. 8فعّل Allow Algo Trading واضغط OK

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

المعاملالافتراضيالوصف
InpTradeComment"Psgrowth.com Expert_07018"Trade Comment
InpMagicNumber22207018Magic Number
InpFastMAPeriod10Fast EMA Period
InpSlowMAPeriod20Slow EMA Period
InpRiskPercent1.0Risk % per Trade
InpFixedLot0.01Fixed Lot (if Risk=0)
InpMaxLotSize1.0Max Lot Size
InpStopLoss500Stop Loss (Points)
InpTakeProfit1500Take Profit (Points)
InpUseTrailingtrueEnable Trailing Stop
InpTrailStart300Trail Start (Points)
InpTrailDistance200Trail Distance (Points)
InpUseBreakeventrueEnable Breakeven
InpBEStart200BE Trigger (Points)
InpBEProfit50BE Lock Profit (Points)
InpEnableSession1trueEnable Session 1
InpSession1Start8Session 1 Start Hour
InpSession1End12Session 1 End Hour
InpEnableSession2trueEnable Session 2
InpSession2Start14Session 2 Start Hour
InpSession2End18Session 2 End Hour
InpEnableSpreadFiltertrueEnable Spread Filter
InpMaxSpread200Max Spread (Points)
InpEnablePyramidfalseEnable Pyramiding
InpMaxPyramidLevels3Max Pyramid Positions
InpMinSLProfit150Min SL in Profit (Points)
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX07018.mq5
#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;

//+------------------------------------------------------------------+

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

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

الوسوم:ex07018mapipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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