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

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

إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD، EURUSD، GBPUSD، USDJPY · M15، M30

Pipsgrowth EX16005 Trend — ADX Trend-Following EA using ADX strength and DI crossovers. BUY: ADX > threshold + +DI > -DI + Price > EMA. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

Pipsgrowth EX16005 Trend هو مستشار آلي من طراز ويلز-وايلدر للحركة الاتجاهية، لا يتداول إلا عندما يتفق كل من قوة الاتجاه واتجاهه ومرشح النظام على نفس الشمعة في نفس الوقت. بدلاً من تخمين ما إذا كان السوق يتجه أم لا، يسأل EA مؤشر ADX عن رقم — عندما يرتفع ADX(14) فوق عتبة InpADXMin (22.0 افتراضياً)، تعامل الاستراتيجية مع ذلك كدليل على أن حركة حقيقية قيد التقدم وليست ضوضاء عشوائية. ومن هناك، يقرر خطا +DI و-DI وجهة هذه الحركة، بينما يقرر EMA بـ 50 فترة على الإغلاق ما إذا كانت الشمعة تتفق مع النظام على الإطلاق. النتيجة هي بوابة AND ثلاثية الشروط ضيقة، تنتج إشارات أنظف وأقل من أي متابع اتجاه بمؤشر واحد.

مجموعة الإشارات intentionally بسيطة. يفتح روتين OnInit مقبضين فقط: hADX = iADX(_Symbol, _Period, InpADXPeriod=14) و hEMA = iMA(_Symbol, _Period, InpEMAPeriod=50, 0, MODE_EMA, PRICE_CLOSE). لا يوجد MACD ولا Stochastic ولا Bollinger ولا قراءة multi-timeframe ولا استدعاءات مؤشرات خارجية. داخل CheckSignal() يسحب EA خط ADX الرئيسي و+DI و-DI من فهرس المخزن 1 (الشمعة المغلقة للتو) مع قيمة EMA، ثم يقرأ close[1] لفحص النظام النهائي. فرع الشراء هو g_adx > InpADXMin && g_plusDI > g_minusDI && close1 > g_ema؛ وفرع البيع يعكس ذلك بـ -DI > +DI && close < EMA. ولأن القيم الثلاث تأتي من bar[1] وليس bar[0]، يُطلق الدخول عند افتتاح الشمعة التالية — لا إعادة رسم، لا تقلبات داخل الشمعة.

إدارة المراكز هي ترس ثنائي المراحل في ManageOpenPositions() كل تيكت. المرحلة الأولى هي نقطة التعادل: عندما يصل الربح إلى InpBEStart=300 نقطة، يُنقل وقف الخسارة إلى openPrice ± InpBEOffset=30 نقطة (وسادة 30 نقطة فوق الدخول لامتصاص السبريد وتلطيف الانزلاق). المرحلة الثانية هي التريلنج: بمجرد وصول الربح إلى InpTrailStart=400 نقطة، يرتفع الوقف إلى price − InpTrailDistance=200 نقطة (أو price + 200 للبيع)، مع ضامن يبقى فيه الوقف الجديد أعلى من سعر الفتح الأصلي، حتى لا يمكن إيقاف الصفقة بخسارة بمجرد نقلها. الـ SL الفعلي هو أيهما أعلى من وقف BE أو وقف التريلنج، ويُدفع التعديل إلى الوسيط عبر TryModify_EX16005 — غلاف إعادة محاولة بثلاث محاولات يعيد طلب التعديل عند REQUOTE وTIMEOUT وPRICE_OFF وPRICE_CHANGED مع 100ms Sleep بين المحاولات.

