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

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

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

Pipsgrowth EX18090 TrendFollow — Gold trend-follow bot using Keltner channel breakout with EMA10/EMA200 filter, ATR-style trailing and time/session filte. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

إكس إي 18090 من Pipsgrowth ("KA-Gold Bot") يتداول على زوج XAUUSD بنظام دخول اتجاهي يتطلب تحقق ثلاثة شروط في وقت واحد: اختراق قناة كلتنر، وبوابة نظام سوق عبر EMA200، وتقاطع EMA10 مع حد القناة في نفس الشمعة. يعمل الإكسبرت على إغلاق الشموع وليس على التيك: في دالة OnTick() يحدّث الإكسبرت ثلاث مخزونات مؤشرات، ويستدعي UpdateOrders() وTrailingStop()، ولا يستدعي OpenTrades() إلا عند تغيّر iTime() للشمعة صفر. لا توجد إعادة دخول على التيك، لذا فإن نقاط الدخول محددة والانزلاق محصور في شمعة واحدة.

قناة كلتنر المخصصة مبنية داخل CalculateSignal() من ثلاث قراءات مستقلة. الخط الأوسط هو iMA(50) EMA على الإغلاق. الحدان العلوي والسفلي يُحسبان كـ: الخط الأوسط +/- findAvg(50, shift)، حيث تقوم findAvg() بجمع آخر 50 شمعة مغلقة وحساب متوسط المدى (الأعلى - الأدنى) لكل شمعة. النتيجة هي متغير من كلتنر يتسع ويتقلص مع نطاق الرمز نفسه بدلاً من مضاعف ATR ثابت، مما يجعل عتبة الاختراق تتكيف تلقائياً مع دورة تقلب الذهب. تستدعي الدالة القناة مرتين: مرة عند shift=1 (الشمعة المغلقة) ومرة عند shift=2، لتوفير قراءتين متتاليتين تستخدمهما منطق التقاطع.

لإشارة الشراء يجب تحقق الشروط الثلاثة على نفس الشمعة المغلقة: (1) iClose(1) فوق الحد العلوي لكلتنر، أي أن الإغلاق نفسه هو من اخترق وليس مجرد لمس للحد؛ (2) iClose(1) فوق EMA200(1)، وهذا فلتر للاتجاه طويل المدى؛ (3) تقاطع EMA10 مع الحد العلوي بين الشمعتين 2 و1 (EMA10[2] < upper[2] AND EMA10[1] > upper[1]). الشرط الثالث هو المُحفّز الذي يميّز الاختراق الحقيقي عن الانجراف البطيء: تقاطع EMA السريع مع القناة في نفس الشمعة التي يكون فيها الإغلاق فوقها هو توقيع زخم قوي. إشارات البيع هي المرآة.

أقواس المخاطرة متماثلة بنسبة 1:1: InpSL_Pips وInpTP_Pips كلاهما افتراضياً 500 نقطة على الذهب (نسبة مكافأة إلى مخاطرة 1:1). كلاهما يُحوّل إلى سعر عبر Pips2Double الذي يستنتجه الإكسبرت من خانات الرمز. يمكن تعطيل جني الأرباح بضبط InpTP_Pips=0، وعندها تصبح الصفقة متروكة لإدارة التريلينغ. مع الإعدادات الافتراضية، الإكسبرت يعمل كقوس 1:1، والتريلينغ يصبح مهماً فقط عند إزالة جني الأرباح أو تصفير الصفقة.

منطق التريلينغ في TrailingStop() يستخدم مُحفّزاً لمرة واحدة ثم قفل تدريجي. لكل جانب علم بولياني (isSLBuyOrd_Trigger، isSLSellOrd_Trigger) ينقلب إلى true في أول مرة يتجاوز فيها الربح ExtTrailingTrigger (افتراضي 300 نقطة). بعد ذلك، كل شمعة جديدة يكون فيها الربح أكبر من ExtTrailingStop + ExtTrailingStep (300 + 100 = 400 نقطة) يستدعي TryModify_EX18090 لرفع وقف الخسارة إلى Bid - ExtTrailingStop. المقارنة m_position.StopLoss() < (Bid - (ExtTrailingStop + ExtTrailingStep)) هي القفل أحادي الاتجاه: SL لا يُرتخى أبداً، وكل قفزة هي ExtTrailingStep (100 نقطة) أعمق في الربح. تتم إعادة ضبط الأعلام في UpdateOrders() عند إغلاق الصفقة أو عند ظهور صفقة معاكسة، فتبدأ الدورة من الصفر.

