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

Pipsgrowth EX18083 TrendFollow — إكسبرت أدفايزر إكسبرت أدفايزر

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

Pipsgrowth EX18083 TrendFollow — JMA Adaptive EA for XAUUSD M5 using Jurik Moving Average with ATR-adaptive signal threshold and flat/slope filter. Inclu. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

EX18083 هو مستشار خبير لميتاتريدر 5 مبني في ملف واحد، يبني إشارته حول متوسط هول المتحرك (Hull Moving Average) يُسمح لفترة حسابه نفسها أن تتغير. يسميه المؤلف في الترويسة "JMA Adaptive"، لكن الكود داخل GetSignal() هو HMA كلاسيكي: HMA(period) = WMA(2*WMA(period/2) − WMA(period), sqrt(period)). اللمسة التكيفية هي أن قيمة period نفسها تُعاد كتابتها عند كل شموع مغلقة من نسبة ATR(30) لمدى 30 شمعة. ينسخ المستشار آخر InpBasePeriod (30) قيمة لمؤشر ATR، يحسب المتوسط، يقسم المتوسط على أحدث قيمة، يحدد النتيجة ضمن النطاق [0.5, 2.0]، ويضرب InpBasePeriod في هذا المعامل — لينتج عنه فترة نهائية بين 15 و 60 حسب ما إذا كان السوق في حالة تذبذب عالٍ أو هدوء. يُعاد بناء HMA من الصفر عند كل شمعة داخل CalculateHMA()، ولأن الفترة متغيرة لا يمكن للكود تخزين مؤشر iCustom واحد في الذاكرة المؤقتة. كل إعادة بناء تقرأ تقريباً period + sqrt(period) + 10 إغلاق، وتجري عمليتي WMA و WMA خارجية أخيرة على سلسلة الفروق الناتجة.

بعد الحصول على HMA، تنظر GetSignal() إلى HMA على الشمعة المغلقة للتو (shift 1) والشمعة التي قبلها (shift 2). اختبار ميل بسيط — hma1 > hma2 لاتجاه صاعد، hma1 < hma2 لاتجاه هابط — يحدد الاتجاه. فوق ذلك يجلس بواب مسافة: يجب أن يكون إغلاق شمعة الإشارة على الجانب الصحيح من HMA، ويجب أن يتجاوز MathAbs(close1 - hma1) قيمة current_atr * InpSignalAtrFactor (0.25 افتراضياً). عتبة المسافة هي بالتالي جزء من ATR الحالي، وليست عدد نقاط ثابتاً، مما يسمح للمستشار بقبول ارتدادات أوسع في حالات التذبذب العالي وطلب فصل أكبر في الهدوء. إذا اتفقت كل من الميل والمسافة، ترجع الدالة +1 للشراء أو −1 للبيع. إذا فشل أي شرط، ترجع 0 ولا يفعل المستشار شيئاً تلك الشمعة. لا يوجد في الكود تأكيد من إطار زمني أعلى، ولا مرشح ADX، ولا بواب أخبار، ولا مصنف نظام (regime) — InpUseFlatFilter مكشوف في قائمة المدخلات لكن GetSignal() لا يقرأه أبداً، فتغييره لا يؤثر على الصفقات.

OnTick() عبارة عن مدير مركز أحادي مبني حول بواب الشمعة المغلقة. أول ما تفعله هو استدعاء ManageProfitLock() عند كل تيك، لذا فإن جني الأرباح المتابع (trailing) مستمر حتى لو لم تُغلق الشمعة بعد. ثم مرشح الوقت (InpUseTimeFilter = true، من 08:00 إلى 20:00 بتوقيت الخادم افتراضياً) — إذا كان InpCloseAtEnd مفعّلاً، يغلق المستشار السلة كاملة في نهاية النافذة؛ وإلا فإنه يتوقف ببساطة عن فتح صفقات جديدة حتى الجلسة التالية. متغير last_bar ثابت يحصر بقية خط المعالجة على قرار واحد لكل شمعة M5، ثم تُستدعى GetSignal(). إذا كانت الإشارة غير صفرية، يمرر المستشار الاتجاه إلى CheckPyramidSafety(). ترفض هذه الدالة الإضافة ضد مركز في الاتجاه المعاكس، وترفض الإضافة إذا لم يكن المركز الموجود في نفس الاتجاه في ربح لا يقل عن InpPyramidMinProfit (100 نقطة ربح مؤمَّن، تُقاس من سعر الفتح إلى وقف الخسارة الحالي)، وترفض إذا تم الوصول إلى InpMaxPyramidTrades (3) بالفعل. إذا كان المستشار يعمل مع InpUsePyramid=false، فإنه يتصرف كنظام أحادي المركز ويفتح الصفقة الأولى فقط من السلسلة. يُحسب حجم الصفقة الجديدة عبر GetLotSize(InpStopLoss)، الذي يفضّل مخاطرة بنسبة 1% من الرصيد، ويعود إلى InpFixedLot (0.01) عندما يكون InpRiskPercent صفراً؛ تُقرَّب النتيجة إلى LotsStep للرمز، وتُقصَّ إلى LotsMin/LotsMax، وتُحَد بسقف InpMaxLotSize (10.0). وقف الخسارة InpStopLoss (500 نقطة) و جني الأرباح InpTakeProfit (1500 نقطة)، بنسبة مخاطرة/عائد ثابتة 1:3 لكل دخول — لا يوجد تحجيم مرتبط بـ ATR على المخارج، لذا فإن هيكل الصفقة ثابت بصرف النظر عن التذبذب.

