Pipsgrowth EX18116 TrendFollow — إكسبرت أدفايزر إكسبرت أدفايزر
إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD · M15، H4
Pipsgrowth EX18116 TrendFollow — Multi-timeframe EMA trend-confluence system for XAUUSD. Confirms M15/H1/H4 EMA alignment before entering, sizes lots dyn. إكسبرت أدفايزر MT5 مفتوح المصدر.
نظرة عامة
إكس 18116 QuantumGold خبير آلي بلغة MQL5 يتكون من 126 سطرًا ويتداول على الذهب بشرط أن يظهر الاتجاه نفسه على ثلاثة أُطر زمنية في وقت واحد قبل أن يفتح أي صفقة. يُعرِّف الملف نفسه ضمن عائلة TrendFollow ويقترح الرمز XAUUSD على إطار M15 (مع إطاري H1 وH4 للتأكيد)، رغم أن البنية نفسها قابلة للنقل إلى أي رمز يتوفر له بيانات تيك مستمرة. الرقم السحري 22218116 يميز كل أمر، وتعليق الصفقة يُلحق دائمًا بـ Psgrowth.com Expert_18116 Buy أو Sell بحيث تكون الصفقة واضحة لا لبس فيها في سجل المنصة.
مجموعة المؤشرات ضيقة عمدًا. تُنشأ ثلاثة متوسطات متحركة أسية بطول 50 في OnInit — hM15_EMA وhH1_EMA وhH4_EMA — جميعها مطبقة على PRICE_CLOSE. متوسط المدى الحقيقي ATR بطول 14 يُقرأ من إطار H1 لتحديد مسافة وقف الخسارة. لا يوجد RSI ولا ADX ولا MACD ولا أغلفة بولنجر ولا لوحة معلومات. يُسجِّل OnInit المقابض الأربعة ويُحررها OnDeinit، وهذا هو كامل البصمة التشغيلية. تتم قراءات المؤشرات مرة واحدة لكل شمعة مغلقة، وتقرأ الدالة شمعة واحدة بالضبط من كل مقبض عبر CopyBuffer(..., 1, 1, buf)، وبذلك يكون قرار الدخول على شمعة مغلقة غير قابل لإعادة الرسم.
قاعدة الدخول هي السمة المميزة للملف. عندما يكون InpMTFConfirm = true (الافتراضي)، تتطلب صفقة الشراء أن يكون bid > M15 EMA(50) وbid > H1 EMA(50) وbid > H4 EMA(50) في آنٍ معًا؛ أما صفقة البيع فتتطلب الاختراق العكسي المتماثل على جانب العرض. عندما يكون InpMTFConfirm = false، تنهار الحراسة متعددة الأطر إلى شرط واحد على H1 EMA. اختبار مستوى السعر — مقارنة bid مباشرة بقيمة كل متوسط متحرك — هو نوع من فحوصات التوافق التي تطلق متأخرًا في اتجاه راسخ ونادرًا ما تطلق عند إعادة الدخول العكسية، وهو بالضبط التحيز الذي يسعى إليه متداول الذهب المتأرجح.
يُحسب وقف الخسارة وجني الأرباح من قراءة ATR(14) على إطار H1 في نفس لحظة قراءة المتوسطات. الوقف = ATR * 1.5، وجني الأرباح = SL * 2.0، أي نسبة مخاطرة إلى عائد 1:2 ثابتة في كل أمر. يُرسَل كلا السعرين الواقيين إلى الوسيط مع الأمر ثم تتولاهما وحدة التتبع. يُحسب حجم اللوت في CalcLot(double sl) وفق المعادلة lot = max(0.01, (balance * InpRiskPct/100) / (sl/ts * tickValue))، حيث InpRiskPct الافتراضي 1.0 بالمئة من الرصيد الحالي. هذا مُحدِّد حجم كلاسيكي بنسبة مخاطرة من الرصيد مع حد أدنى 0.01 لوت، مقرَّب إلى منزلتين عشريتين. لا يوجد منحنى رصيد متراكم ولا نسبة كيلي ولا سقف أعلى لحجم اللوت، وعلى المتداول الراغب في تقييد التعرض في الحسابات الكبيرة فعل ذلك عبر InpRiskPct نفسه.
إدارة الصفقات تتمثل في دالة ManageTrailing() التي تُستدعى عند كل تيك قبل أي دخول جديد. تتجاوز PositionsTotal() من نهاية القائمة، وتُصفّي حسب POSITION_MAGIC == InpMagicNumber وPOSITION_SYMBOL == _Symbol، ثم تحسب الوقف المرشح كـ bid - InpTrailingStop * _Point للشراء وask + InpTrailingStop * _Point للبيع. لا يُقبل الوقف الجديد إلا إذا كان خلف سعر الفتح (أي أن الصفقة رابحة) وكان أضيق من الوقف الحالي. كل تعديل مقبول يمر عبر TryModify_EX18116 التي تعيد المحاولة حتى ثلاث مرات عند أخطاء TRADE_RETCODE_REQUOTE أو TRADE_RETCODE_TIMEOUT أو TRADE_RETCODE_PRICE_OFF أو TRADE_RETCODE_PRICE_CHANGED، مع نوم 100 مللي ثانية بين المحاولات. InpTrailingStop افتراضيًا 40 نقطة (4 نقاط على تسعير الذهب من 5 أرقام)، فيتم تشديد الوقف كل 40 نقطة حركة في صالح الصفقة ولا يتفلت أبدًا.
الملف أحادي الصفقة عمدًا. تُستدعى HasTrade() قبل أي كتلة دخول؛ فإذا وُجدت أي صفقة بنفس الرقم السحري ونفس الرمز، يخرج الخبير ببساطة من تلك الشمعة. لا يوجد تكرار دخول ولا توسيع تدريجي ولا طبقة تحوط ولا جني أرباح جزئي. مساعدتا إعادة المحاولة TryClose_EX18116 وTryClosePartial_EX18116 مُعرَّفتان في المصدر لكن لا يُشار إليهما من المسار النشط — فهما سقالات تحسبًا لتوسيع الخبير لاحقًا لإغلاق سلال أو تنفيذ خروج جزئي. المغلِّف الوحيد الذي يُستدعى فعلًا هو TryModify_EX18116.
حارس المخاطرة الفعلي هو سقف الخسارة اليومي. عند أول تيك بعد أن تصل ساعة الخادم إلى 00:00، يُسجِّل الخبير dayStartBalance = AccountInfoDouble(ACCOUNT_BALANCE) ويُحدِّث lastDay. في كل تيك بعد ذلك يحسب (dayStartBalance - equity) / dayStartBalance * 100 ويُرجع فورًا إذا وصلت الخسارة إلى InpMaxDailyLoss بالمئة (الافتراضي 3.0). هذا فحص لرصيد بداية اليوم لا لرصيد الذروة، فالربح القوي المبكر لا يرفع العتبة — فقط رقم بداية اليوم هو المعيار. عند بلوغ السقف، يستمر الخبير في استدعاء ManageTrailing() للصفقات القائمة لكنه يتوقف عن فتح صفقات جديدة، وهذا هو عدم التماثل الصحيح لإيقاف مؤقت للجلسة.
الطبقات الأخرى المُدَّعاة في ترويسة الملف غير منفَّذة في المتن. لا توجد دالة OnTester ولا مصنِّف نظام سوق ولا مدخل سقف رأس مال ولا مرشح أخبار ولا مرشح جلسة ولا مرشح تذبذب ATR ولا تكرار دخول ولا نقل إلى نقطة التعادل ولا لوحة معلومات. ترويسة الإعلانات تختصر المكدس المكون من اثنتي عشرة طبقة كملخص تسويقي، لكن الكود التنفيذي أقرب إلى نظام من خمس قطع: توافق اتجاهي، وقف قائم على ATR، هدف بنسبة 1:2، تحديد حجم بنسبة مخاطرة، ووقف متابع 40 نقطة مع قاطع دائرة خسارة يومية 3 بالمئة.
في الاختبار التاريخي، التبعات العملية: كل صفقة تحتاج إلى نحو 0.5× ATR من الفراغ في الوقف، فيفضِّل الخبير جلسات الذهب التي يكون فيها 1.5× ATR لساعة H1 على الأقل بضعة دولارات — أي تداخل آسيا/لندن ونصف جلسة نيويورك الأول تقريبًا. قيد الصفقة الواحدة يعني أن منحنى الرصيد سيكون سلسلة من الرحلات المستقلة لا من شبكات متراكبة، وغياب خطوة التعادل يعني أن الصفقات الخاسرة عادةً ما تُغلق بوقف المتابعة فقط عندما ينقلب الهيكل بوضوح. على من يجري الباك تيست أن يتوقع نسبة فوز متواضعة ومتوسط ربح يساوي ضعف متوسط الخسارة، وهي التركيبة المستدامة الوحيدة لنسبة 1:2 بميزانية مخاطرة 1 بالمئة.
تفاصيل الاستراتيجية
تُنشأ ثلاثة مقابض EMA(50) على M15/H1/H4 ومقبض ATR(14) واحد على H1 في OnInit؛ عند كل تيك يتحقق الكود أولًا من شمعة جديدة، ويُعيد ضبط رصيد اليوم إذا وصلت ساعة الخادم إلى 00:00، ثم يطبِّق حارس خسارة يومية 3% يخرج مبكرًا إذا كان (dayStartBalance - equity)/dayStartBalance*100 >= InpMaxDailyLoss. تُستدعى ManageTrailing() بعد ذلك فتمشي على الصفقات المُصفَّاة بالرقم السحري 22218116 والرمز، وتشدّ كل وقف إلى ± InpTrailingStop * _Point فقط عندما يكون الوقف الجديد خلف سعر الفتح وأضيق من الوقف الحالي، مع إعادة المحاولة عبر TryModify_EX18116 (3×100 مللي ثانية). ثم تقطع HasTrade() بقية التيك إذا وُجدت أي صفقة مفتوحة، مما يفرض نظام صفقة واحدة في كل مرة. تنسخ كتلة الإشارة شمعة واحدة للخلف من كل EMA ومن ATR، وتحسب SL = ATR*1.5 وTP = SL*2.0، وتحدد حجم اللوت بـ CalcLot (1% من الرصيد / (sl/ts * tickValue)، بحد أدنى 0.01)، ثم تُطلق trade.Buy أو trade.Sell واحدًا بملحق Buy/Sell في التعليق. الطبقات المُعلَنة الأخرى (مصنِّف نظام السوق، OnTester، سقف رأس المال، مرشح الأخبار، مرشح الجلسة، لوحة المعلومات) غائبة عن المتن.
تتطلب صفقة الشراء أن يكون bid > M15 EMA(50) وbid > H1 EMA(50) وbid > H4 EMA(50) على شمعة مغلقة؛ أما صفقة البيع فهي الاختراق العكسي المتماثل على جانب العرض. عند ضبط InpMTFConfirm على false، تنهار الحراسة متعددة الأطر إلى شرط واحد على H1 EMA(50). تُؤخذ عينة الإشارة مرة واحدة لكل شمعة M15 مغلقة عبر CopyBuffer(..., 1, 1, ...)، وبذلك فهي غير قابلة لإعادة الرسم.
تتم إدارة الخروج بالكامل بواسطة وقف الخسارة وجني الأرباح على جانب الوسيط، دون منطق خروج في الكود سوى وقف المتابعة. تُستدعى ManageTrailing() عند كل تيك وتشدِّ وقف الحماية إلى bid ± InpTrailingStop * _Point كلما كان الوقف الجديد في منطقة الربح وأضيق من الوقف الحالي؛ لكنها لا تغلق الصفقات بشكل مباشر. مساعدتا TryClose* المُعرَّفتان في المصدر لا تُستدعيان من المسار النشط.
وقف الخسارة = ATR(14) على H1 × 1.5، يُحسب لحظة إطلاق الأمر ويُرسَل إلى الوسيط مع الأمر. بعد ذلك يقوم ManageTrailing() بسحب الوقف إلى bid - 40 * _Point للشراء أو ask + 40 * _Point للبيع كلما كانت الصفقة رابحة، ولا يتفلت أبدًا.
جني الأرباح = SL × 2.0، مما يضمن نسبة مخاطرة إلى عائد 1:2 ثابتة في كل أمر. يُرسَل إلى الوسيط مع الأمر ولا تعدِّله ManageTrailing() (الدالة تعدِّل الوقف فقط).
يُنشر بأفضل صورة على XAUUSD M15 برصيد لا يقل عن 100 دولار (الحد الأدنى الذي يفرضه سقف 0.01 لوت في CalcLot)، رغم أن ميزانية المخاطرة 1% تستفيد من حساب أكبر حتى يتسع هامش 1.5× ATR لساعة H1 داخل الهامش المتاح. وقف المتابعة بخطوة ثابتة 40 نقطة، لذلك يُفضَّل وسيط فروقات ضيقة — ECN/RAW بفارق نموذجي دون نقطة على الذهب يحافظ على مصداقية المتابعة. حارس الخسارة اليومية 3% يفترض جلسة مفتوحة خلال تداخل آسيا/لندن ونصف جلسة نيويورك الأول، وهي الفترة التي يكون فيها ATR للذهب عريضًا بما يكفي لاحترام الوقف والتي يتجه فيها السعر غالبًا، وهو ما يبحث عنه مرشح التوافق بين المتوسطات الثلاثة. بنية الصفقة الواحدة تعني أن هذا أداة اتجاه متأرجح لا لبنة لتنويع المحفظة.
منطق الاستراتيجية
Pipsgrowth EX18116 TrendFollow — تحليل منطق الاستراتيجية (من كود .mq5)
العائلة: TrendFollow
الماجيك: 22218116
الإصدار: 2.00
الوصف:
Multi-timeframe EMA trend-confluence system for XAUUSD. Confirms M15/H1/H4 EMA alignment before entering, sizes lots dynamically from ATR-based stop and risk percent, trails stops and enforces a max daily loss guard. Full 12-layer stack. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
المؤشرات:
- مؤشرات قياسية
الدوال الرئيسية:
ManageTrailing()HasTrade()CalcLot()TryClose_EX18116()TryClosePartial_EX18116()TryModify_EX18116()
// Pipsgrowth EX18116 TrendFollow — Execution Flow (from source analysis)
// Family: TrendFollow
// Multi-timeframe EMA trend-confluence system for XAUUSD. Confirms M15/H1/H4 EMA alignment before entering, sizes lots dynamically from ATR-based stop and risk percent, trails stops and enforces a max daily loss guard. Full 12-layer stack. 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
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX18116 QuantumGold — multi-timeframe EMA trend confluence + dynamic lot sizing, full 12-layer stack."
#include <Trade\Trade.mqh>
input group "=== Identity ==="
input int InpMagicNumber = 22218116;
input string InpTradeComment = "Psgrowth.com Expert_18116";
input group "=== Risk ==="
input double InpRiskPct = 1.0;
input double InpMaxDailyLoss = 3.0;
input group "=== Signal ==="
input bool InpMTFConfirm = true;
input group "=== Manage ==="
input int InpTrailingStop = 40;
CTrade trade;
int hM15_EMA, hH1_EMA, hH4_EMA, hATR;
datetime lastBar=0; double dayStartBalance=0; datetime lastDay=0;
int OnInit() {
trade.SetExpertMagicNumber(InpMagicNumber);
hM15_EMA = iMA(_Symbol,PERIOD_M15,50,0,MODE_EMA,PRICE_CLOSE);
hH1_EMA = iMA(_Symbol,PERIOD_H1, 50,0,MODE_EMA,PRICE_CLOSE);
hH4_EMA = iMA(_Symbol,PERIOD_H4, 50,0,MODE_EMA,PRICE_CLOSE);
hATR = iATR(_Symbol,PERIOD_H1,14);
return INIT_SUCCEEDED;
}
void OnDeinit(const int r) { IndicatorRelease(hM15_EMA);IndicatorRelease(hH1_EMA);IndicatorRelease(hH4_EMA);IndicatorRelease(hATR); }
void OnTick() {
datetime cb=iTime(_Symbol,PERIOD_CURRENT,0);
if(cb==lastBar) return; lastBar=cb;
MqlDateTime dt; TimeCurrent(dt);
if(dt.hour==0&&dt.min==0) { dayStartBalance=AccountInfoDouble(ACCOUNT_BALANCE); lastDay=TimeCurrent(); }
if(dayStartBalance>0) { double loss=(dayStartBalance-AccountInfoDouble(ACCOUNT_EQUITY))/dayStartBalance*100; if(loss>=InpMaxDailyLoss) return; }
ManageTrailing();
if(HasTrade()) return;
double m15[1],h1[1],h4[1],atr[1];
if(CopyBuffer(hM15_EMA,0,1,1,m15)<1||CopyBuffer(hH1_EMA,0,1,1,h1)<1||CopyBuffer(hH4_EMA,0,1,1,h4)<1||CopyBuffer(hATR,0,1,1,atr)<1) return;
double bid=SymbolInfoDouble(_Symbol,SYMBOL_BID),ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
bool bullish = InpMTFConfirm ? (bid>m15[0]&&bid>h1[0]&&bid>h4[0]) : (bid>h1[0]);
bool bearish = InpMTFConfirm ? (bid<m15[0]&&bid<h1[0]&&bid<h4[0]) : (bid<h1[0]);
double sl=atr[0]*1.5, tp=sl*2.0;
double lot=CalcLot(sl);
if(bullish) trade.Buy(lot,_Symbol,ask,ask-sl,ask+tp,InpTradeComment+" Buy");
if(bearish) trade.Sell(lot,_Symbol,bid,bid+sl,bid-tp,InpTradeComment+" Sell");
}
void ManageTrailing() { double trail=InpTrailingStop*_Point; for(int i=PositionsTotal()-1;i>=0;i--) { ulong t=PositionGetTicket(i); if(t<=0||PositionGetInteger(POSITION_MAGIC)!=InpMagicNumber||PositionGetString(POSITION_SYMBOL)!=_Symbol) continue; long type=PositionGetInteger(POSITION_TYPE); double open=PositionGetDouble(POSITION_PRICE_OPEN),curSL=PositionGetDouble(POSITION_SL),bid=SymbolInfoDouble(_Symbol,SYMBOL_BID),ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK); if(type==POSITION_TYPE_BUY){double nsl=bid-trail; if(nsl>open&&(curSL==0||nsl>curSL)) TryModify_EX18116(t,NormalizeDouble(nsl,_Digits),PositionGetDouble(POSITION_TP));} else{double nsl=ask+trail; if(nsl<open&&(curSL==0||nsl<curSL)) TryModify_EX18116(t,NormalizeDouble(nsl,_Digits),PositionGetDouble(POSITION_TP));} } }
bool HasTrade() { for(int i=PositionsTotal()-1;i>=0;i--) if(PositionGetTicket(i)>0&&PositionGetInteger(POSITION_MAGIC)==InpMagicNumber&&PositionGetString(POSITION_SYMBOL)==_Symbol) return true; return false; }
double CalcLot(double sl) { double b=AccountInfoDouble(ACCOUNT_BALANCE),tv=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE),ts=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE); if(sl<=0||ts<=0) return 0.01; return NormalizeDouble(MathMax(0.01,(b*InpRiskPct/100)/(sl/ts*tv)),2); }
//+------------------------------------------------------------------+
bool TryClose_EX18116(ulong ticket)
{
for(int a=0; a<3; a++)
{
if(trade.PositionClose(ticket) &&
الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على 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 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.