Pipsgrowth EX18094 TrendFollow — إكسبرت أدفايزر إكسبرت أدفايزر
إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD · M5
Pipsgrowth EX18094 TrendFollow — RSI scalping EA entering on RSI oversold/overbought cross with target-based exits and bars-against timeout exit logic. 1. إكسبرت أدفايزر MT5 مفتوح المصدر.
نظرة عامة
اكسب جروث EX18094 هو مستشار خبير (EA) قائم على مؤشر RSI واحد، مبني على فرضية استرداد ثم تلاشٍ شبه ميكانيكية. يراقب المست EA بأكمله مؤشر iRSI(14) واحدًا على الإطار الزمني المُكوَّن (H1 افتراضيًا لأن إدخال TimeFrame الافتراضي هو 9، ويسقط عبر مفتاح MapTimeframeInt إلى PERIOD_H1)، ويتداول على مركز واحد في كل مرة. لا يوجد مصنف نظام (regime)، ولا تأكيد إطار زمني أعلى، ولا مرشح جلسة، ولا بوابة سبريد، ولا مرشح أخبار، ولا تكديس (pyramid). كل دخول وكل خروج يُقرر من نفس مخزن RSI ذي الـ14 فترة، ويُلتقط سلوك المست EA من تيك إلى آخر بالكامل في 9 دوال بإجمالي نحو 400 سطر من MQL5.
قاعدة الدخول هي تقاطع ذو شريطين لخط ذروة البيع أو ذروة الشراء. الإعدادات الافتراضية في المصدر هي RSI_Oversold = 55 و RSI_Overbought = 82، وهي عتبات أوسع بشكل ملحوظ من زوج الـ46/49 الشائع في معظم مستندات RSI للاسترداد. يُطلق ذراع الشراء عندما rsi_two_bars_ago <= 55 AND rsi_prev > 55 — أي أن RSI أمضى شمعة مغلقة داخل منطقة 55 أو أقل ثم أغلق الشمعة التالية فوق 55. ذراع البيع متماثل: rsi_two_bars_ago >= 82 AND rsi_prev < 82. فحص الشريطين السابقين هو التخميد الوحيد في مسار الدخول؛ فهو يقتل الحالة التي يتأرجح فيها RSI عبر 55 في تيكين متتاليين دون أن يُغلق فعليًا عند 55 على شمعة سابقة. تستدعي دالة CheckEntrySignals() دوال OpenBuyPosition() أو OpenSellPosition() مباشرة، التي تستدعي بدورها trade.Buy(LotSize, _Symbol, ask, 0, 0, ...) و trade.Sell(LotSize, _Symbol, bid, 0, 0, ...) — كل الأقواس (brackets) أصفار، لذا يسجل الوسيط المركز بدون وقف خسارة مرفق ودون جني أرباح.
LotSize هو إدخال ثابت، والمصدر يشحنه بقيمة 50، وهي نحو رتبتين من حيث الحجم أعلى مما يدعمه إيداع أدنى قدره 100$ على عقد XAUUSD بـ100 أونصة. هذه معامل يتوقع من المُشغّل ضبطه حسب حجم الحساب، وليس افتراضيًا موصى به لحجم حساب كما هو مشحون. لا يوجد تحجيم بنسبة مخاطر، ولا مُقاس قائم على الرصيد، ولا تحقق من الهامش يتجاوز تحقق الوسيط نفسه. CTrade مُكوَّن بسحر 22218094، انزلاق 3 نقاط، و ORDER_FILLING_FOK؛ يعني FOK أن الأمر إما يُنفذ بالحجم المطلوب كاملاً أو لا يُنفذ أبدًا، وهو أمر يستحق المعرفة إذا غيّرت LotSize إلى شيء لا يستطيع الوسيط تنفيذه دفعة واحدة.
تتم إدارة الخروج داخل CheckExistingPosition()، وهو الجزء الأكثر إثارة للاهتمام في المست EA، لأن هناك مسارَي خروج منفصلين تمامًا ولهما علاقة أسبقية مدمجة. المسار 1 هو الخروج المستهدف. للمركز الطويل (long)، يُغلق الصفقة عندما rsi_current >= RSI_Target_Buy؛ للمركز القصير (short)، عندما rsi_current <= RSI_Target_Sell. قيم الهدف الافتراضية هي 39 للشراء و 35 للبيع. كلا الهدفين أدنى من خط 50 وأقل بكثير من عتبتي الدخول 55 و 82 — مما يعني أن المست EA لا يخرج على امتداد الزخم، بل يخرج على الارتداد. تشتري تقاطع استرداد من 55 وتغلق المركز عندما يتراجع RSI إلى 39، وهو بالضبط منطق "اشترِ القاع، خذ الارتداد، لا تكن جشعًا" الذي ينتج منحنيات حقوق ملكية ضيقة على الأدوات المتذبذبة. المسار 2 هو مهلة الأعمدة المعاكسة، التي يحكمها BarsToWait (افتراضي 2). إذا تحرك RSI ضد المركز المفتوح — long عندما rsi_current < RSI_Oversold=55، short عندما rsi_current > RSI_Overbought=82 — يبدأ المست EA في عدّ الشموع المتتالية التي يكون فيها المؤشر على الجانب الخطأ. في اللحظة التي يعود فيها RSI إلى الجانب المواتي يُعاد تعيين العداد إلى 0؛ إذا وصل العد إلى BarsToWait (شمعتان مغلقتان متتاليتان) تُغلق ClosePosition() المركز قسريًا. هذا هو في جوهره إبطال مدته شمعتان: إذا لم تثبت فرضية الاسترداد نفسها خلال شمعتين، فالصفقة ميتة.
لا يوجد وقف سعري. الأقواس 0/0 التي تُمرر إلى trade.Buy() و trade.Sell() تعني أن قاعدة هامش الإيقاف للوسيط هي الحماية الوحيدة القائمة على السعر لكل مركز مفتوح. مركز بحجم 50 لوت بدون SL مرفق على حساب بـ100$ هو مرشح لدعوة هامش (margin call) في أول مرة يُخرق فيها عتبة الصيانة لدى الوسيط، لذا فإن الاستخدام العملي لهذا المست EA يتطلب دائمًا من المُشغّل تعيين LotSize إلى قيمة يمكن للحساب تحملها فعليًا، أو وضع وقف خارجي على شكل تدخل يدوي أو مست EA ثان يراقب الرقم السحري. المست EA نفسه لا رأي له في مخاطر المركز بخلاف "أغلق بعد شمعتين من RSI يسير في الاتجاه الخاطئ" و "أغلق عندما يرتد RSI إلى ما بعد خط الهدف".
تتم متابعة المركز باستخدام متغيرين بوليانيين وتذكرة عدد صحيح. في كل شريط جديد — مُحرَّس بفحص last_bar_time في أعلى OnTick() — تنسخ UpdateRSI() آخر ثلاث قيم لـ RSI إلى مخزن، وتعمل CheckExistingPosition() أولاً، ولا تعمل CheckEntrySignals() إلا إذا كان position_open خطأ. لا يوجد مسح PositionSelect(_Symbol)، ولا مسح للرقم السحري في قائمة المراكز المفتوحة بأكملها، ولا مسار استرداد لمركز أُغلق خارجيًا — إذا أغلق الوسيط الصفقة لأي سبب، يُعاد تعيين الحالة الداخلية للمست EA (position_ticket, position_open, bars_against_count) في التيك التالي عندما ترجع PositionSelectByTicket() قيمة خطأ. منطق إعادة المحاولة للإغلاق نفسه مُنفَّذ في TryClose_EX18094: 3 محاولات مع Sleep() مقدارها 200 مللي ثانية بين المحاولات، مع إعادة المحاولة فقط على TRADE_RETCODE_REQUOTE أو _TIMEOUT أو _PRICE_OFF أو _PRICE_CHANGED، والخروج على أي كود إرجاع آخر. هناك مساعدان غير مستخدمين لكنهما مُترجمان، TryClosePartial_EX18094 و TryModify_EX18094، موجودان للإغلاق الجزئي وتعديلات SL/TP؛ كلاهما كود ميت في هذا الإصدار لأنه لا يُعيَّن أي SL أو TP، ولا يُطلب أي إغلاق جزئي.
تقطع OnTick() أيضًا مع عودتين مبكرتين: حارس Bars(_Symbol, g_TimeFrame) < RSI_Period + 2 يمنع المست EA من العمل قبل توفر تاريخ كافٍ للمؤشر لإنتاج قيم مستقرة، وعودة نفس الشريط داخل بوابة الشريط الجديد تمنع المست EA من إعادة تقييم نفس الشمعة المغلقة مرتين على التوالي. لا يوجد تسجيل Print()، ولا لوحة معلومات، ولا تجاوز OnTester()، ولا رد اتصال OnTrade()، ولا تعليق على كائنات المخطط. المست EA هادئ عمدًا — يحتاج المشغلون الذين يريدون تشخيصات على مستوى الصفقة إلى تشغيل سجل Strategy Tester أو تغليف المست EA في harn تسجيل خارجي.
الحزمة في MT5 هي حزمة Pipsgrowth القياسية: ملف .mq5 واحد، تضمين Trade.mqh المعياري، و12 إدخالًا مقسمة إلى مجموعة Identity من صف واحد ومجموعة Strategy Settings التي تحتوي على الإطار الزمني، فترة RSI، محدد السعر المُطبَّق، أربعة عتبات RSI، عدد صحيح للأعمدة المراد انتظارها، LotSize مزدوج، السحر، والانزلاق. أثر معروف على مستوى المصدر هو أن MapTimeframeInt() و MapAppliedPriceInt() كل منهما مُعرَّف أربع مرات في الملف (النسخة الثانية فوق استدعاء g_TimeFrame = MapTimeframeInt(TimeFrame) مباشرة، وزوج ثالث+رابع متشابك بنفس الطريقة فوق تعيين g_TimeFrame الثاني)، كما أن globals الخاصة بـ g_TimeFrame و g_RSI_Applied_Price مُعرَّفة مرتين أيضًا. يمتص مترجم MQL5 تعريفات الدوال المكررة دون اعتراض، وسلوك وقت التشغيل غير متأثر لأن جسم كل دالة متطابق، لكنه عيب بصري صاخب في هذا الإصدار. الاختبارات الخلفية على H1 XAUUSD مع 50 لوت افتراضي كما هو مشحون لن تعكس سلوك المست EA في العالم الحقيقي على حساب 100$؛ يُعد تقليل LotSize إلى قيمة متناسبة مع الرصيد إلزاميًا قبل استخلاص أي استنتاجات من تقرير Strategy Tester.
الشكل التشغيلي العملي هو: حمّل المست EA على مخطط واحد، واختر إطارًا زمنيًا ضمن النطاق 1–7 (H1 هو الافتراضي وهو ما يعمل عليه الكود فعليًا عندما يكون الإدخال 9)، واضبط LotSize إلى قيمة يمكن للحساب دعمها، ودع RSI الـ14 يقوم بكل العمل. منطقة الدخول 55/82 واسعة بما يكفي لإطلاق إشارات في معظم الأيام، ويحافظ الهدف 39/35 على كل صفقة قصيرة، ومهلة الشمعتين هي مفتاح الإيقاف. لا يوجد وعي إخباري، ولا مرشح سبريد، ولا بوابة جلسة، لذا سيستمر المست EA في محاولة الدخول خلال نوافذ التداول المنخفضة السيولة وحول الإصدارات عالية التأثير؛ إذا شغّلته على حساب حقيقي، إما أن تتداول خلال تلك النوافذ بـ LotSize مخفّض، أو توقف المست EA قبل التقويم وتعيد تشغيله بعده.
تفاصيل الاستراتيجية
ينهار المست EA بأكمله إلى مقبض iRSI(14, close) واحد يُقيَّم على كل شريط جديد للإطار الزمني المُكوَّن. تقطع OnTick() على بوابة نفس الشريط وعلى عدم كفاية تاريخ الشموع، ثم تستدعي UpdateRSI() لنسخ آخر ثلاث قيم لـ RSI إلى rsi_buffer، وتُشغّل CheckExistingPosition() لإدارة الصفقة الحية، ولا تستدعي CheckEntrySignals() إلا عندما يكون position_open خطأ. تُفرض بوابة المركز الواحد بواسطة المتغير البولياني، وليس بمسح للمراكز، و CTrade مُكوَّن بسحر 22218094، انزلاق 3 نقاط، و ORDER_FILLING_FOK. يُغلِّف TryClose_EX18094 الإغلاق بـ 3 محاولات بفاصل 200 مللي ثانية على أكواد requote/timeout/price-changed؛ TryClosePartial_EX18094 و TryModify_EX18094 مُترجمان لكن غير مُشار إليهما لأنه لا يُعيَّن أي SL/TP ولا يُطلب أي إغلاق جزئي. لا يوجد مرشح نظام، ولا تأكيد إطار زمني أعلى، ولا مرشح جلسة، ولا بوابة سبريد، ولا مرشح أخبار، ولا تكديس — الأزواج الأربعة المكررة من كتل MapTimeframeInt / MapAppliedPriceInt في المصدر هي أثر تجميلي (المترجم يمتصها ووقت التشغيل متطابق)، وإدخال TimeFrame=9 يسقط عبر مفتاح 1–7 إلى PERIOD_H1.
يُطلق الشراء عندما يُغلق iRSI(14, close) على الإطار الزمني المُكوَّن (H1 افتراضيًا) شمعة داخل منطقة ذروة البيع وتُغلق الشمعة التالية فوق RSI_Oversold (افتراضي 55). يُطلق البيع بشكل متماثل عندما يُغلق RSI فوق RSI_Overbought (افتراضي 82) وتُغلق الشمعة التالية أسفله. يعمل فحص الشريطين السابقين في CheckEntrySignals() كمخمِّد وحيد، وتقدّم OpenBuyPosition / OpenSellPosition أمري trade.Buy / trade.Sell بأقواس SL/TP قيمتها 0/0 وبإدخال LotSize الثابت.
مساران في CheckExistingPosition(). المسار 1: الخروج المستهدف — يُغلق الشراء عندما rsi_current >= RSI_Target_Buy (افتراضي 39، هدف ارتداد أدنى من 50)، ويُغلق البيع عندما rsi_current <= RSI_Target_Sell (افتراضي 35). المسار 2: مهلة الأعمدة المعاكسة — إذا عاد RSI عبر عتبة الدخول لـ BarsToWait شمعة مغلقة متتالية (افتراضي 2)، يُغلق المركز قسريًا؛ يُعاد تعيين العداد في اللحظة التي يعود فيها RSI إلى الجانب المواتي.
لا يُرفق أي وقف سعري عند الدخول — تُستدعى trade.Buy / trade.Sell بـ 0,0 لـ SL/TP. الوقف الوحيد القائم على الوقت هو إبطال BarsToWait=2 في CheckExistingPosition(). يُعد مركز 50 لوتًا بدون وقف مرفق خطر استدعاء هامش على حساب 100$، لذا فإن الوقف العملي هو أي هامش صيانة يفرضه الوسيط وأي طبقة يدوية خارجية يضيفها المُشغّل.
الخروج المستهدف هو فرضية الارتداد نفسها — إغلاق شراء عند RSI_Target_Buy=39، إغلاق بيع عند RSI_Target_Sell=35. كلا الهدفين أدنى من خط 50، لذا المست EA لا يركب الزخم إلى مستوى تمديد ربح، بل يُغلق على الارتداد إلى المتوسط. لا يوجد جني أرباح ثابت بالنقاط ولا هدف متعدد الـR؛ الإغلاق الآخر الوحيد هو مهلة الشمعتين المعاكستين، التي تعمل كمفتاح إيقاف بدلاً من TP.
الأفضل على XAUUSD M5–H1 (H1 هو الإطار الافتراضي الفعلي للتشغيل لأن TimeFrame=9 يسقط عبر المفتاح). الحد الأدنى للرصيد هو 100$ المدرج في قاعدة البيانات فقط إذا خُفّض LotSize بشكل كبير عن الـ50 المشحونة — عند اللوت الافتراضي يحمل المست EA خطر استدعاء هامش في أول مرة يُخرق فيها عتبة الصيانة لدى الوسيط، لذا فإن حسابًا بـ1,000–5,000$ مع LotSize مضبوط على نحو 0.05–0.20 لكل صفقة هو نافذة التشغيل الواقعية. تظهر منطقة الدخول 55/82 وأهداف الارتداد 39/35 ومهلة الشمعتين بصفتها مست EA ارتداد إلى المتوسط بفترة احتفاظ قصيرة، لذا فهو يعمل بشكل أفضل في ظروف الذهب المتذبذب أو المتأرجح خلال جلستَي لندن ونيويورك عندما يدور RSI بانتظام بين منطقتي الدخول والهدف؛ الوسطاء الحساسون للسبريد ونوافذ الأخبار عالية التأثير هي المخاطر الرئيسية لأنه لا يوجد مرشح سبريد ولا مرشح أخبار في الكود.
منطق الاستراتيجية
Pipsgrowth EX18094 TrendFollow — تحليل منطق الاستراتيجية (من كود .mq5)
العائلة: TrendFollow
الماجيك: 22218094
الإصدار: 2.00
الوصف:
RSI scalping EA entering on RSI oversold/overbought cross with target-based exits and bars-against timeout exit logic. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
المؤشرات:
- مؤشرات قياسية
الدوال الرئيسية:
UpdateRSI()CheckExistingPosition()CheckEntrySignals()OpenBuyPosition()OpenSellPosition()ClosePosition()TryClose_EX18094()TryClosePartial_EX18094()TryModify_EX18094()
// Pipsgrowth EX18094 TrendFollow — Execution Flow (from source analysis)
// Family: TrendFollow
// RSI scalping EA entering on RSI oversold/overbought cross with target-based exits and bars-against timeout exit logic. 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
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| InpTradeComment | "Psgrowth.com Expert_18094" | Trade Comment |
| TimeFrame | 9 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Timeframe for Analysis |
| RSI_Period | 14 | RSI Period |
| RSI_Applied_Price | 1 | Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // RSI Applied Price |
| RSI_Overbought | 82 | RSI Overbought Level |
| RSI_Oversold | 55 | RSI Oversold Level |
| RSI_Target_Buy | 39 | RSI Target for Buy Exit |
| RSI_Target_Sell | 35 | RSI Target for Sell Exit |
| BarsToWait | 2 | Bars to wait when RSI goes against position |
| LotSize | 50 | Lot Size |
| MagicNumber | 22218094 | Magic Number |
| Slippage | 3 | Slippage in points |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX18094 main — RSI scalping with target exits, full 12-layer stack."
#include <Trade\Trade.mqh>
//--- Input parameters
ENUM_TIMEFRAMES MapTimeframeInt(int tf)
{
switch(tf)
{
case 1: return PERIOD_M1;
case 2: return PERIOD_M5;
case 3: return PERIOD_M15;
case 4: return PERIOD_M30;
case 5: return PERIOD_H1;
case 6: return PERIOD_H4;
case 7: return PERIOD_D1;
default: return PERIOD_H1;
}
}
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_TIMEFRAMES g_TimeFrame = PERIOD_H1;
ENUM_APPLIED_PRICE g_RSI_Applied_Price = PRICE_CLOSE;
input group "=== Identity ==="
input string InpTradeComment = "Psgrowth.com Expert_18094"; // Trade Comment
ENUM_TIMEFRAMES MapTimeframeInt(int tf)
{
switch(tf)
{
case 1: return PERIOD_M1;
case 2: return PERIOD_M5;
case 3: return PERIOD_M15;
case 4: return PERIOD_M30;
case 5: return PERIOD_H1;
case 6: return PERIOD_H4;
case 7: return PERIOD_D1;
default: return PERIOD_H1;
}
}
ENUM_APPLIED_PRICE MapAppliedPriceInt(int ap)
{
switch(ap)
{
case 1: return PRICE_CLOSE;الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على 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 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.