ManageProfitLock() عبارة عن قفل ترس تفاضلي أحادي الاتجاه لا يرخي وقف الخسارة أبداً. للشراء، يحسب الربح الحالي بالنقاط؛ وبمجرد وصول هذا الربح إلى InpLockTrigger (300 نقطة)، يضبط وقف الخسارة المرشح عند Bid − InpLockDistance * _Point (100 نقطة خلف السعر) ولا يرسل تعديلاً إلا إذا كان وقف الخسارة الجديد أعلى من الحالي بمسافة لا تقل عن InpLockStep (50 نقطة). للبيع تعكس العملية الحسابية. لأن شرط التشغيل هو points_profit >= InpLockTrigger بشكل صارم، وشرط التعديل هو target_sl > sl + step (أو target_sl < sl - step) بشكل صارم، فإن وقف الخسارة لا يتحرك إلا في الاتجاه المربح. يُترك جني الأرباح دون مساس، لذا يبقى هدف 1500 نقطة الأصلي في مكانه حتى يُضرب جني الأرباح أو وقف الخسارة المُحرَّك. تمر عمليات الإغلاق عبر TryClose_EX18083()، غلاف بثلاث محاولات يعيد المحاولة عند TRADE_RETCODE_REQUOTE وTRADE_RETCODE_TIMEOUT وTRADE_RETCODE_PRICE_OFF وTRADE_RETCODE_PRICE_CHANGED مع فاصل 200ms؛ غلاف التعديل المقابل TryModify_EX18083() يستخدم فاصل 100ms.

وضع التعبئة مبرمج بشكل ثابت على ORDER_FILLING_FOK وSetDeviationInPoints(30) يطابق مدخل InpSlippage. يُمنح كائن m_trade السحر 22218083 والتعليق "Psgrowth.com Expert_18083". لا توجد كتلة OnTester() ولا لوحة معلومات ولا إغلاق جزئي لكل صفقة — الإغلاقات الجزئية ممررة عبر TryClosePartial_EX18083() لكن المستشار لا يستدعيها أبداً. لا يوجد قاطع تراجع (drawdown breaker) في الملف: السقف الوحيد لرأس المال هو حد حجم اللوت لكل صفقة وحد الهرمية. شغّله على وسيط XAUUSD أو EURUSD بفارق سعر منخفض (يفترض الكود حسابات مبنية على النقاط، لذا يلزم وسيط من 5 خانات لتقرأ قيم SL/TP/trailing بشكل منطقي). على رصيد 100 دولار، يضع افتراض المخاطرة 1% وقف الخسارة لكل صفقة عند ما يعادل نقدياً 100 نقطة من قيمة النقطة، وهي صغيرة بما يكفي على صفقة 0.01 لوت XAUUSD لتحمّل وقف الخسارة الثابت 500 نقطة دون استنزاف الهامش؛ ارفع InpMaxLotSize بحذر إذا زدت الإيداع. أنفع اختبار بأثر رجعي هو مقبض InpSignalAtrFactor: اخفضه (0.150.20) لمزيد من الصفقات في الاتجاهات، ارفعه (0.300.40) لاختراقات أنظف وسط الضوضاء.

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