يخضع المخاطرة لغطاءين متوازيين داخل CheckDrawdownLimits(). الأول هو خسارة اليوم: في بداية كل يوم خادم (يقوم CheckNewDay بتمرير g_dailyStartBalance من account.Balance() عند منتصف الليل)، يحسب EA g_dailyStartBalance - currentBalance ويُفعّل g_ddLimitHit=true بمجرد وصول الخسارة إلى InpMaxDailyLoss=3.0%. الثاني هو الانخفاض في الأسهم من الذروة: يتم تحديث g_peakEquity كل تيكت إلى الحد الأقصى الجاري، وبمجرد وصول (peak - equity) / peak إلى InpMaxEquityLoss=10.0% يُفعّل الفخ مرة أخرى. أي من الفخين يحظر جميع الإدخالات الجديدة من خلال بوابة g_ddLimitHit في أعلى CheckDrawdownLimits، ولأن InpCloseOnDDLimit=true افتراضياً، يجبر CloseAllPositions() عبر TryClose_EX16005 — وهو نفس غلاف إعادة المحاولة المكون من 3 محاولات المستخدم في مسار التريلنج. تتم إعادة ضبط الفخ في اليوم التالي عند منتصف ليل الخادم من خلال CheckNewDay. إن InpMaxSpread=250 هو أول ما يتحقق منه OnTick، حتى قبل فلتر الوقت، لذلك لا يدخل EA أبداً في سوق متسع.

البيراميدنج مُفعّل افتراضياً (InpEnablePyramid=true، InpMaxPositions=3). يحرس IsGridSafe() قائمة المراكز المفتوحة ويرفض إضافة دخول جديد ما لم تكن كل المراكز الموجودة في نفس الاتجاه في ربح بالفعل بمقدار InpMinProfitPoints=300 على الأقل. هذا يجعل البيراميدنج بيراميدنج 'إلى القوة' وليس 'إلى الخسارة': لن يقوم EA بتخفيض المتوسط، لكنه سيضاعف في اتجاه فائز حتى ثلاث مراكز في نفس الاتجاه. المركز الأول يستخدم اللوت القياسي من CalculateLotSize (0.5% مخاطرة × الرصيد / خسارة SL لكل لوت، مقسوماً على lotStep ومُقيّداً بـ vol_min/vol_max/InpMaxLotSize=5.0)؛ الإدخالات البيراميدية اللاحقة تستخدم نفس قاعدة التحجيم بدلاً من مضاعف مارتينجال. CalculateLotSize يستدعي OrderCalcMargin() قبل إرسال الأمر، لذلك يتم رفض الطلب الذي يتجاوز الهامش الحر بـ Print error بدلاً من رفض من الوسيط.

التحكم في الوقت والجلسة اختياري. InpUseTimeFilter=false افتراضياً، مما يعني أن EA يتداول كلما كان الرمز مفتوحاً والسبريد تحت الحد. عندما يفعّل المشغّل ذلك، يحظر CheckTimeFilter() السبت والأحد تماماً، ويرفض الإدخالات خارج نافذة InpStartHour=8 إلى InpEndHour=20 بتوقيت الخادم، ويضيف إغلاقاً جماعياً يوم الجمعة عند InpFridayCloseHour=20 (يستدعي EA CloseAllPositions() لحظة وصول الساعة إلى 20:00 في day_of_week==5). بالنسبة لمعظم وسطاء التجزئة، يكون فلتر الوقت معطلاً افتراضياً منطقياً لأن إيقاع M15/M30 يقوم بالفعل بتصفية أسوأ سيولة أواخر آسيا، لكن المشغلين الذين يشغلون هذا EA على XAUUSD خلال الجلسات الرقيقة سيرغبون في تفعيله.