نموذج النقود في CalculateVolume() هو قرص المخاطرة الوحيد. عندما يكون isVolume_Percent=true (الافتراضي)، يُحسب حجم اللوت كـ (InpRisk * FreeMargin) / 100000، مع التقريب لأسفل إلى أقرب مضاعف من Inpuser_lot (افتراضي 0.01). النتيجة تُقصّ عند LotsMax وLotsMin. مع InpRisk=1.0 ورصيد 1000 دولار، الصيغة تعطي كسراً من اللوت القياسي. هذا ليس نموذج مخاطرة نسبي حقيقي بمعنى نسبة الرصيد — لا يحجم بناءً على مسافة وقف الخسارة — بل يحجم بناءً على الهامش الحر فقط. المتداولون الذين يتوقعون إدارة كيللي يجب عليهم ضبط isVolume_Percent=false.

ثلاث بوابات عدم-تداول تعمل قبل استدعاء الدخول. CheckSpreadAllow() يرفض عندما يتجاوز acSpread InpMax_spread=65؛ على تغذية الذهب ذات العشريتين هذا يسمح بنحو 6.5 نقطة، وهو تسامح واسع لتتبع الاتجاه على M5. CheckVolumeValue() يتحقق من اللوت مقابل SYMBOL_VOLUME_MIN وSYMBOL_VOLUME_MAX. CheckMoneyForTrade() يستدعي OrderCalcMargin للتأكد من كفاية الهامش الحر. CheckStopLoss() يؤكد أن |price - SL| و|price - TP| خارج SYMBOL_TRADE_STOPS_LEVEL، لتجنب رفض TRADE_RETCODE_INVALID_STOPS على الوسطاء الذين لديهم منطقة تجميد. فلتر InpTimeFilter، عند تفعيله، يقيّد الدخول بين 02:30 و21:00 بتوقيت السيرفر — وهي نافذة تغطي افتتاح آسيا حتى إغلاق نيويورك.

مساعدات التنفيذ TryClose_EX18090 وTryClosePartial_EX18090 وTryModify_EX18090 هي أغلفة قياسية من 3 محاولات تعيد المحاولة فقط على REQUOTE / TIMEOUT / PRICE_OFF / PRICE_CHANGED مع سكون 200ms (100ms للتعديل). مساعدا الإغلاق الكامل والجزئي موجودان لكن لا يُستدعيان من التدفق الرئيسي — OpenTrades() يستخدم m_trade.Buy / m_trade.Sell مباشرة بمحاولة واحدة، وTrailingStop() يمرر كل تعديل عبر TryModify_EX18090. عملياً، طبقة المرونة غير متماثلة: التعديلات تُعاد، الإدخالات لا تُعاد.

ملاحظة على الكود: فرع البيع في CalculateSignal() يكتب result = true بدلاً من result = ORDER_TYPE_SELL، فيُترجم إلى العدد الصحيح 1 — وORDER_TYPE_SELL هو أيضاً 1 في ENUM_ORDER_TYPE، لذا يعمل الإكسبرت بالصدفة. هذا عيب كود يستحق الإشارة إليه.

ملخص الأسلوب: هذا إكسبرت لاستمرار الزخم وليس للانعكاس. نمط اختراق كلتنر مع تقاطع EMA10 يعطي إشارة عالية الثقة لكنها نادرة — عادة حفنة من المرات أسبوعياً على XAUUSD M5 — والقوس 1:1 مع التريلينغ المتدرج مبني للسماح للفائزين بالجري عند تعطيل جني الأرباح. اضبط InpTP_Pips=0 ليتولى التريلينغ الإدارة؛ أبق على InpTP_Pips=500 لسلوك القوس السريع. فلتر EMA200 وحده يستبعد نحو نصف شموع الذهب في فترات التذبذب، لذا فإن نسبة الربح هي دالة لفترات اتجاه الذهب لا لمنطق الإكسبرت.

للنشر الحي: أي وسيط ECN/STP بسبريد خام تحت 50 نقطة على XAUUSD سيبقي CheckSpreadAllow() مفتوحاً معظم الوقت. قوس 500/500 نقطة واسع بما يكفي للعمل بحسابات اللوت الميكروي (100-300 دولار). شغّل على VPS بزمن استجابة تحت 100ms حتى يتحرك التريلينغ فعلاً داخل نفس شمعة المحفز.

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