عند كل تيك، يقوم المستشار أولاً بتشغيل ManageProfitLock() لتحريك وقف الخسارة على أي مركز مفتوح ربحه تجاوز مشغل 300 نقطة، ثم يفرض نافذة وقت الخادم 08:00–20:00 (يُغلق السلة إذا كان InpCloseAtEnd مفعّلاً)، ثم ينتظر شمعة M5 جديدة. على الشمعة المغلقة، تنسخ GetSignal() آخر 30 قيمة ATR(30)، تحسب المتوسط، وتستخدم نسبة المتوسط إلى الحالي لإعادة كتابة فترة HMA بين 15 و 60. ثم تُعيد CalculateHMA() بناء HMA(period) عند الإزاحتين 1 و 2 من الصفر بقراءة الإغلاقات وإجراء WMA داخليتين و WMA خارجية على سلسلة الفروق. ينطلق الشراء عندما hma1 > hma2 ويكون الإغلاق فوق HMA بـ 0.25 × ATR الحالي على الأقل؛ البيع يعكس ذلك. ثم ترفض CheckPyramidSafety() الإضافة ضد مركز معاكس، وترفض الإضافة لمركز في نفس الاتجاه لم يحقق 100 نقطة ربح مؤمَّن، وتسقِّف الكومة عند 3 دخول. يُحجَّم الصفقة الجديدة بنسبة 1% من الرصيد مع وقف خسارة ثابت 500 نقطة، بحد أقصى 10.0 لوت، وتُرسل مع تحمل انزلاق 30 نقطة تحت ORDER_FILLING_FOK.

إشارة الدخول

يدخل EX18083 على شمعة M5 مغلقة عندما يميل HMA التكيفي إلى الأعلى (hma1 > hma2) ويكون الإغلاق فوق HMA بأكثر من current_ATR(30) × 0.25، وتعكس الشروط في البيع. تُعاد كتابة فترة HMA نفسها عند كل شمعة من نسبة متوسط ATR(30) على آخر 30 شمعة إلى أحدث قيمة ATR(30)، محددة في النطاق [0.5, 2.0] — لذا يتنفس نطاق الرجوع بين 15 و 60 شمعة تقريباً حسب التذبذب. تُحظر الصفقات خارج نافذة الخادم 08:00–20:00 ولا تنطلق إلا مرة واحدة لكل شمعة.

إشارة الخروج

تتم المخارج عند جني الأرباح الثابت الأصلي 1500 نقطة (نسبة مخاطرة/عائد 1:3)، أو عند وقف الخسارة المُحرَّك من ManageProfitLock() بمجرد وصول الربح إلى 300 نقطة وسحب الوقف إلى السعر − 100 نقطة، أو عند وقف الخسارة 500 نقطة. يفرض الخيار InpCloseAtEnd إغلاق السلة كاملة في الساعة 20:00 بتوقيت الخادم. لا يوجد خروج عند الإشارة المعاكسة، ولا قف زمني، ولا إغلاق جزئي في الكود.

وقف الخسارة

وقف الخسارة لكل صفقة ثابت عند 500 نقطة يُطبَّق عند الدخول؛ بمجرد أن تحقق الصفقة ربحاً قدره 300 نقطة، تسحب ManageProfitLock() وقف الخسارة إلى Bid − 100 نقطة (أو Ask + 100 نقطة للبيع) ولا يُحرَّك أكثر إلا بزيادات 50 نقطة. لا يوجد سقف تراجع عالمي في الملف — الحماية الوحيدة لرأس المال هي سقف اللوت لكل صفقة وسقف هرمية 3 مراكز.

جني الأرباح

جني الأرباح ثابت عند 1500 نقطة لكل دخول، بنسبة مخاطرة/عائد ثابتة 1:3. لا يُتحجَّم جني الأرباح بـ ATR ولا يمسه منطق التريلينج — يبقى في مكانه حتى يصل السعر إليه أو يُضرب وقف الخسارة المُحرَّك أولاً.

الأنسب لـ

الأفضل على وسيط XAUUSD أو EURUSD بفارق سعر منخفض وعلى منصة من 5 خانات حيث يقرأ وقف الخسارة 500 نقطة وجني الأرباح 1500 نقطة بشكل منطقي بالدولار؛ تبقي المخاطرة 1% والحد الثابت 0.01 لوت المستشار آمناً على رصيد 100 دولار، رغم أن رفع InpMaxLotSize إلى 1.02.0 معقول لأرصدة 1000 دولار فأكثر. تستهدف نافذة الخادم 08:00–20:00 تداخل لندن–نيويورك، لذا فإن إعدادات شركات التمويل الذاتي و ECN في هذا التداخل هي الأنسب؛ أما متداولو الجلسة الآسيوية فعليهم إيقاف مرشح الوقت وخفض InpSignalAtrFactor إلى 0.15 لاقتناص الاختراقات الهادئة.

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

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

