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

Pipsgrowth EX16063 Trend — إكسبرت أدفايزر متابعة اتجاه

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

Pipsgrowth EX16063 Trend — Advanced position manager with multi-level trailing stops (breakeven, progressive, fixed, percentage, ATR dynamic). Moni. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

إكسبرت EX16063 ليس مولِّد إشارات — بل أداة مساعدة في MT5 لا تفتح أي صفقة من تلقاء نفسها. يُلصَق على شارت مفتوح ويترقب المراكز التي فتحتها أنت أو إكسبرت آخر على نفس الرمز، ثم يتولى إدارة وقف الخسارة لكل واحد منها عبر تصعيد من خمس مراحل. الدورة الافتراضية تعمل كل ثانية (InpUpdateFrequency = 1) داخل OnTimer، وتستدعي ScanAndManagePositions() للمرور على كل مركز مفتوح في الحساب، ثم تفلتر حسب الرمز والرقم السحري، وتمرر الناجين إلى ManagePosition()، وهي الدالة الوحيدة التي تُجري تغييرات فعلية على الحالة. لا توجد إشارات دخول، ولا أهداف ربح، ولا حزمة مؤشرات، ولا معادلة OnTester — البرنامج بالكامل هو حلقة إدارة الوقف، مع لوحة معلومات وإشعار اختياري للجوال.

البنية متعددة المستويات هي ما يميز هذا الإكسبرت عن ترايلينج ستوب عادي. تعمل DetermineTargetLevel() على تمرير الربح العائم الحالي للمركز من خلال خمسة عتبات بالترتيب: عندما يتجاوز الربح المستوى 1 (200 نقطة افتراضياً) يُنقل الوقف إلى نقطة التعادل؛ وعندما يتجاوز المستوى 2 (500 نقطة) يُرفع الوقف إلى السعر الحالي ناقصاً 250 نقطة؛ ويُضيّق المستوى 3 (1000 نقطة) المسافة إلى 150 نقطة؛ ويمكن تفعيل مرحلتين إضافيتين عند 1500 و 2000 نقطة عبر InpEnableLevel4 و InpEnableLevel5 لربط أقصر، وهما معطلتان افتراضياً. يُسجَّل كل مستوى في بنية PositionData داخل g_positionTracking[] ولا يتحرك إلا إلى الأمام — يضمن IsBetterStopLoss() و InpOnlyMoveForward معاً أن الإكسبرت لا يمكنه تخفيف وقف سبق أن رفعه.

أربع استراتيجيات ترايلينج تشغّل الحساب الفعلي للوقف. MODE_BREAKEVEN_PROGRESSIVE (الافتراضي) ينقل الوقف إلى سعر الفتح زائد هامش قابل للتعديل عند المستوى 1، ثم يتبع السعر بمسافة ثابتة من Bid/Ask الحالي للمستويات 2-5. أما MODE_FIXED_DISTANCE فيتخطى خطوة التعادل ويبدأ التتبع فوراً بالمسافة المحددة لكل مستوى. و MODE_PERCENTAGE_BASED يقفل 0% / 30% / 50% / 70% / 80% من الربح العائم في المستويات 1-5 بالترتيب، عبر تحويل المبلغ المالي إلى فرق سعري بواسطة ConvertUnitsToPrice(). و MODE_ATR_DYNAMIC يستخدم iATR(InpSymbol, PERIOD_CURRENT, InpATRPeriod) مع InpATRPeriod=14 و InpATRMultiplier=2.0، ثم يُقلّص المضاعف إلى 0.5× في المستوى 1، و 1.0× في المستوى 2، و 0.7× في المستوى 3، و 0.5× في المستوى 4، و 0.4× في المستوى 5 — أي أنه كلما تراكم الربح في الصفقة، اقترب الوقف أكثر من السعر. لا يُنشأ مؤشر ATR إلا في OnInit() عند تفعيل هذا الوضع فعلياً؛ أما الأوضاع الثلاثة الأخرى فتعمل بحسابات سعرية صرفة.

محدد الوحدات (InpUnitType) هو الجزء الذي يخطئ فيه معظم المستخدمين. UNIT_POINTS يمرر قيم العتبات مباشرة إلى منطق التتبع — 200 نقطة على XAUUSD تساوي 2.00 دولار لكل لوت 0.01، وهو ما يفترضه الباك تيست. و UNIT_PIPS يضرب × 10 على التسعير بخمس وثلاث خانات ليصبح 200 بيب تعني 200 بيب فعلاً، لا 2000 نقطة. و UNIT_MONEY تقريبي: الكود يُرجع value × g_point × 10 كتقدير خام لفرق السعر من مبلغ بالدولار، وهو تحويل سريع يعمل فقط على أحجام لوت معينة؛ الأنظف هو ترك الإكسبرت على وضع النقاط وضبط العتبات بمصطلحات فرق السعر. الأرقام الموجودة في بلوك المدخلات (200، 500، 1000، 1500، 2000) جميعها مقومة بالوحدة المختارة.

