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()
// 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)ملف التحسين
كيفية تثبيت الإكسبرت على 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
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| InpKeltnerPeriod | 50 | Keltner length |
| InpEMA10 | 10 | EMA 1 period |
| InpEMA200 | 200 | EMA 2 period |
| Inpuser_lot | 0.01 | Volume trade |
| InpSL_Pips | 500 | Stoploss (in Pips) |
| InpTP_Pips | 500 | TP (in Pips) (0 = No TP) |
| InpMax_slippage | 3 | Maximum slippage allow_Pips. |
| InpMax_spread | 65 | Maximum allowed spread (in Point) (0 = floating) |
| InpTrailingTrigger | 300 | Trailing Trigger Pips (0 = Inactive) |
| InpTrailingStop | 300 | Trailing stop (in Pips) |
| InpTrailingStep | 100 | Trailing Step (in Pips) |
| InpTimeFilter | true | Trading Time Filter |
| InpStartHour | 2 | Start Hour |
| InpStartMinute | 30 | Start Minute |
| InpEndHour | 21 | End Hour |
| InpEndMinute | 0 | End Minute |
| isVolume_Percent | true | Allow Volume Percent |
| InpRisk | 1 | Risk Percentage of Balance (%) |
| InpMagicNumber | 22218090 | Magic Number |
| InpTradeComment | "Psgrowth.com Expert_18090" | Trade Comment |
#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;الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على 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 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.