تقوم OnTick() بتحميل ثلاث مخزونات EMA (10 و200 ووسط كلتنر 50)، ثم تستدعي UpdateOrders() لمسح أعلام محفز التريلينغ واكتشاف أي صفقة مفتوحة، ثم تستدعي TrailingStop() التي تمشي على كل المراكز بسحر الإكسبرت وتُقفل SL لكل صفقة مُحفّزة عبر TryModify_EX18090. ثم تُقيّم CalculateSignal() قناة كلتنر عند الإزاحتين 1 و2، وتُحسب الحدود العلوية/السفلية باستخدام نطاق الأعلى-الأدنى لـ50 شمعة من findAvg()، ولا تُصدر إشارة إلا عندما يكون الإغلاق خارج القناة، وعلى الجانب الصحيح من EMA200، وقد تقاطع EMA10 مع القناة. OpenTrades() مُقيّد بحدث شمعة جديدة، ونافذة InpTimeFilter 02:30-21:00 بتوقيت السيرفر، ونجاح CheckSpreadAllow وCheckVolumeValue وCheckStopLoss وCheckMoneyForTrade — وعندها فقط يطلق m_trade.Buy أو m_trade.Sell مع القوس 500/500. تحجم CalculateVolume() اللوت من الهامش الحر عند isVolume_Percent=true، وإلا تستخدم Inpuser_lot. يوجد 3 مؤشرات iMA، و14 دالة، و20 مُدخل، ولا تكرار ولا مارتينجال، وصفقة واحدة في كل مرة، والتعبئة تُكتشف تلقائياً لكل رمز.

إشارة الدخول

دخول الشراء يتطلب ثلاثة شروط على نفس شمعة M5 المغلقة: iClose(1) فوق الحد العلوي لكلتنر (إغلاق EMA(50) +/- متوسط مدى الأعلى-الأدنى لـ50 شمعة)، وiClose(1) فوق EMA200(1)، وتقاطع EMA10 مع نفس الحد العلوي بين الشمعتين 2 و1. إشارات البيع هي المرآة الصارمة. الإكسبرت لا يستدعي OpenTrades() إلا عند تغيّر الشمعة، لذا تكون نقاط الدخول مرتبطة بالشمعة ويُرفق القوس 1:1 عند التنفيذ.

إشارة الخروج

الخروج الافتراضي هو قوس وقف الخسارة وجني الأرباح المتماثل 500/500 نقطة (نسبة 1:1). بعد أن يتجاوز الربح مُحفّز 300 نقطة، يُفعَّل قفل التريلينغ: كل شمعة جديدة يكون فيها الربح أكبر من 400 نقطة يدفع SL إلى Bid-300 (أو Ask+300 للبيع) عبر TryModify_EX18090، أحادي الاتجاه ولا يُرتخى أبداً. لا يوجد خروج بإشارة معاكسة — عند تشغيل جني الأرباح، يُغلق الوسيط الصفقة عند TP وليس الكود.

وقف الخسارة

وقف الخسارة الابتدائي ثابت 500 نقطة تحت الدخول (InpSL_Pips افتراضي). بمجرد أن يتجاوز الربح 300 نقطة، يُقفل SL على Bid-300 (أو Ask+300 للبيع) في كل شمعة جديدة يكون فيها الربح أكبر من 400 نقطة، ولا يُرتخى. لا يُضبط SL لمراكز التحوط؛ تتم إعادة ضبط isSLBuyOrd_Trigger / isSLSellOrd_Trigger عند إغلاق الصفقة أو انعكاسها.

جني الأرباح

جني الأرباح افتراضياً 500 نقطة فوق الدخول (InpTP_Pips=500) لقوس 1:1. ضبط InpTP_Pips=0 يعطل جني الأرباح على جانب الوسيط ويترك الصفقة تحت إدارة التريلينغ الكاملة؛ قفل التريلينغ يظل يُشدد SL لكنه لا يحدد TP جديد. مع تشغيل TP، يُغلق الوسيط الصفقة عند الهدف وليس دالة داخل الكود.

الأنسب لـ

الأنسب لمتداولي XAUUSD M5 الذين يريدون نظام اختراق منخفض التردد — توقع 2-5 دخول أسبوعياً على الذهب — على حساب 100 دولار فأكثر بمخاطرة 1% لكل صفقة وقوس 1:1 افتراضي يتحول إلى تريلينغ عند تعطيل TP. سقف السبريد الخام 65 نقطة وأقواس 500 نقطة يحتاجان وسيط ECN/STP بسبريد خام تحت 50 نقطة؛ نافذة 02:30-21:00 بتوقيت السيرفر تغطي الجلسة الكاملة من آسيا إلى نيويورك، لذا يكون الإكسبرت أكثر نشاطاً في لندن وصباح نيويورك. استخدم VPS بزمن استجابة تحت 100ms حتى يطلق قفل التريلينغ فعلاً داخل شمعة المحفز.

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

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

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