قضبان الأمان تُغلِّف منطق التتبع. InpMagicNumberFilter قيمته الافتراضية 22216063 — نفس الرقم الذي يستخدمه هذا الإكسبرت — أي أنه افتراضياً لا يدير إلا مراكزة هو. وضبطه على 0 يجعله يلمس كل مركز على رمز الشارت بصرف النظر عن فاتحه — وهو أمر مفيد لإدارة صفقات الجوال اليدوية (التي تحمل magic = 0) لكنه محفوف بالمخاطر إن كنت تشغّل محفظة من إكسبرتس أخرى على نفس الأداة. أما InpMinDistanceFromPrice (10 نقاط افتراضياً) فيُفرض بواسطة EnsureMinimumDistance() كي لا يقترب الوقف من السبريد، و ModifyStopLoss() يرفض أيضاً التعديلات الأصغر من نقطة واحدة. أداة إعادة المحاولة TryModify_EX16063() تدور في حلقة تصل إلى 3 مرات مع Sleep(100) عند requote/timeout، وهي الأداة الوحيدة من أصل ثلاث (TryClose, TryClosePartial, TryModify) موصولة فعلياً بـ ManagePosition — أدوات الإغلاق معرَّفة لكن البرنامج لا يستدعيها، لأن الإغلاق متعمَّد خارجه عن نطاق مدير الوقف.

تُعاد بناء لوحة الشارت عند كل دورة تايمر. تحذف UpdateInfoPanel() الملصقات السابقة وتُنشئ كتلة جديدة في أعلى يسار الشارت تعرض الحالة والرمز والوضع وعدد المراكز وسطراً لكل مركز يعرض التذكرة والمستوى الحالي والربح الفوري، بحد أقصى خمسة مراكز مرئية. ويُرسل SendNotification() إشعار push عبر MetaQuotes إلى الجوال عند كل نجاح في ModifyStopLoss()، مع التذكرة والمستوى الجديد وسعر الوقف الجديد — نبضة مفيدة تُعلمك بأن مركزاً قد انتقل إلى التعادل أو إلى تريل أضيق. و OnDeinit() يستدعي EventKillTimer() و IndicatorRelease() لمقبض ATR و RemoveInfoPanel()، لذا فإن إزالة الإكسبرت من الشارت عملية نظيفة لا تترك أي عناصر يتيمة.

الاقتران العملي: بُني هذا الإكسبرت لِيُوضع فوق أي مولِّد إشارات (العائلة مُسمّاة Trend، لكن لا يوجد منطق ترند داخل .mq5) ويعمل كغلاف وقائي خالص. لن ينافس إكسبرت الإشارات على التحكم في الصفقة، لأنه لا يفتح ولا يوسّع ولا يُغلق — يُحفظ جني الأرباح في الأمر الأصلي عبر كل تعديل (تُستدعى TryModify_EX16063() مع الـ TP الموجود). وفي الحسابات التي يريد فيها المتداول البشري إدارة منطق الوقف من الشارت وترك الدخول للأتمتة، يُحوِّل ضبط InpMagicNumberFilter على 0 الإكسبرت إلى مساعد للصفقات اليدوية. وفي محافظ الإكسبرتس المتعددة، يُعدّ الإبقاء على فلتر الماجيك الافتراضي هو المسار الأكثر أماناً كيلا يتسرّب التريل إلى صفقات لم يُصمَّم ليرافقها.

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

تستدعي OnTimer كل InpUpdateFrequency ثانية (افتراضياً 1)، ثم تُنشِّط ScanAndManagePositions() التي تمر على PositionsTotal() وتُصفّي حسب InpSymbol و InpMagicNumberFilter. تُوجَّه المراكز الناجية إلى ManagePosition(ticket) التي تسجِّل المركز في g_positionTracking[] (بنية PositionData تحوي التذكرة والمستوى الحالي وآخر وقف وآخر تعديل)، وتقرأ الربح الفوري بالوحدة المختارة، وتستدعي DetermineTargetLevel() لربط الربح بمستوى بين 0 و5، ثم إما أن تُرقي المستوى (إن كان targetLevel > currentLevel) أو تُعيد إحكام وقف التريل (إن كان targetLevel >= 2 ونجح SL الجديد في اختبار IsBetterStopLoss()). توجِّه CalculateNewStopLoss() إلى واحدة من أربع دوال حسابية — CalculateSL_BreakevenProgressive أو CalculateSL_FixedDistance أو CalculateSL_PercentageBased أو CalculateSL_ATRDynamic — بحسب InpTrailingMode. وتتولى EnsureMinimumDistance() و NormalizeDouble() تنظيف السعر، وتُشغِّل TryModify_EX16063() حلقة إعادة محاولة من 3 محاولات (مع Sleep(100) عند requote/timeout) قبل إرسال إشعار Push عبر MetaQuotes. تُعاد بناء لوحة الشارت كل دورة بواسطة UpdateInfoPanel() عبر CreateLabel() بالبادئة PMPanel_؛ و OnDeinit() يستدعي RemoveInfoPanel() لمحوها، و EventKillTimer() لإيقاف الحلقة، و IndicatorRelease() لتحرير مقبض ATR.