على الجانب التشغيلي، يستدعي OnInit SetProperFillingMode() لاكتشاف تلقائياً ما إذا كان الوسيط يدعم ORDER_FILLING_FOK أو ORDER_FILLING_IOC أو ORDER_FILLING_RETURN، ويضبط كائن CTrade وفقاً لذلك. OpenPosition() يعيد المحاولة حتى InpMaxRetries=3 مرات عند REQUOTE/PRICE_CHANGED/PRICE_OFF/TIMEOUT مع 100ms Sleep وRefreshRates بين المحاولات، ويُرسل الأمر مع سلسلة تعليق 'Psgrowth.com Expert_16005' ليسهل تحديد المراكز في السجل. لوحة المعلومات على الشارت هي OBJ_RECTANGLE_LABEL بلون dark-slate بقياس 220×180 مع ثمانية أسطر OBJ_LABEL (العنوان، السحر، ADX مع تسمية القوة، +DI، -DI، اتجاه BULLISH/BEARISH، عدد الشراء/البيع، والربح/الخسارة الجاري) تُرسم عند InpPanelX/InpPanelY. يُحرر OnDeinit كلا مقبضي المؤشر ويستدعي ObjectsDeleteAll(0, 'EA_') حتى لا تظل اللوحة باقية بعد إزالة EA.

ما يراه المشغل فعلياً في الاختبار الأمامي: تكرار تداول منخفض (ADX يتجاوز 22 مرات قليلة في الأسبوع على M15، ونصفها فقط يجتاز فلتر النظام)، نسبة فائزين عالية لأن الإدخالات مُصفّاة بقوة الاتجاه، ومن حين لآخر صفقة رابحة كبيرة عندما تصبح صفقة SL 500 نقطة صفقة TP 1500 نقطة من خلال التريلنج. الـ RR الثابت 1:3 (InpStopLoss=500 / InpTakeProfit=1500) يعطي الرياضيات فرصة قتال حتى عند 40% نسبة فوز، وأغطية 3% يومي / 10% رصيد تضع أرضية صلبة تحت تسلسلات الكوارث. EA ليس نظاماً عالي التردد — إنه فلتر لجودة الاتجاه بنسبة عائد 1:3 وميزانية مخاطرة ضيقة، ويجب تحجيمه واختيار وسيطه وفقاً لذلك.

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

في كل تيكت، يتحقق OnTick أولاً من حد السبريد (250 نقطة)، ثم فلتر الوقت إذا كان مُفعّلاً، ثم صمام DD، ثم يشغّل ManageOpenPositions لترقية أي SL مفتوح. عند افتتاح كل شمعة جديدة، يسحب CheckSignal قيم bar[1] من مقبض iADX(14) (الخط الرئيسي وخطوط DI) ومقبض iMA(EMA,50)، ويطبق بوابة AND ثلاثية الشروط، ويفتح إما مركزاً جديداً أو — إذا كان مركز موجود بالفعل في نفس الاتجاه ونجحت بوابة البيراميدنج (≤3 مراكز، IsGridSafe يؤكد أن كل مركز قائم عند +300 نقطة في الربح) — يضيف دخولاً مُدرجاً. ينشئ OnInit الوحيد مقبضين بالضبط، وتتم إعادة ضبط دائرة DD بواسطة CheckNewDay عند منتصف ليل الخادم، ويُحرر OnDeinit كلا المقبضين بالإضافة إلى لوحة الشارت.

إشارة الدخول

تُطلق إعدادات الشراء عندما يرتفع ADX(14) فوق عتبة InpADXMin (22.0 افتراضياً)، ويكون +DI فوق -DI، ويكون إغلاق الشمعة السابقة فوق EMA بـ 50 فترة. إعدادات البيع هي المرآة: ADX فوق العتبة، و-DI فوق +DI، والإغلاق تحت EMA. تُقرأ جميع القيم الثلاث من bar[1]، لذلك يُنفذ الدخول عند افتتاح الشمعة التالية — لا إعادة رسم داخل الشمعة.

إشارة الخروج

لا يوجد مسار إغلاق بربح ثابت — تأتي المخارج من وقف الخسارة 500 نقطة على الأمر أو وقف التريلنج 200 نقطة بمجرد وصول الربح إلى 400 نقطة. تنقل نقطة التعادل وقف الخسارة إلى entry + 30 نقطة عند 300 نقطة من الربح، لذلك يكون أي خروج بعد تلك النقطة على الأقل عند التعادل. تُجبر صمامات DD على CloseAllPositions() عند تجاوز عتبة 3% يومي أو 10% من ذروة الرصيد.