الوصف: Gold trend-follow bot using Keltner channel breakout with EMA10/EMA200 filter, ATR-style trailing and time/session filter. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • findAvg()
  • OpenTrades()
  • TrailingStop()
  • UpdateOrders()
  • CalculateVolume()
  • CheckSpreadAllow()
  • CheckVolumeValue()
  • CheckStopLoss()
  • CheckMoneyForTrade()
  • DayOfWeekDescription()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX18090 TrendFollow — Execution Flow (from source analysis)
// Family: TrendFollow
// Gold trend-follow bot using Keltner channel breakout with EMA10/EMA200 filter, ATR-style trailing and time/session filter. 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

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

المعاملالافتراضيالوصف
InpKeltnerPeriod50Keltner length
InpEMA1010EMA 1 period
InpEMA200200EMA 2 period
Inpuser_lot0.01Volume trade
InpSL_Pips500Stoploss (in Pips)
InpTP_Pips500TP (in Pips) (0 = No TP)
InpMax_slippage3Maximum slippage allow_Pips.
InpMax_spread65Maximum allowed spread (in Point) (0 = floating)
InpTrailingTrigger300Trailing Trigger Pips (0 = Inactive)
InpTrailingStop300Trailing stop (in Pips)
InpTrailingStep100Trailing Step (in Pips)
InpTimeFiltertrueTrading Time Filter
InpStartHour2Start Hour
InpStartMinute30Start Minute
InpEndHour21End Hour
InpEndMinute0End Minute
isVolume_PercenttrueAllow Volume Percent
InpRisk1Risk Percentage of Balance (%)
InpMagicNumber22218090Magic Number
InpTradeComment"Psgrowth.com Expert_18090"Trade Comment
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX18090.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property description "Pipsgrowth.com EX18090 KA-Gold Bot — Keltner breakout gold trend-follow, full 12-layer stack."
#property strict

#define ExtBotName "KA-Gold Bot" //Bot Name
#define Version "2.00"

//Import inputal class
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
#include <Trade\AccountInfo.mqh>
#include <Trade\OrderInfo.mqh>

//--- introduce predefined variables for code readability 
#define Ask    SymbolInfoDouble(_Symbol, SYMBOL_ASK)
#define Bid    SymbolInfoDouble(_Symbol, SYMBOL_BID)

//--- input parameters
input group "=== Indicators Settings ==="
input int      InpKeltnerPeriod     = 50;          //Keltner length
input int      InpEMA10             = 10;          //EMA 1 period
input int      InpEMA200            = 200;         //EMA 2 period

input group "=== Trading Settings ==="
input double   Inpuser_lot          = 0.01;        //Volume trade
input double   InpSL_Pips           = 500;         //Stoploss (in Pips)
input double   InpTP_Pips           = 500;         //TP (in Pips) (0 = No TP)
input int      InpMax_slippage      = 3;           // Maximum slippage allow_Pips.
input double   InpMax_spread        = 65;          //Maximum allowed spread (in Point) (0 = floating)

input group "=== Trailing Settings ==="
input double   InpTrailingTrigger   = 300;         //Trailing Trigger Pips (0 = Inactive)
input double   InpTrailingStop      = 300;         //Trailing stop (in Pips)
input double   InpTrailingStep      = 100;         //Trailing Step (in Pips)

input group "=== Trading Time Settings ==="
input bool     InpTimeFilter        = true;        //Trading Time Filter
input int      InpStartHour         = 2;           //Start Hour
input int      InpStartMinute       = 30;          //Start Minute
input int      InpEndHour           = 21;          //End Hour
input int      InpEndMinute         = 0;           //End Minute

input group "=== Money Settings ==="
input bool     isVolume_Percent     = true;        //Allow Volume Percent
input double   InpRisk              = 1;           //Risk Percentage of Balance (%)

input group "=== General Settings ==="
input int      InpMagicNumber        = 22218090;      // Magic Number
input string   InpTradeComment       = "Psgrowth.com Expert_18090"; // Trade Comment

//Local parameters
int      Pips2Points;    // slippage  3 pips    3=points    30=points
double   Pips2Double;    // Stoploss 15 pips    0.015      0.0150
int      slippage;
long     acSpread;
double   ExtTrailingTrigger   = 0.0;
double   ExtTrailingStop      = 0.0;

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

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

الوسوم:ex18090trendfollowpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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