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

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

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

Pipsgrowth EX18046 TrendFollow — HeikinAshi color-change (red->green / green->red) on last CLOSED bar is the core signal. Entries gated by ADX+ATR-pct+ B. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

Pipsgrowth EX18046 هو خبير آلي (EA) لاتباع الاتجاه مبني على تغيّر لون شموع هيكن آشي، يتداول حصرياً على XAUUSD على إطار خمس دقائق. لا يقرأ مؤشر زخم أو نطاق تقلب ليختار الاتجاه — بل يراقب حدثاً واحداً محدداً جداً: تغيّر لون شمعة هيكن آشي على آخر شمعة مغلقة. التحوّل من الأحمر إلى الأخضر يقلب الميل إلى شراء، والأخضر إلى الأحمر يقلبه إلى بيع، وما بينهما صمت. هذا الحدث اللحظي هو ما يفلتره بقية النظام ثم يديره وينفذه في النهاية.

الإشارة تُحسب داخلياً في GetHeikinAshiSignal(). يجلب الخبير InpHALookback (افتراضياً 100) شمعة من الافتتاح والارتفاع والانخفاض والإغلاق، ثم يمشي للأمام محسوباً هاكن آشي وفق الصيغة المعيارية haC = (O+H+L+C)/4 وhaO = (prevO + prevC)/2. تُقارن آخر شمعتين مغلقتين (haOpen[1] وhaClose[1] مقابل haOpen[2] وhaClose[2]): ظهور شمعة خضراء بعد حمراء يُرجع +1، وظهور حمراء بعد خضراء يُرجع -1، وإلا يُرجع 0 وتنتهي الدالة فوراً. تُضاف نسبة قوة الجسم (|haC - haO| / range) إلى ثقة أساسية قدرها 55 حتى سقف 100، لكن الثقة في هذا الإصدار معلوماتية فقط — يُفتح التداول ما دامت الإشارة غير صفرية.