وقف الخسارة

يُرسل كل أمر مع وقف InpStopLoss=500 نقطة ثابت مُرفق عند الفتح. ثم يقوم ManageOpenPositions بترقية ذلك الوقف على مرحلتين: عند 300 نقطة من الربح ينتقل SL إلى entry + 30 نقطة (نقطة التعادل مع وسادة 30 نقطة فوق الدخول)، وعند 400 نقطة من الربح يلاحق SL السعر بـ 200 نقطة، ولا ينخفض أبداً عن سعر الدخول الأصلي.

جني الأرباح

يُرسل كل أمر مع هدف InpTakeProfit=1500 نقطة ثابت، مما يعطي نسبة مخاطرة/عائد 1:3 ثابتة مقابل وقف 500 نقطة. مع ترس التريلنج، يعني هذا أن الصفقة النموذجية إما تُغلق عند +1500 نقطة، أو تُخرج من خلال التريلنج، أو تضرب وقف 500 نقطة الأصلي — EA لا يخترع TP من قيمة مؤشر.

الأنسب لـ

الأفضل إقرانه مع وسيط ECN/RAW سبريد على XAUUSD أو EURUSD أو GBPUSD أو USDJPY يعمل على M15 (يعمل M15-M30) حتى يكون لدى قراءة ADX ما يكفي من الشموع للاستقرار. الحد الأدنى للرصيد الموصى به: 100 دولار — يحافظ الخطر الافتراضي 0.5% لكل صفقة على أن يكون SL 500 نقطة واحد ضمن حساب 100 دولار عند تحجيمه إلى لوت مايكرو 0.01. الجلسات: فلتر الوقت المعطل افتراضياً مناسب لأزواج FX على مدار 24 ساعة، لكن المشغلين الذين يشغلون XAUUSD يجب أن يفعّلوا نافذة 8-20 بتوقيت الخادم لتجنب سيولة أواخر آسيا. تجعل أغطية DD 3% يومي / 10% رصيد هذا مناسباً للمتداولين الذين يريدون قاطع دائرة صلب بدلاً من التجاوز التقديري.

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

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

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

الوصف: ADX Trend-Following EA using ADX strength and DI crossovers. BUY: ADX > threshold + +DI > -DI + Price > EMA

المؤشرات:

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

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

  • SetProperFillingMode()
  • CheckTimeFilter()
  • CheckDrawdownLimits()
  • CheckNewDay()
  • CheckSignal()
  • OpenPosition()
  • IsGridSafe()
  • ManageOpenPositions()
  • CalculateLotSize()
  • NormalizeLot()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX16005 Trend — Execution Flow (from source analysis)
// Family: Trend
// ADX Trend-Following EA using ADX strength and DI crossovers. BUY: ADX > threshold + +DI > -DI + Price > EMA

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
الرموز المُحسّنة:
XAUUSDEURUSDGBPUSDUSDJPY
الأطر الزمنية المُحسّنة:
M15M30

كيفية تثبيت الإكسبرت على 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

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

