Pipsgrowth EX03020 Grid — إكسبرت أدفايزر شبكة
إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD · M5، H1
Pipsgrowth EX03020 Grid — Dynamic grid scalper with MA trend filter. Places a grid of limit orders in the trend direction based on MA signal. Opti. إكسبرت أدفايزر MT5 مفتوح المصدر.
نظرة عامة
Pipsgrowth EX03020 GridScalperMA هو إكسبيرت شبكي يتبع الاتجاه، يضع سلماً كاملاً من الأوامر المعلقة كلما تولد إشارة من متوسط متحرك واحد. يدور حول قاعدة واحدة: إذا كان سعر العرض (Bid) فوق المتوسط المتحرك الأسي (EMA 50)، يطلق سلم شراء؛ وإذا كان تحته، يطلق سلم بيع. لا يوجد وقف خسارة لكل صفقة ولا جني أرباح لكل صفقة. السلم بالكامل يُغلق كسلة (basket) في اللحظة التي يصل فيها الربح العائم التراكمي إلى الهدف القابل للضبط، أو يُغلق قسرياً عندما يتجاوز تراجع الحساب الحد الأقصى. خيار التصميم الوحيد هذا — إدارة السلة بدلاً من إدارة الصفقات بشكل فردي — يحدد الطابع الكامل للإكسبيرت.
يتم إنشاء مرشح المتوسط المتحرك في OnInit() عبر iMA(_Symbol, PERIOD_CURRENT, InpMAPeriod, 0, InpMAMethod, PRICE_CLOSE). الإعداد الافتراضي هو EMA على الإغلاق بفترة 50، لكن InpMAPeriod (افتراضي 50) وInpMAMethod (افتراضي MODE_EMA) وInpSignalType (افتراضي "MA") كلها مكشوفة. الكود المصدري يطبق فرع MA فقط — فرع "BOS" المذكور في المدخلات غير مفعّل في الملف، لذا تعيين InpSignalType = "BOS" لا يولد أي إشارة. اعتبره عنصراً نائباً. تُقيَّم الإشارات على الشمعة المغلقة: CopyBuffer(hMA, 0, 1, 1, ma) يقرأ أحدث شمعة مكتملة، ثم bid > ma[0] يقلب الشبكة لشراء، وbid < ma[0] يقلبها لبيع. الإشارة لا تنطلق إلا عندما لا تكون هناك صفقات مفتوحة (openCount == 0 && !gridActive).
عندما تنطلق الإشارة، تبني PlaceGrid() سلماً يصل إلى InpMaxOrders (افتراضي 8) دخول. الأمر الأول هو أمر سوق: TryBuy_EX03020(lot, 0, 0, 0, InpTradeComment) للشراء، وTrySell_EX03020(...) للبيع. الأوامر المتبقية InpMaxOrders - 1 هي حدود معلقة متباعدة بمقدار InpGridStep. لشبكة شراء، المستوى i يقع عند gridBase - i * InpGridStep * _Point؛ ولشبكة بيع، عند gridBase + i * InpGridStep * _Point. يُلتقط gridBase كسعر الطلب (ask) لحظة إشارة الشراء، أو كسعر العرض (bid) لحظة إشارة البيع. هذا يعني أن الشبكة تمتد دائماً عكس اتجاه الإشارة، نحو تراجع أعمق — ملف الشبكة الكلاسيكي.
يُتحكم في حجم اللوت لكل مستوى عبر InpLotMultiply (افتراضي false) وInpMultiplier (افتراضي 1.5). مع إيقاف المضاعفة، كل مستوى يُطلق بنفس InpLotSize (افتراضي 0.01). مع تشغيل المضاعفة، المستوى i يُطلق بـ InpLotSize * pow(InpMultiplier, i) — لذا بداية 0.01 بمضاعف 1.5 تنتج 0.01، 0.02 (مقرّباً للخطوة)، 0.02، 0.03، 0.05، 0.08، 0.11، 0.17. يُقَص حجم اللوت بعد ذلك ضمن حدود SYMBOL_VOLUME_MIN/MAX/STEP ويُقرَّب لأسفل إلى خطوة الوسيط. تُستدعى OrderCalcMargin() قبل كل إرسال سوقي؛ إذا تجاوز الهامش المطلوب الهامش الحر، يُتخطى الأمر.
لا توجد قيم SL أو TP لكل صفقة في إرسال الأوامر — كل المعاملات لـ SL وTP في TryBuy_EX03020 وTrySell_EX03020 وTryBuyLimit_EX03020 وTrySellLimit_EX03020 مكوّدة بقيمة 0. تُدار المخاطرة على مستوى السلة. يُحسب جني الأرباح للسلة بشكل مباشر في OnTick() كـ InpTakeProfit * _Point * openCount * InpLotSize * 100. مع الإعدادات الافتراضية (60 نقطة × openCount × 0.01 لوت × 100)، تغلق شبكة مكتملة التحميل من 8 مستويات عندما يصل ربح السلة تقريباً إلى 4.80 دولار (المضاعف يفترض 1 دولار لكل 0.01 لوت لكل نقطة — دقيق للحساب بالدولار على الذهب). مع إغلاق الصفقات وانخفاض openCount، ينخفض الهدف الحي أيضاً، لذا الشبكة المُحققة جزئياً ستخرج عند إجمالي عائم أقل. حارس تراجع السلة يقع في كتلة أبكر: إذا كان (balance - equity) / balance * 100 > InpMaxDrawdown (افتراضي 25%)، يستدعي الإكسبيرت CloseAll() ويعيد تعيين gridActive = false، منهياً الدورة.
دورة حياة الصفقة منقسمة بين OnTick() وOnTradeTransaction(). OnTick() يعمل على كل عرض سعر وهو مسؤول عن تقييم الإشارة، وإغلاق السلة، واستدعاء PlaceGrid(). مساعدات الأوامر الخمسة — TryBuy_EX03020 وTrySell_EX03020 وTryBuyLimit_EX03020 وTrySellLimit_EX03020 وTryClose_EX03020 — كلها تُغلف استدعاءات CTrade في حلقة إعادة محاولة من 3 محاولات مع نوم 200 مللي ثانية على REQUOTE وTIMEOUT وPRICE_OFF وPRICE_CHANGED. CloseAll() هو حلقة صفقات تستدعي TryClose_EX03020 لكل صفقة مفتوحة، وحلقة أوامر منفصلة تستدعي TryOrderDelete_EX03020 لإزالة أي حدود معلقة. يُرشّح OnTradeTransaction() أحداث TRADE_TRANSACTION_DEAL_ADD المطابقة للسحر 22203020، ويُجمّع الربح/الخسارة المحقق في g_realizedToday وg_realizedWeek، ويُفعّل تهدئة لمدة 30 دقيقة (افتراضي InpCooldownMinutes = 30) في اللحظة التي يصل فيها عداد الخسائر إلى 3. تنطبق التهدئة بمجرد g_consecLossesHD >= 3 بغض النظر عن InpMaxConsecLosses، لكن بوابة الحظر على نفس العداد لا تُفعّل إلا عند InpMaxConsecLosses > 0 — لذا افتراضياً، يهدأ الإكسبيرت لمدة 30 دقيقة بعد 3 خسائر متتالية لكنه سيستمر في التداول بعدها.
مكدس الجلسة وعدم التداول هو طبقة التحصين القياسية من PipsGrowth. DetectGMTOffset_EX03020() يعمل عند البدء ويختبر فروقات الإحداثي من -12 إلى +12 مقابل وقت الخادم الحالي، ويُسجّل كل مرشح بناءً على ما إذا كان يقع في يوم عمل (10 نقاط) وما إذا كان يقع بين الساعة 07-21 (5 نقاط)؛ أعلى إحداثي يسجل يصبح g_gmtOffset. تحظر InActiveSession_EX03020() السبت والأحد بالكامل ولا ترجع true إلا إذا وقعت الساعة بتوقيت GMT إما في لندن (07-16 افتراضي) أو نيويورك (12-21 افتراضي). تُقصّر IsSafeToTrade_EX03020() الدائرة أيضاً على: أرضية الأسهم (InpEquityFloor، افتراضي 0 = معطل)، خسارة يومية محققة ≥ InpDailyLossLimit (افتراضي 0 = معطل)، خسارة أسبوعية محققة ≥ InpWeeklyLossLimit (افتراضي 0 = معطل)، رصيد ≥ InpCapitalCap (افتراضي 0 = معطل)، g_dailyTrades >= InpMaxTradesPerDay (افتراضي 50)، وبوابة الخسارة المتتالية الموصوفة أعلاه. تتدحرج عدادات اليومية/الأسبوعية داخل UpdateDailyCounters_EX03020() عند تغيير يوم الشهر أو يوم الأسبوع. مرشح سبريد 40 نقطة يعمل على كل تك قبل أي فحص آخر.
لا يُسلِّم الإكسبيرت OnTester للتحسين الجيني بالمعنى الصارم — يُسلِّم double OnTester() الذي يرجع (profit / maxDD) * (PF > 1 ? PF : 0) بشرط maxDD > 0 وtrades >= 10. وإلا يرجع 0. مع غياب SL/TP لكل صفقة، سطح التحسين الطبيعي هو خطوة الشبكة وجني أرباح السلة وحجم اللوت وفترة المتوسط المتحرك — وليس وضع الوقف.
ما يمكن توقعه في الباك تيست: على زوج متجه، ستحمّل الشبكة بسرعة في اتجاه الاتجاه وستغلق إما بجني أرباح السلة خلال بضعة مستويات أو ستنغمس عميقاً في انعكاس ضد الاتجاه. غطاء التراجع الافتراضي 25% هو ما ينهي دورة سيئة — إنه رقم واحد يغطي الحساب بالكامل، وليس غطاءً لكل شبكة، لذا تشغيل إكسبيرتات متعددة على نفس الحساب بنفس السحر قد يتعارض. لا يوجد مرشح أخبار، ولا حارس انزلاق يتجاوز 30 نقطة في SetDeviationInPoints، ولا خروج قائم على الوقت لكل صفقة فردية. معلمان للتصميم يتحكمان في منحنى المخاطرة بالكامل تقريباً: InpGridStep (أضيق = ملء أكثر، تعرض إجمالي أعمق قبل التعافي) وInpTakeProfit (أقل = دورات أسرع، عمولات أكثر). الاقتران بـ XAUUSD هو النشر المقترح؛ الإطاران M5 وH1 مختبران. يمكن لـ EURUSD وأزواج FX الرئيسية الأخرى العمل بنفس الكود المصدري لأن رياضيات النقاط السعرية عامة، لكن مضاعف الهدف لكل نقطة في صيغة جني الأرباح للسلة (100) معايرة لقطع الذهب المايكرو على حسابات الدولار — على زوج FX بنقطة 1 دولار، ارفع InpTakeProfit وفقاً لذلك للحفاظ على مكافئ الدولار المستهدف.
الحد الأدنى الموصى به للرصيد هو 100 دولار للإعدادات الافتراضية (0.01 لوت، 8 مستويات، XAUUSD)، لكن فقط لأن غطاء السبريد 40 نقطة متساهل؛ وسيط ECN أو RAW بسبريد منخفض يحافظ على السلم من التقطيع. نظراً لأن الإكسبيرت لا يملك وقف خسارة فردي، فإن الحد الأدنى العملي يُحدّد بـ InpMaxDrawdown وبكم الحساب الذي أنت مستعد لخسارته في دورة واحدة — اضبط هذا الرقم قبل أن يتداول الإكسبيرت أبداً، وليس بعد الخسارة الأولى.
تفاصيل الاستراتيجية
على كل تك، يفحص OnTick() أولاً غطاء السبريد (40 نقطة) ويستدعي IsSafeToTrade_EX03020() — تلك الدالة تشغّل مرشح الجلسة النشطة، وأرضية الأسهم، وحد الخسارة اليومية/الأسبوعية، وغطاء رأس المال، وعداد الصفقات اليومية، وبوابة الخسارة المتتالية. إذا اجتاز مكدس الأمان، يقرأ الإكسبيرت قيمة المتوسط المتحرك المغلقة الأخيرة، ويقارن سعر العرض بـ EMA(50)، ويقلب الشبكة إما شراءً أو بيعاً. ترسل PlaceGrid() بعد ذلك الأمر الأول كسوقي وتضع ما يصل إلى 7 حدود معلقة بخطوة InpGridStep (30 نقطة) في الاتجاه المعاكس. كل تك لاحق يراقب ربح السلة ويُفعّل CloseAll() عند بلوغ عتبة جني أرباح السلة؛ تُستدعى نفس CloseAll() أيضاً عندما يتجاوز تراجع الحساب InpMaxDrawdown. يتتبع OnTradeTransaction() الربح/الخسارة المحقق ويُطبّق تهدئة 30 دقيقة بعد 3 خسائر متتالية.
تُثار الدخول عند تقاطع المتوسط المتحرك الواحد لسعر العرض: عندما bid > EMA(50) ولا توجد صفقات مفتوحة، ينقلب gridActive إلى true مع gridDir = 1 وتستدعي PlaceGrid() سلم شراء. عندما bid < EMA(50)، يُبنى سلم بيع. الأمر الأول من السلم هو أمر سوقي، والـ 7 الباقية هي حدود معلقة متباعدة بمقدار InpGridStep (30 نقطة) ضد اتجاه الإشارة. حجم اللوت الافتراضي 0.01 لكل مستوى، مع تصعيد اختياري InpLotMultiply (1.5×).
الخروج على مستوى السلة، وليس لكل صفقة. تُغلق الشبكة في اللحظة التي يكون فيها GetBasketProfit() >= InpTakeProfit * _Point * openCount * InpLotSize * 100 — بالإعدادات الافتراضية، هذا تقريباً 4.80 دولار لشبكة ذهب مكتملة من 8 مستويات. حارس تراجع صلب يعمل أولاً: إذا كان (balance - equity) / balance * 100 > InpMaxDrawdown (25% افتراضي)، تُستدعى CloseAll() وتُعاد الدورة. تُطبَّق تهدئة 30 دقيقة بعد 3 خسائر محققة متتالية بغض النظر عن مدخل InpMaxConsecLosses.
لا يوجد وقف خسارة لكل صفقة. معاملات SL/TP في كل استدعاء TryBuy/TrySell/TryBuyLimit/TrySellLimit مكوّدة بقيمة 0. التحكم الوحيد في المخاطرة هو غطاء التراجع على مستوى الحساب: عندما تتجاوز الخسارة العائمة InpMaxDrawdown (افتراضي 25% من الرصيد)، تستدعي CloseAll() إغلاقاً قسرياً لكل صفقة وحد معلق. تهدئة 30 دقيقة بعد 3 خسائر متتالية هي الوقفة المنظمة الوحيدة.
جني الأرباح للسلة فقط. قيمة TP المرسلة للوسيط هي 0 لكل أمر فردي. تُغلق السلة بواسطة OnTick() عندما GetBasketProfit() >= InpTakeProfit * _Point * openCount * InpLotSize * 100 — بالإعدادات الافتراضية (60 نقطة × openCount × 0.01 لوت × 100)، يتدرج العتبة مع عدد المستويات المفتوحة حالياً. مع إغلاق المستويات عبر SL أو الانعكاس، ينخفض الهدف الحي أيضاً بالتناسب.
الحد الأدنى الموصى به للرصيد: 100 دولار على XAUUSD بحجم اللوت الافتراضي 0.01. الإطاران M5 وH1 مدعومان؛ على M5 تدور السلة بسرعة والتعرض لكل مستوى ضحل، وعلى H1 تكون الدورات أطول لكن السلة تلتقط حركة نقاط أكثر. استخدم وسيط ECN أو RAW بسبريد منخفض — غطاء السبريد 40 نقطة متساهل، لكن حساب بسبريد منخفض يحمي السلم من التقطيع عند الدخول. الجلسات: لندن 07-16 بتوقيت GMT ونيويورك 12-21 بتوقيت GMT، معطل في عطلات نهاية الأسبوع. هذه شبكة عالية المخاطرة؛ InpMaxDrawdown هو المعامل الذي يجب ضبطه عمداً قبل البث المباشر.
منطق الاستراتيجية
Pipsgrowth EX03020 Grid — تحليل منطق الاستراتيجية (من كود .mq5)
العائلة: Grid
الماجيك: 22203020
الإصدار: 2.00
الوصف:
Dynamic grid scalper with MA trend filter. Places a grid of limit orders in the trend direction based on MA signal. Optional lot multiplication per level (OFF by default). Basket close on combined profit target with drawdown protection. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
المؤشرات:
- مؤشرات قياسية
الدوال الرئيسية:
PlaceGrid()GetBasketProfit()CountOpenTrades()CloseAll()DetectGMTOffset_EX03020()ServerToGMT_EX03020()InActiveSession_EX03020()UpdateDailyCounters_EX03020()IsSafeToTrade_EX03020()TryBuy_EX03020()
// Pipsgrowth EX03020 Grid — Execution Flow (from source analysis)
// Family: Grid
// Dynamic grid scalper with MA trend filter. Places a grid of limit orders in the trend direction based on MA signal. Optional lot multiplication per level (OFF by default). Basket close on combined profit target with drawdown protection. 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اسحب الإكسبرت على رسم بياني — يُنصح بـ H1 أو H4 لروبوتات الشبكة
- 7حدد خطوة الشبكة (نقاط)، الحد الأقصى للأوامر، وحجم اللوت في نافذة الإعدادات
- 8فعّل Allow Algo Trading واضغط OK
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| InpGridStep | 30 | Grid Step (points) |
| InpMaxOrders | 8 | Max Grid Orders |
| InpLotSize | 0.01 | Initial Lot Size |
| InpTakeProfit | 60 | Basket Take Profit (points) |
| InpLotMultiply | false | Multiply lots per level |
| InpMultiplier | 1.5 | Lot multiplier (if enabled) |
| InpSignalType | "MA" | Signal: MA or BOS |
| InpMAPeriod | 50 | Moving Average Period |
| InpMAMethod | MODE_EMA | MA Method |
| InpMagicNumber | 22203020 | Magic Number |
| InpMaxSpread | 40 | Max Spread (points) |
| InpMaxDrawdown | 25.0 | Max Drawdown % |
| InpTradeComment | "Psgrowth.com Expert_03020" | Trade comment |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX03020 GridScalperMA — dynamic grid with MA trend filter, full 12-layer stack."
#include <Trade\Trade.mqh>
input group "=== Grid Settings ==="
input int InpGridStep = 30; // Grid Step (points)
input int InpMaxOrders = 8; // Max Grid Orders
input double InpLotSize = 0.01; // Initial Lot Size
input int InpTakeProfit = 60; // Basket Take Profit (points)
input bool InpLotMultiply = false; // Multiply lots per level
input double InpMultiplier = 1.5; // Lot multiplier (if enabled)
input group "=== Signal ==="
input string InpSignalType = "MA"; // Signal: MA or BOS
input int InpMAPeriod = 50; // Moving Average Period
input ENUM_MA_METHOD InpMAMethod = MODE_EMA; // MA Method
input group "=== Trade Settings ==="
input int InpMagicNumber = 22203020; // Magic Number
input int InpMaxSpread = 40; // Max Spread (points)
input double InpMaxDrawdown = 25.0; // Max Drawdown %
input string InpTradeComment = "Psgrowth.com Expert_03020"; // Trade comment
input group "=== Hardening GMT Sessions ==="
input bool InpUseGMTSessions = true;
input int InpLondonStartGMT = 7;
input int InpLondonEndGMT = 16;
input int InpNewYorkStartGMT = 12;
input int InpNewYorkEndGMT = 21;
input group "=== Hardening Capital Protection ==="
input double InpEquityFloor = 0.0;
input double InpDailyLossLimit = 0.0;
input double InpWeeklyLossLimit = 0.0;
input double InpCapitalCap = 0.0;
input group "=== Hardening Trade Safety ==="
input int InpMaxTradesPerDay = 50;
input int InpCooldownMinutes = 30;
input int InpMaxConsecLosses = 0;
CTrade trade;
int hMA;
double gridBase = 0;
bool gridActive = false;
int gridDir = 0; // 1=buy, -1=sell
//--- Hardening Globals
double g_realizedToday = 0;
double g_realizedWeek = 0;
datetime g_dayStartTime = 0;
datetime g_weekStartTime = 0;
int g_gmtOffset = 3;
int g_dailyTrades = 0;
int g_consecLossesHD = 0;
datetime g_cooldownUntil = 0;الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على MT5 — استخدم وسيطاً موثوقاً بتنفيذ سريع وسبريد منخفض
إكسبرتات مشابهة
عرض جميع الإكسبرتاتإكسبرتات أخرى بنفس استراتيجية شبكة
Pipsgrowth EX03022 Grid — إكسبرت أدفايزر شبكة
Pipsgrowth EX03022 Grid — Hedging + grid recovery EA that opens opposing positions at configurable distance. Uses a hedge-and-recover approach wit. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX03027 Grid — إكسبرت أدفايزر شبكة
Pipsgrowth EX03027 Grid — Equal-lot pyramid scalper using EMA crossover + SuperTrend confirmation. Pyramiding with fixed or auto lot capped by Max. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX03021 Grid — إكسبرت أدفايزر شبكة
Pipsgrowth EX03021 Grid — Grid system with optional martingale lot progression for major pairs. Places initial buy and a ladder of BuyLimit orders. إكسبرت أدفايزر MT5 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.