قبل التفكير في أي أمر، يُشغّل الخبير مصنّف DetectRegime() على شموع M5. يستخدم المصنّف iADX(14) وiATR(14) (مع نسبة مئوية على 50 شمعة) وiBands(20, 2.0). النتيجة واحدة من خمس سلاسل: StrongTrend (ADX ≥ 25، معرَّف كثابت ADX_STRONG_TREND في الكود، ونسبة ATR المئوية فوق 0.7WeakTrend (ADX ≥ 25 لكن ATR بارد)، Compress (نسبة ATR تحت 0.25Expand (نسبة ATR فوق 0.75 مع عرض بولنجر غير صفري)، Breakout (نسبة ATR فوق 0.6 مع ADX فوق 18)، Choppy (ADX تحت 15)، أو Range. الأهم أن OnTick() لا يسمح بالدخول إلا عندما regime == "StrongTrend" أو regime == "Breakout". أي شيء آخر — بما في ذلك WeakTrend وCompress — يخرج دون إطلاق. ثم يُستدعى نفس المصنّف داخل ManageOpenPositions() في كل تيك، وإذا تحوّل النظام إلى Choppy أو Range تُغلق الصفقة قسرياً بوسم REGIME-CHANGE.

البوابة التالية هي ConfirmSignal(). تتحقق من شيئين: (1) المتوسط المتحرك الأسي 50 على H1 يتفق مع الإشارة — سعر العرض فوق المتوسط للشراء، تحته للبيع — و(2) شمعة M5 التي ولّدت الإشارة أغلقت في نفس اتجاه الصفقة (إغلاق > افتتاح للشراء، إغلاق < افتتاح للبيع). إذا فشل أي منهما، تسجّل الدالة السبب وتتجاوز. يُنشأ المؤشر على g_htf = PERIOD_H1 في OnInit() ويُحفظ منفصلاً في g_hMAHTF. بعد التأكيد، يفرض الخبير حارس دخول مكرر مرتبط بوقت الشمعة المغلقة حتى لا يطلق مرتين على نفس الشمعة.

تحسب ComputeLevels() حجم وقف الخسارة وهدف الربح من iATR(14). مسافة الوقف 1.5 × ATR، ومسافة الهدف 3.0 × ATR، أي نسبة مخاطرة إلى عائد 1:2 مبرمجة. يرفض الخبير الدخول إذا كان SYMBOL_TRADE_STOPS_LEVEL الخاص بالرمز يفرض مسافة أصغر، ويعيد التحقق من أن tpDist >= slDist × InpRRMin (افتراضياً 1.5 — هذا المدخل الاحتياطي في حال غيّر المستخدم مضاعفات ATR). تُوضع الأوامر على سعر الطلب للشراء وسعر العرض للبيع، وتُقرّب إلى _Digits.

تحسب ComputeLotSize() حجم الصفقة. تأخذ رأس المال الفعال من EffectiveCapital() (وهو أصغر قيمة بين InpCapitalCapAmount ورصيد الحساب، أو الرصيد الخام إذا كان المدخل صفراً)، تضربه في InpRiskPercent (0.5 % افتراضياً)، وتقسمه على خسارة اللوت عند مسافة الوقف المحسوبة من ATR، حيث تستخدم خسارة اللوت tickVal / tickSz × slDist. يُقرّب الناتج إلى درجة حجم الوسيط، ويُقصّ عند الحد الأدنى والأقصى للحجم، وأخيراً يُقَصّ عند InpMaxLotSize (10 لوت).

إدارة الأوامر قائمة على الأحداث. تتحقق OpenTrade() أولاً عبر OrderCalcMargin، ثم ترسل عبر غلاف CTrade، مع إعادة محاولة واحدة عند TRADE_RETCODE_REQUOTE أو TRADE_RETCODE_TIMEOUT أو TRADE_RETCODE_PRICE_OFF. ثلاث دوال مساعدة في أسفل الملف — TryClose_EX18046 وTryClosePartial_EX18046 وTryModify_EX18046 — كل منها تكرّر ثلاث مرات مع Sleep قدره 200 مللي ثانية (100 مللي ثانية لتعديلات الوقف) على الأكواد العابرة. تُكتشف سياسة التعبئة تلقائياً لكل رمز عبر SetTypeFillingBySymbol في OnInit().

دورة حياة الصفقة لها أربع آليات متداخلة. (1) خروج زمني: InpMaxBarsInTrade = 60 يُفرض عبر Bars() - iBarShift()، وأي صفقة عمرها 60 شمعة تُغلق بوسم MAX-BARS. (2) نقطة التعادل: عند InpBreakevenAtR = 1.0 (أي بعد R واحد)، يُنقل الوقف إلى سعر الدخول — لكن فقط إذا كان الوقف الحالي أبعد من سعر الدخول. (3) جني جزئي: عندما يصل السعر إلى منتصف المسافة بين الدخول وهدف ATR، يُغلق InpPartialTPPct = 50 % من الصفقة عبر TryClosePartial_EX18046، مع بوابة الحد الأدنى من درجة الحجم. (4) تتبع ATR: في كل تيك، يكون التتبع خلف سعر العرض/الطلب بمقدار 2.5 × ATR(14)، لكنه أمامي فقط — لا يتحرك للخلف، وللشراء لا يتجاوز فوق الوقف الحالي وفوق سعر الدخول. إغلاق الإشارة العكسية يغلق الصفقة عندما ينقلب مصنّف HA أثناء وجود صفقة مفتوحة.

بوابة منع التداول (CanTrade()) كثيفة. تحظر عند تفعيل InpKillSwitch، أو عندما يكون رأس المال الفعال تحت InpCapitalCapFloor = 50$، أو عندما تتجاوز الخسارة المحققة لليوم InpDailyLossLimitPercent = 3 % من رأس المال الفعال (مسح يومي لتاريخ الصفقات مفلتر بالرقم السحري والرمز)، أو خلال نافذة التهدئة، أو عندما يتجاوز الفارق InpMaxSpreadPoints = 50، أو عندما CountOurPositions() >= InpMaxConcurrentTrades = 5، أو في عطلات نهاية الأسبوع، أو بعد الساعة 22:00 من يوم الجمعة بتوقيت السيرفر، أو خلال نوافذ الأخبار اليدوية 12:25-12:35 و13:55-14:05 بتوقيت السيرفر. تُفعَّل التهدئة داخل OnTradeTransaction بعد ثلاث صفقات خاسرة متتالية من نوع DEAL_ENTRY_OUT وتستمر 30 دقيقة.

معيار OnTester() المخصص هو (netProfit × profitFactor) / (1 + balanceDrawdown)، مع حد أدنى 30 صفقة تُحتسب دونه القيمة صفراً. الافتراضي InpDryRun = true يعني أن الخبير يطبع سطور DRYRUN بدل إرسال أوامر حقيقية — اعكسه إلى false للتشغيل الفعلي. الحد الأدنى للرصيد الموصى به 100$، وهو المستوى الذي وُازن الخبير له، رغم أن مدخل السقف يتيح للمتداولين تشغيل نموذج رصيد ثابت على حساب أكبر دون تضخيم المخاطرة.

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

في كل تيك، تُعيد UpdateDayBookkeeping() بناء الأرباح المحققة لليوم عبر مسح تاريخ الصفقات المفلتر بالرقم السحري 22218046 والرمز، وتُشغّل ManageOpenPositions() على مجمّع الصفقات المفتوحة — معالجة الخروج الزمني وخروج تغيّر النظام وخروج الإشارة العكسية وقفل نقطة التعادل عند 1.0R والإغلاق الجزئي 50% عند منتصف الهدف ووقف التتبع الأمامي فقط 2.5×ATR(14). تستخدم الأوامر بوابة شمعة جديدة مرتبطة بـ iTime shift 0، فلا تعمل منطق الإشارة إلا مرة لكل شمعة. تبني GetHeikinAshiSignal() مصفوفات HA من InpHALookback شمعة M5 وتبحث عن انعكاس لون في آخر شمعة مغلقة؛ النتيجة +1 أو -1 أو 0. ثم يصنّف DetectRegime() قيم ADX(14) ونسبة ATR(14) المئوية وعرض بولنجر إلى واحد من خمسة أنظمة، ولا يتقدم بلوك OnTick إلا عندما يكون النظام StrongTrend أو Breakout. تتحقق ConfirmSignal() من اتفاق المتوسط الأسي 50 على H1 وأن إغلاق M5 للشمعة المحفّزة في اتجاه الصفقة. تحسب ComputeLotSize() حجم الصفقة لتخاطر InpRiskPercent (0.5%) من رأس المال الفعال، مع سقف InpMaxLotSize. تُجري OpenTrade() فحصاً مسبقاً عبر OrderCalcMargin وترسل عبر CTrade مع إعادة محاولة واحدة على requote أو timeout أو price-off. تفلتر بوابة CanTrade() حسب الفارق وحد الخسارة اليومية والتهدئة والحد الأقصى للصفقات المتزامنة وعطلة نهاية الأسبوع والجمعة 22:00 ونوافذ الأخبار 12:30 و14:00.

إشارة الدخول

تُطلق الأوامر بناءً على حدث واحد: انعكاس لون شمعة هيكن آشي على آخر شمعة M5 مغلقة. الانعكاس من أحمر إلى أخضر على الشمعة [1] (بعد شمعة خضراء عند [2]) يعطي إشارة شراء +1؛ والأخضر إلى أحمر يعطي بيع -1. بعد ذلك يجب أن تجتاز الإشارة تأكيدين: اتفاق اتجاه المتوسط الأسي 50 على H1 (سعر العرض فوقه للشراء، تحته للبيع) وأن يكون إغلاق شمعة M5 المحفّزة في اتجاه الصفقة. مصنّف DetectRegime() لا يسمح بالدخول إلا عندما يكون النظام StrongTrend (ADX ≥ 25 مع نسبة ATR المئوية فوق 0.7) أو Breakout (نسبة ATR فوق 0.6 مع ADX فوق 18).

إشارة الخروج

تعمل الخروجات بأربع آليات متداخلة: وقف زمني 60 شمعة يغلق الصفقة بوسم MAX-BARS؛ خروج عند تغيّر النظام عندما يتحول DetectRegime() إلى Choppy أو Range؛ خروج عند الإشارة العكسية عندما ينقلب مصنّف HA أثناء وجود صفقة مفتوحة؛ وهدف جني ربح صلب قائم على ATR عند 3.0×ATR(14). وقف التتبع أمامي فقط بمقدار 2.5×ATR(14)، وقفل نقطة التعادل عند 1.0R، وإغلاق جزئي 50% عند منتصف المسافة بين الدخول وهدف ATR.

وقف الخسارة

وقف الخسارة = 1.5 × ATR(14) من سعر الدخول، محسوب من سعر الطلب للشراء ومن سعر العرض للبيع. تُقَلّم المسافة عند الحد الأدنى لمستوقفات الوسيط (SYMBOL_TRADE_STOPS_LEVEL) مضافاً إليه نقطة واحدة. ترفض ComputeLevels() الدخول أيضاً إذا كانت نسبة المخاطرة إلى العائد الناتجة ستنخفض عن 1:1.5.

جني الأرباح

جني الأرباح = 3.0 × ATR(14) من سعر الدخول، من سعر الطلب للشراء ومن سعر العرض للبيع. ينتج عن ذلك نسبة عائد إلى مخاطرة 1:2 ثابتة مقابل وقف 1.5×ATR. يُنفَّذ إغلاق جزئي 50% عند منتصف المسافة بين الدخول وهدف ATR عبر TryClosePartial_EX18046.

الأنسب لـ

يُشغَّل بشكل أفضل على XAUUSD M5 مع وسيط ECN بفارق منخفض (فلتر الفارق 50 نقطة هو القيد الحاسم على التغذية البطيئة)، بحد أدنى للرصيد 100$ ليتناسب مع المخاطرة 0.5% لكل صفقة وأرضية سقف رأس المال 50$. نسبة المخاطرة إلى العائد الثابتة 1:2 مع الإدخال المسموح به فقط في StrongTrend/Breakout تجعله مناسباً للجلسات النشطة عندما يتمدد ATR — أساساً تداخل لندن مع أوائل نيويورك على الذهب، مع قطع صارم عند 22:00 بتوقيت السيرفر يوم الجمعة. InpDryRun افتراضياً true، فاعكسه قبل النشر على حساب حقيقي.

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

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

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

الوصف: HeikinAshi color-change (red->green / green->red) on last CLOSED bar is the core signal. Entries gated by ADX+ATR-pct+ Bollinger-width regime filter (only StrongTrend/Breakout permitted), 2-confirm requirement (HTF trend + candle close direction), full no-trade gate, ATR-based hard SL/TP, break- even, 50% partial TP, ATR trailing, max-bars exit, regime- change exit, opposite-signal exit. Capital Allocation Cap drives all risk math. Default DRY-RUN; pyramid/scaling OFF. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

  • ADX
  • ATR
  • BB
  • MA
  • MAHTF

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

  • EffectiveCapital()
  • UpdateDayBookkeeping()
  • DailyLossDollars()
  • AboveDailyLossLimit()
  • CanTrade()
  • DetectRegime()
  • GetHeikinAshiSignal()
  • ConfirmSignal()
  • ComputeLevels()
  • ComputeLotSize()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX18046 TrendFollow — Execution Flow (from source analysis)
// Family: TrendFollow
// HeikinAshi color-change (red->green / green->red) on last CLOSED bar is the core signal. Entries gated by ADX+ATR-pct+ Bollinger-width regime filter (only StrongTrend/Breakout permitted), 2-confirm requirement (HTF trend + candle close direction), full no-trade gate, ATR-based hard SL/TP, break- even, 50% partial TP, ATR trailing, max-bars exit, regime- change exit, opposite-signal exit. Capital Allocation Cap drives all risk math. Default DRY-RUN; pyramid/scaling OFF. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

ON_INIT:
    Create indicator handles: ADX, ATR, BB, MA, MAHTF
    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_18046"Trade comment
InpDryRuntrueDry-run mode (no real sends)
InpKillSwitchfalseGlobal kill switch
InpCapitalCapAmount0.0Cap amount ($, real money equity)
InpCapitalCapFloor50.0Floor below which no new entries ($)
InpRiskPercent0.5Risk per trade (% of effective capital)
InpDailyLossLimitPercent3.0Daily loss limit (% of effective capital)
InpMaxLotSize10.0Max lot size (lots)
InpMaxConcurrentTrades5Max concurrent trades (count)
InpMaxSpreadPoints50Max allowed spread (points)
InpCooldownLosses3Cooldown after N consecutive losses
InpHALookback100HeikinAshi calc lookback (bars)
InpSLATRMult1.5SL distance (x ATR)
InpTPATRMult3.0TP distance (x ATR)
InpRRMin1.5Min reward:risk to enter
InpBreakevenAtR1.0Move to break-even at R multiple
InpPartialTPPct50Partial TP percent (%)
InpTrailATRMult2.5ATR trailing multiplier (x ATR)
InpMaxBarsInTrade60Max bars in trade (bars)
InpADXPeriod14ADX period (bars)
InpATRPeriod14ATR period (bars)
InpBBPeriod20Bollinger Bands period (bars)
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX18046.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX18046 HA2 XAUUSD M5 -- HeikinAshi color-change trend EA, full 12-layer stack."
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\DealInfo.mqh>

#define EA_MAGIC          22218046
#define EA_VERSION        "2.00"
#define EA_FAMILY         "TrendFollow"
#define ADX_STRONG_TREND  25.0

//============================== INPUTS ==============================
input group "=== Identity ==="
input string   InpTradeComment          = "Psgrowth.com Expert_18046"; // Trade comment

input group "=== System ==="
input bool     InpDryRun                = true;        // Dry-run mode (no real sends)
input bool     InpKillSwitch            = false;       // Global kill switch

input group "=== Capital Allocation Cap (§4.6) ==="
// InpCapitalCapEnabled removed — use InpCapitalCapAmount=0 to disable        // Enable capital cap
input double   InpCapitalCapAmount      = 0.0;       // Cap amount ($, real money equity)
input double   InpCapitalCapFloor       = 50.0;        // Floor below which no new entries ($)

input group "=== Risk & Sizing ==="
input double   InpRiskPercent           = 0.5;         // Risk per trade (% of effective capital)
input double   InpDailyLossLimitPercent = 3.0;         // Daily loss limit (% of effective capital)
input double   InpMaxLotSize            = 10.0;        // Max lot size (lots)
input int      InpMaxConcurrentTrades   = 5;           // Max concurrent trades (count)
input int      InpMaxSpreadPoints       = 50;          // Max allowed spread (points)
input int      InpCooldownLosses        = 3;           // Cooldown after N consecutive losses

input group "=== Signal & Entry ==="
input int      InpHALookback            = 100;         // HeikinAshi calc lookback (bars)

input group "=== SL / TP / Manage ==="
input double   InpSLATRMult             = 1.5;         // SL distance (x ATR)
input double   InpTPATRMult             = 3.0;         // TP distance (x ATR)
input double   InpRRMin                 = 1.5;         // Min reward:risk to enter
input double   InpBreakevenAtR          = 1.0;         // Move to break-even at R multiple
input int      InpPartialTPPct          = 50;          // Partial TP percent (%)
input double   InpTrailATRMult          = 2.5;         // ATR trailing multiplier (x ATR)
input int      InpMaxBarsInTrade        = 60;          // Max bars in trade (bars)

input group "=== Regime ==="
input int      InpADXPeriod             = 14;          // ADX period (bars)
input int      InpATRPeriod             = 14;          // ATR period (bars)
input int      InpBBPeriod              = 20;          // Bollinger Bands period (bars)

//============================== GLOBALS =============================
CTrade         m_trade;
CPositionInfo  m_position;
CSymbolInfo    m_symbol;
CAccountInfo   m_account;

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

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

الوسوم:ex18046trendfollowpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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