إشارة الدخول

لا يُولِّد EX16063 إشارات دخول. إنه أداة لإدارة الوقف: يفحص المراكز المفتوحة على الرمز والرقم السحري المُكوَّنين، ثم يرفع وقف الخسارة لكل مركز عبر ما يصل إلى خمسة مستويات تدريجية مع نمو الربح العائم. لا توجد حزمة إشارات ولا محفز دخول ولا معادلة OnTester — تستدعي حلقة OnTimer الدالة ScanAndManagePositions() مرة كل ثانية.

إشارة الخروج

لا يُغلق EX16063 أي صفقة أبداً. منطق الخروج وقائي خالص: عند تحريك وقف التريل، يُحرَّك إلى الأمام فقط (InpOnlyMoveForward = true افتراضياً)، ويُحفظ جني الأرباح الأصلي في كل استدعاء لـ TryModify_EX16063(). ولا تخرج الصفقة إلا عند تفعيل الوقف أو TP — وكلاهما يحدث على جانب البروكر لا داخل الإكسبرت.

وقف الخسارة

الوقف هو جوهر عمل هذا الإكسبرت بأكمله. تتدفق OnTick و OnTimer إلى ManagePosition() التي تستدعي DetermineTargetLevel() لتحديد المستوى الحالي (0-5) من الربح العائم بالنقاط أو البيب أو المال، ثم CalculateNewStopLoss() توجِّه إلى أحد أوضاع حسابية أربعة: تعادل + تدريجي (الافتراضي)، مسافة ثابتة، قفل نسبة مئوية (0/30/50/70/80%)، أو ديناميكي بـ ATR باستخدام iATR(14) بمضاعف 2.0. ويحظر IsBetterStopLoss() و InpOnlyMoveForward معاً الحركات الخلفية، ويفرض EnsureMinimumDistance() حداً أدنى 10 نقاط من Bid/Ask الحالي.

جني الأرباح

لا يوجد منطق جني أرباح داخل EX16063. تحتفظ كل صفقة بهدف الربح الأصلي — يستدعي الإكسبرت trade.PositionModify(ticket, newSL, tp) داخل TryModify_EX16063()، ويمرِّر الـ TP الموجود كما هو. إن أراد المتداول إدارة الخروج عبر جني الأرباح، فيجب ضبطه عند فتح الصفقة (بواسطة إكسبرت الإشارات أو أمر يدوي أو أداة أخرى).

الأنسب لـ

يُفضَّل إقرانه مع إكسبرت إشارات أو استخدامه كطبقة فوقية لإدارة الوقف لصفقات الجوال اليدوية، على XAUUSD M5-H1، في حسابات لا تقل عن 100$. الحد الأدنى للرصيد الموصى به 100$. يُبقي InpMagicNumberFilter الافتراضي = 22216063 التريل محصوراً بمراكزه هو؛ وضبطه على 0 يُحوِّل الإكسبرت إلى مدير لأي مركز على الرمز، بما في ذلك الأوامر اليدوية. الأكثر فائدة في الجلسات التي يكون فيها المتداول بعيداً عن الشارت ويريد رفع الوقف آلياً، مع تفضيل ECN سبريد منخفض لأن كل تعديل يستلزم رحلة إلى السيرفر.

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

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

العائلة: Trend الماجيك: 22216063 الإصدار: 2.00

الوصف: Advanced position manager with multi-level trailing stops (breakeven, progressive, fixed, percentage, ATR dynamic). Monitors and manages open positions — ideal for manual trades opened on mobile. Includes info panel and notifications. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • OnTimer()
  • ScanAndManagePositions()
  • ManagePosition()
  • CalculatePositionProfit()
  • CalculateProfitInPoints()
  • CalculateProfitInPips()
  • DetermineTargetLevel()
  • CalculateNewStopLoss()
  • CalculateSL_BreakevenProgressive()
  • CalculateSL_FixedDistance()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX16063 Trend — Execution Flow (from source analysis)