العائلة: TrendFollow الماجيك: 22218083 الإصدار: 2.00

الوصف: JMA Adaptive EA for XAUUSD M5 using Jurik Moving Average with ATR-adaptive signal threshold and flat/slope filter. Includes safe pyramiding, profit lock/trailing, time filter, and drawdown protection. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • GetSignal()
  • CalculateHMA()
  • CheckPyramidSafety()
  • ManageProfitLock()
  • GetLotSize()
  • RefreshRates()
  • IsTradingTime()
  • StrToTime()
  • CloseAllPositions()
  • TryClose_EX18083()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX18083 TrendFollow — Execution Flow (from source analysis)
// Family: TrendFollow
// JMA Adaptive EA for XAUUSD M5 using Jurik Moving Average with ATR-adaptive signal threshold and flat/slope filter. Includes safe pyramiding, profit lock/trailing, time filter, and drawdown protection. 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
الرموز المُحسّنة:
XAUUSDEURUSD
الأطر الزمنية المُحسّنة:
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

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

المعاملالافتراضيالوصف
InpMagicNumber22218083Magic Number
InpBasePeriod30Base JMA/HMA Period
InpAtrPeriod30ATR Period for Adaptation
InpSignalAtrFactor0.25Signal Distance Threshold (ATR Multiplier)
InpUseFlatFiltertrueUse Slope Flat Filter
InpPrice1Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Applied Price
InpRiskPercent1.0Risk per trade (% of Balance)
InpFixedLot0.01Fixed Lot (if Risk=0)
InpMaxLotSize10.0Max Lot Size per trade
InpStopLoss500Stop Loss (Points)
InpTakeProfit1500Take Profit (Points)
InpSlippage30Max Slippage (Points)
InpUsePyramidtrueEnable Safe Pyramiding
InpMaxPyramidTrades3Max Open Positions
InpPyramidMinProfit100Min Secured Profit (Points) for Next Add
InpUseProfitLocktrueEnable Profit Lock / Trailing
InpLockTrigger300Trigger Distance (Points in Profit)
InpLockStep50Step to advance SL (Points)
InpLockDistance100Distance to keep SL from Price (Points)
InpUseTimeFiltertrueEnable Time Filter
InpStartTime"08:00"Start Trading Time (Server)
InpEndTime"20:00"End Trading Time (Server)
InpCloseAtEndfalseClose all at end time
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX18083.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX18083 JMA_XAUUSD_5M — ATR-adaptive JMA trend EA with pyramiding, full 12-layer stack."

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

// --- Global Objects ---
CTrade         m_trade;
CSymbolInfo    m_symbol;
CPositionInfo  m_position;
CAccountInfo   m_account;

// --- Inputs ---

ENUM_APPLIED_PRICE MapAppliedPriceInt(int ap)
{
   switch(ap)
   {
      case 1: return PRICE_CLOSE;
      case 2: return PRICE_OPEN;
      case 3: return PRICE_HIGH;
      case 4: return PRICE_LOW;
      case 5: return PRICE_MEDIAN;
      case 6: return PRICE_TYPICAL;
      case 7: return PRICE_WEIGHTED;
      default: return PRICE_CLOSE;
   }
}
ENUM_APPLIED_PRICE g_InpPrice = PRICE_CLOSE;
input group "=== Identity ==="
input ulong    InpMagicNumber       = 22218083;    // Magic Number
input string   InpTradeComment      = "Psgrowth.com Expert_18083";

ENUM_APPLIED_PRICE MapAppliedPriceInt(int ap)
{
   switch(ap)
   {
      case 1: return PRICE_CLOSE;
      case 2: return PRICE_OPEN;
      case 3: return PRICE_HIGH;
      case 4: return PRICE_LOW;
      case 5: return PRICE_MEDIAN;
      case 6: return PRICE_TYPICAL;
      case 7: return PRICE_WEIGHTED;
      default: return PRICE_CLOSE;
   }
}
ENUM_APPLIED_PRICE g_InpPrice = PRICE_CLOSE;
input group "=== Signal Settings ==="
input int      InpBasePeriod        = 30;          // Base JMA/HMA Period
input int      InpAtrPeriod         = 30;          // ATR Period for Adaptation
input double   InpSignalAtrFactor   = 0.25;        // Signal Distance Threshold (ATR Multiplier)
input bool     InpUseFlatFilter     = true;        // Use Slope Flat Filter
input int InpPrice = 1; // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Applied Price

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

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

الوسوم:ex18083trendfollowpipsgrowthfreemt5xauusdeurusd

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

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

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

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

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

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

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

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