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()
// 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)ملف التحسين
كيفية تثبيت الإكسبرت على 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
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| InpMagicNumber | 22216005 | Magic Number (222 + Expert ID) |
| InpSlippage | 30 | Max Slippage (points) |
| InpMaxSpread | 250 | Max Spread (points, 0=disabled) |
| InpMaxRetries | 3 | Order Retry Attempts |
| InpTradeComment | "Psgrowth.com Expert_16005" | Trade Comment |
| InpRiskPercent | 0.5 | Risk % per Trade |
| InpFixedLot | 0.01 | Fixed Lot (if Risk=0) |
| InpMaxLotSize | 5.0 | Maximum Lot Size Cap |
| InpStopLoss | 500 | Stop Loss (points) |
| InpTakeProfit | 1500 | Take Profit (points) |
| InpADXPeriod | 14 | ADX Period |
| InpADXMin | 22.0 | ADX Minimum for Entry |
| InpEMAPeriod | 50 | EMA Filter Period |
| InpUseTimeFilter | false | Enable Time Filter |
| InpStartHour | 8 | Start Hour (Server Time) |
| InpEndHour | 20 | End Hour (Server Time) |
| InpTradeFriday | true | Trade on Friday |
| InpFridayCloseHour | 20 | Close All Friday After |
| InpUseBreakeven | true | Enable Breakeven |
| InpBEStart | 300 | BE Start (points profit) |
| InpBEOffset | 30 | BE Offset (points above entry) |
| InpEnableTrail | true | Enable Trailing Stop |
| InpTrailStart | 400 | Trail Start Distance (points) |
| InpTrailDistance | 200 | Trail Distance behind price |
| InpEnablePyramid | true | Enable Safe Pyramiding |
| InpMaxPositions | 3 | Max Open Positions |
| InpMinProfitPoints | 300 | Min Profit (points) for Next Entry |
| InpUseDDProtection | true | Enable Drawdown Protection |
| InpMaxDailyLoss | 3.0 | Max Daily Loss % (0=disabled) |
| InpMaxEquityLoss | 10.0 | Max Equity Loss % from Peak |
| InpCloseOnDDLimit | true | Close All When DD Limit Hit |
| InpShowPanel | true | Show Info Panel |
| InpPanelX | 10 | Panel X Position |
| InpPanelY | 30 | Panel Y Position |
#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
الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على 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 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.