// Family: Trend
// Advanced position manager with multi-level trailing stops (breakeven, progressive, fixed, percentage, ATR dynamic). Monitors and manages open positions — ideal for manual trades opened on mobile. Includes info panel and notifications. 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اسحب الإكسبرت على رسم H4 أو اليومي للحصول على أفضل النتائج
  7. 7حدد فترات EMA وعتبة ADX وحجم اللوت في نافذة الإعدادات
  8. 8فعّل Allow Algo Trading واضغط OK

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

المعاملالافتراضيالوصف
InpSymbol"XAUUSDm"Symbol to Monitor
InpEnableEAtrueEnable EA
InpMagicNumberFilter22216063Magic number filter (0 = All positions)
InpUpdateFrequency1Update Frequency (seconds)
InpUnitTypeUNIT_POINTSUnit Type
InpTrailingModeMODE_BREAKEVEN_PROGRESSIVETrailing Mode
InpLevel1_ProfitThreshold200.0Level 1: Profit Threshold
InpLevel1_MoveSLTo0.0Level 1: Move SL To (0=Breakeven)
InpLevel2_ProfitThreshold500.0Level 2: Profit Threshold
InpLevel2_TrailDistance250.0Level 2: Trail Distance
InpLevel3_ProfitThreshold1000.0Level 3: Profit Threshold
InpLevel3_TrailDistance150.0Level 3: Trail Distance
InpEnableLevel4falseEnable Level 4
InpLevel4_ProfitThreshold1500.0Level 4: Profit Threshold
InpLevel4_TrailDistance100.0Level 4: Trail Distance
InpEnableLevel5falseEnable Level 5
InpLevel5_ProfitThreshold2000.0Level 5: Profit Threshold
InpLevel5_TrailDistance75.0Level 5: Trail Distance
InpOnlyMoveForwardtrueOnly Move SL Forward (Safety)
InpMinDistanceFromPrice10.0Minimum Distance From Price
InpEnableNotificationstrueEnable Mobile Notifications
InpShowInfoPaneltrueShow Info Panel
InpATRPeriod14ATR Period
InpATRMultiplier2.0ATR Multiplier
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX16063.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX16063 PositionManager_EA — Multi-level trailing stop manager, full 12-layer stack."

#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>

//--- Enumerations
enum ENUM_UNIT_TYPE
{
   UNIT_POINTS,        // Points (raw price points)
   UNIT_PIPS,          // Pips (standard pip calculation)
   UNIT_MONEY          // Money (dollar amount)
};

enum ENUM_TRAILING_MODE
{
   MODE_BREAKEVEN_PROGRESSIVE,  // Breakeven + Progressive Trailing (Recommended)
   MODE_FIXED_DISTANCE,         // Fixed Distance Trailing
   MODE_PERCENTAGE_BASED,       // Percentage-Based Locking
   MODE_ATR_DYNAMIC            // ATR-Based Dynamic Trailing
};

//+------------------------------------------------------------------+
//| Input Parameters                                                  |
//+------------------------------------------------------------------+

//--- Basic Settings
input group "=== Basic Settings ==="
input string   InpSymbol = "XAUUSDm";              // Symbol to Monitor
input bool     InpEnableEA = true;                 // Enable EA
input long     InpMagicNumberFilter = 22216063;     // Magic number filter (0 = All positions)
input string   InpTradeComment      = "Psgrowth.com Expert_16063";
input int      InpUpdateFrequency = 1;             // Update Frequency (seconds)

//--- Unit Selection
input group "=== Unit Selection ==="
input ENUM_UNIT_TYPE InpUnitType = UNIT_POINTS;    // Unit Type

//--- Trailing Strategy
input group "=== Trailing Strategy ==="
input ENUM_TRAILING_MODE InpTrailingMode = MODE_BREAKEVEN_PROGRESSIVE; // Trailing Mode

//--- Level 1 Configuration (Breakeven)
input group "=== Level 1 - Breakeven ==="
input double   InpLevel1_ProfitThreshold = 200.0;  // Level 1: Profit Threshold
input double   InpLevel1_MoveSLTo = 0.0;           // Level 1: Move SL To (0=Breakeven)

//--- Level 2 Configuration (First Trail)
input group "=== Level 2 - First Trail ==="
input double   InpLevel2_ProfitThreshold = 500.0;  // Level 2: Profit Threshold
input double   InpLevel2_TrailDistance = 250.0;    // Level 2: Trail Distance

//--- Level 3 Configuration (Tight Trail)
input group "=== Level 3 - Tight Trail ==="
input double   InpLevel3_ProfitThreshold = 1000.0; // Level 3: Profit Threshold
input double   InpLevel3_TrailDistance = 150.0;    // Level 3: Trail Distance

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

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

الوسوم:ex16063trendpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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