المعاملالافتراضيالوصف
InpMagicNumber22216005Magic Number (222 + Expert ID)
InpSlippage30Max Slippage (points)
InpMaxSpread250Max Spread (points, 0=disabled)
InpMaxRetries3Order Retry Attempts
InpTradeComment"Psgrowth.com Expert_16005"Trade Comment
InpRiskPercent0.5Risk % per Trade
InpFixedLot0.01Fixed Lot (if Risk=0)
InpMaxLotSize5.0Maximum Lot Size Cap
InpStopLoss500Stop Loss (points)
InpTakeProfit1500Take Profit (points)
InpADXPeriod14ADX Period
InpADXMin22.0ADX Minimum for Entry
InpEMAPeriod50EMA Filter Period
InpUseTimeFilterfalseEnable Time Filter
InpStartHour8Start Hour (Server Time)
InpEndHour20End Hour (Server Time)
InpTradeFridaytrueTrade on Friday
InpFridayCloseHour20Close All Friday After
InpUseBreakeventrueEnable Breakeven
InpBEStart300BE Start (points profit)
InpBEOffset30BE Offset (points above entry)
InpEnableTrailtrueEnable Trailing Stop
InpTrailStart400Trail Start Distance (points)
InpTrailDistance200Trail Distance behind price
InpEnablePyramidtrueEnable Safe Pyramiding
InpMaxPositions3Max Open Positions
InpMinProfitPoints300Min Profit (points) for Next Entry
InpUseDDProtectiontrueEnable Drawdown Protection
InpMaxDailyLoss3.0Max Daily Loss % (0=disabled)
InpMaxEquityLoss10.0Max Equity Loss % from Peak
InpCloseOnDDLimittrueClose All When DD Limit Hit
InpShowPaneltrueShow Info Panel
InpPanelX10Panel X Position
InpPanelY30Panel Y Position
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX16005.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX16005 ADX_EA — ADX Trend-Following EA, full 12-layer stack."

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

//+------------------------------------------------------------------+
//| INPUT GROUP: Trade Execution                                     |
//+------------------------------------------------------------------+
input group "═══════════ Trade Execution ═══════════"
input int      InpMagicNumber    = 22216005; // Magic Number (222 + Expert ID)
input int      InpSlippage       = 30;       // Max Slippage (points)
input int      InpMaxSpread      = 250;      // Max Spread (points, 0=disabled)
input int      InpMaxRetries     = 3;        // Order Retry Attempts
input string   InpTradeComment   = "Psgrowth.com Expert_16005";  // Trade Comment

//+------------------------------------------------------------------+
//| INPUT GROUP: Money Management                                    |
//+------------------------------------------------------------------+
input group "═══════════ Money Management ═══════════"
input double   InpRiskPercent    = 0.5;      // Risk % per Trade
input double   InpFixedLot       = 0.01;     // Fixed Lot (if Risk=0)
input double   InpMaxLotSize     = 5.0;      // Maximum Lot Size Cap
input int      InpStopLoss       = 500;      // Stop Loss (points)
input int      InpTakeProfit     = 1500;     // Take Profit (points)

//+------------------------------------------------------------------+
//| INPUT GROUP: Strategy Settings                                   |
//+------------------------------------------------------------------+
input group "═══════════ Strategy Settings ═══════════"
input int      InpADXPeriod      = 14;       // ADX Period
input double   InpADXMin         = 22.0;     // ADX Minimum for Entry
input int      InpEMAPeriod      = 50;       // EMA Filter Period

//+------------------------------------------------------------------+
//| INPUT GROUP: Time Filter                                         |
//+------------------------------------------------------------------+
input group "═══════════ Time Filter ═══════════"
input bool     InpUseTimeFilter  = false;    // Enable Time Filter
input int      InpStartHour      = 8;        // Start Hour (Server Time)
input int      InpEndHour        = 20;       // End Hour (Server Time)
input bool     InpTradeFriday    = true;     // Trade on Friday
input int      InpFridayCloseHour= 20;       // Close All Friday After

//+------------------------------------------------------------------+
//| INPUT GROUP: Trade Management                                    |
//+------------------------------------------------------------------+
input group "═══════════ Trade Management ═══════════"
input bool     InpUseBreakeven   = true;     // Enable Breakeven
input int      InpBEStart        = 300;      // BE Start (points profit)
input int      InpBEOffset       = 30;       // BE Offset (points above entry)
input bool     InpEnableTrail    = true;     // Enable Trailing Stop
input int      InpTrailStart     = 400;      // Trail Start Distance (points)
input int      InpTrailDistance  = 200;      // Trail Distance behind price

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

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

الوسوم:ex16005trendpipsgrowthfreemt5xauusdeurusdgbpusdusdjpy

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

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

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

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

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

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

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

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