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

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()
الرمز الزائف (Pseudocode)
// 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)

ملف التحسين

الوسطاء المُحسّنون:
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اسحب الإكسبرت على رسم بياني — يُنصح بـ H1 أو H4 لروبوتات الشبكة
  7. 7حدد خطوة الشبكة (نقاط)، الحد الأقصى للأوامر، وحجم اللوت في نافذة الإعدادات
  8. 8فعّل Allow Algo Trading واضغط OK

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

المعاملالافتراضيالوصف
InpGridStep30Grid Step (points)
InpMaxOrders8Max Grid Orders
InpLotSize0.01Initial Lot Size
InpTakeProfit60Basket Take Profit (points)
InpLotMultiplyfalseMultiply lots per level
InpMultiplier1.5Lot multiplier (if enabled)
InpSignalType"MA"Signal: MA or BOS
InpMAPeriod50Moving Average Period
InpMAMethodMODE_EMAMA Method
InpMagicNumber22203020Magic Number
InpMaxSpread40Max Spread (points)
InpMaxDrawdown25.0Max Drawdown %
InpTradeComment"Psgrowth.com Expert_03020"Trade comment
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX03020.mq5
#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;

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

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

الوسوم:ex03020gridpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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