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

Pipsgrowth EX03005 Grid — إكسبرت أدفايزر شبكة

إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD · M5، H1

Pipsgrowth EX03005 Grid — TP averaging assistant that calculates the break-even price of all buy and sell positions on the current symbol and auto. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

إكسبرت Pipsgrowth EX03005 ليس Expert Advisor بالمعنى التقليدي، بل هو مساعد لإدارة جني الأرباح (TP averaging assistant) — أداة صغيرة تتابع سلة الصفقات المفتوحة على الشارت الحالي وتعيد كتابة مستويات جني الأرباح بحيث تُغلق كل صفقة في السلة معًا على مسافة ثابتة واحدة من سعر الدخول المرجح بحجم العقد في السلة. لا يفتح هذا الإكسبرت صفقات، ولا يُغلقها، ولا يضع وقف خسارة، ولا يشغّل أي مؤشر. الدور الذي يلعبه داخل محفظة هو دور مدير سلة (basket manager) للمتداولين الذين يديرون شبكة (grid) أو استراتيجية تخفيف متوسط التكلفة (averaging-down) أو تسلسل مارتينجال من إكسبرت آخر أو من أوامر يدوية، والذين يريدون أن تتقاسم كل صفقة في التسلسل هدف خروج واحد بدلًا من أن يحمل كل تذكر TP مستقل.

ملف .mq5 تالٍ بشكل مناسب — ثلاثة مدخلات وأربع دوال، دون أي handle لمؤشر، ودون أي ثابت #define، وجسم مكوّن من 165 سطرًا. تغطي المدخلات الثلاثة كل ما قد يحتاج المستخدم إلى تغييره: InpMagicNumber (افتراضيًا 22203005) يحدد رقم الماجيك الذي يعرّف السلة التي يجب أن يديرها المساعد، وInpTradeComment (افتراضيًا "Psgrowth.com Expert_03005") هو نص التعليق الذي يُكتب في أي أمر يلمسه المساعد، وTakeProfit (افتراضيًا 100، بوحدة points في MT5) هو المسافة الثابتة التي يضعها المساعد بين سعر التعادل في السلة ومستوى TP المعدَّل. كل ما عد ذلك مُبرمج بشكل ثابت لأنه لا يحتاج إلى التغيير.

مسار التنفيذ يعمل على مؤقت 5 ثوانٍ، وليس على التيك. تستدعي OnInit الدالة EventSetTimer(5) التي تُطلق OnTimer خمس مرات في الثانية — وهو تكرار أعلى بكثير مما تتطلبه مهمة تعديل المراكز، لكنه رخيص لأن جسم OnTimer لا يفعل شيئًا تقريبًا. في كل تكة من المؤقت، يستدعي المساعد positionInformation() لإعادة حساب متوسط الدخول المرجح بحجم العقد لكل صفقة مفتوحة على رمز الشارت. تمشي الدالة على PositionsTotal()، وتُصفّي المراكز التي يطابق رمزها رمز الشارت الحالي والتي نوعها BUY (أو SELL)، وتجمع مجموعين متدرّجين لكل اتجاه: tPriceBuy += price * volume وtLotsBuy += volume. بعد انتهاء المرور، يُحسب BEPBuy = tPriceBuy / tLotsBuy وBEPSell = tPriceSell / tLotsSell، مع تطبيع النتيجة إلى Digits() للرمز. النتيجة هي متوسط مرجح حقيقي بحجم العقد — الصفقات المفتوحة بلوت أكبر تسحب سعر التعادل في السلة نحو سعر دخولها أكثر من الصفقات الأصغر. هذا السعر هو المرساة التي يستخدمها المساعد لمستوى TP المعدَّل.

إذا كان BEPBuy غير صفري (أي أن هناك صفقة شراء واحدة على الأقل مفتوحة على الرمز)، تستدعي OnTimer الدالة modifyPosition(POSITION_TYPE_BUY, BEPBuy + TakeProfit * Point()). تمشي الدالة على المراكز المفتوحة مرة أخرى، وهذه المرة تُعدّل كل صفقة شراء يكون TP الحالي لها إما صفرًا أو غير مساوٍ للهدف الجديد. الشرط NormalizeDouble(PositionGetDouble(POSITION_TP), digit) != NormalizeDouble(TP, digit) || NormalizeDouble(PositionGetDouble(POSITION_TP), digit) == 0 هو مُحفّز إعادة الكتابة الفعلي: ينطلق عند أي انحراف، ودائمًا ينطلق في المرور الأول إذا كان TP صفرًا (أي أن الإكسبرت الأصلي فتح الصفقة دون TP). طلب التعديل هو TRADE_ACTION_SLTP قياسي — يُضبط حقل TP فقط، ويُترك حقل SL عند قيمته الحالية، وتستدعي clearStructures() لتصفير البنى request وresult وcheck_result قبل كل إرسال. ينطبق المسار نفسه على البيع بهدف BEPSell - TakeProfit * Point()، لذا فإن السلة التي تحتوي على شراء وبيع تحصل على هدفَين مستقلَّين، واحد لكل اتجاه.

غلاف إرسال الأمر، TryOrderSend_EX03005، يعيد المحاولة حتى ثلاث مرات عند الأخطاء العابرة: TRADE_RETCODE_REQUOTE وTRADE_RETCODE_TIMEOUT وTRADE_RETCODE_PRICE_OFF وTRADE_RETCODE_PRICE_CHANGED كل واحد منها يطلق Sleep(200) ومحاولة جديدة. يُعتبر التنفيذ ناجحًا عند TRADE_RETCODE_DONE أو TRADE_RETCODE_PLACED أو TRADE_RETCODE_DONE_PARTIAL. أي رمز retcode آخر يخرج من الحلقة وتُطبع الرسالة Print("Modify Error"). فجوة الـ 200 ms متحفظة لتعديل — تغييرات TP نادرًا ما تتنافس مع أوامر أخرى على نفس التذكرة، لكن إعادة المحاولة تغطي الحالة التي يمنع فيها مستوى الوقف (stop-level) أو منطقة التجميد (freeze-zone) التغيير لفترة وجيزة في أوقات التذبذب العالي.

لأن EX03005 مساعد سلة وليس استراتيجية، فإن المدخلات التي تعرضها بقية Expert Advisors في المجموعة — InpRiskPercent وInpATRMultSL وInpADXMinTrend وInpFilterNews وInpMaxConsecLosses ومصنّف الحالة السباعي — غائبة عمدًا. لا توجد إشارة ليتم فلترتها، ولا يوجد مخاطرة ليتم تحديد حجمها، ولا توجد جلسة ليتم فرضها. كل ما يقرره الإكسبرت الأصلي (أو المتداول) بشأن الدخول والوقف واللوت والحالة والتوقيت يُترك كما هو. مهمة EX03005 الوحيدة هي مواءمة جني الأرباح لكل صفقة يراها إلى هدف واحد مشترك مرجح بحجم العقد، والقيام بذلك كل 5 ثوانٍ طوال مدة إرفاق المساعد بالشارت.

نمط النشر الطبيعي هو تشغيل EX03005 في نسخة MT5 ثانية أو على شارت ثانٍ من نفس الرمز الذي يعمل عليه إكسبرت الشبكة الأساسي، مع نفس InpMagicNumber. الإكسبرت الأساسي يتولى الدخول وتحديد الحجم والوقف والاتجاه. يراقب EX03005 السلة ويمسح أي انحراف في TP. البرنامجان لا يتواصلان بشكل مباشر — يتناسقان فقط من خلال رقم الماجيك على المراكز المفتوحة. لاختبار EX03005 على بيانات تاريخية (backtest)، أرفقه على شارت إلى جانب إكسبرت استراتيجي ينتج الصفقات؛ تشغيله وحده لا ينتج أي إجراء لأن مرور positionInformation لا يجد ما يُعدّله. ولأن المساعد لا يدير المخاطر، فهو مناسب فقط للمتداولين المرتاحين فعلًا لسلوك السلة في إكسبرتهم الأساسي، والذين يريدون تحديدًا الخروج المتماثل الذي يوفره TP واحد مرجح بحجم العقد.

تفاصيل الاستراتيجية

يُطلق مؤقت 5 ثوانٍ الدالة OnTimer التي تستدعي positionInformation() للمرور على PositionsTotal() وتجميع tPriceBuy += price * volume وtLotsBuy += volume لكل تذكرة شراء، ونفس الشيء للبيع. بعد المرور، يُحسب BEPBuy = tPriceBuy / tLotsBuy (ونفسه للبيع)، مع تطبيع إلى Digits() للرمز — هذا هو متوسط التعادل المرجح بحجم العقد لسلة كل اتجاه. إذا كان BEPBuy != 0، يستدعي المؤقت modifyPosition(POSITION_TYPE_BUY, BEPBuy + TakeProfit * Point())؛ وينطبق المسار نفسه على البيع مع BEPSell - TakeProfit * Point(). تمشي modifyPosition على قائمة المراكز مرة أخرى، ولكل مركز مطابق لاتجاه ما يكون TP الحالي له صفرًا أو غير مساوٍ للهدف الجديد، تُرسل طلب TRADE_ACTION_SLTP يضبط حقل TP فقط. تعيد TryOrderSend_EX03005 المحاولة حتى ثلاث مرات بفاصل 200 ms عند REQUOTE أو TIMEOUT أو PRICE_OFF أو PRICE_CHANGED. لا توجد مؤشرات، ولا مصنّف حالة، ولا فلتر أخبار، ولا بوابة جلسة، ولا سقف سحب — كل بوابة تتوقعها في إكسبرت استراتيجية غائبة عمدًا لأن المهمة الوحيدة هي إبقاء TP السلة موافقًا للمتوسط المرجح بحجم العقد.

إشارة الدخول

لا يُولّد EX03005 إشارات دخول. صُمّم المساعد ليعمل بالتوازي مع إكسبرت آخر (أو تداول يدوي) ينتج الصفقات، ثم يدير المساعد جني الأرباح لتلك الصفقات فقط. إذا لم تكن هناك مراكز مفتوحة مطابقة لـ InpMagicNumber على الرمز الحالي، فلن يقوم المساعد بأي إجراء.

إشارة الخروج

الخروج يكون عبر جني الأرباح (TP)، وليس عبر وقف الخسارة. يعيد المساعد كتابة TP لكل مركز مطابق إلى BEPBuy + TakeProfit * Point() للشراء وBEPSell - TakeProfit * Point() للبيع، حيث إن BEP هو متوسط الدخول المرجح بحجم العقد للسلة. تعمل إعادة الكتابة كل 5 ثوانٍ عبر EventSetTimer(5)، وفقط عندما يختلف TP الحالي عن الهدف أو يكون صفرًا. لا يوجد خروج بإشارة معاكسة، ولا خروج مبني على الوقت، ولا منطق إغلاق يدوي داخل المساعد نفسه.

وقف الخسارة

لا يضع EX03005 مستويات وقف الخسارة ولا يعدّلها ولا يمسحها. يترك طلب TRADE_ACTION_SLTP حقل sl فارغًا، لذا فإن أي وقف خسارة أرفقه الإكسبرت الأصلي بالصفقة يبقى في مكانه. إدارة المخاطر من مسؤولية إكسبرت الاستراتيجية الذي فتح الصفقة.

جني الأرباح

تستند جني الأرباح في السلة إلى متوسط الدخول المرجح بحجم العقد لكل المراكز المفتوحة على نفس الاتجاه من نفس الرمز، مع إضافة TakeProfit (افتراضيًا 100 point) إلى الشراء أو طرحه من البيع. النتيجة هي هدف خروج واحد مشترك للسلة بأكملها بدلًا من TPs مستقلة لكل تذكرة. تنطلق إعادة الكتابة عند أي انحراف، ودائمًا تنطلق في المرور الأول إذا لم يكن للصفقة TP مضبوط.

الأنسب لـ

المتداولون الذين يديرون بالفعل إكسبرت شبكة أو مارتينجال أو تخفيف متوسط التكلفة (أو الذين يكبّرون المراكز يدويًا) والذين يريدون أن تتقاسم كل صفقة في السلة TP واحدًا مرجحًا بحجم العقد بدلًا من TPs مستقلة. الرمز المقترح: XAUUSD على M5H1 (يعمل أيضًا على العملات الرئيسية والمعادن الأخرى). الحد الأدنى الموصى به للرصيد هو نفس الحد الأدنى لإكسبرت الشبكة الأصلي، عادة 100 دولار+ للوتات الصغيرة على XAUUSD، لكن القيد الحقيقي هو متطلب هامش السلة، لا قيد المساعد. استخدم وسيطًا بسبريد منخفض لأن المساعد لا يتضمن أي فلتر سبريد خاصًا به؛ زمن استجابة دورة التعديل غير مهم لربحية الاستراتيجية، لكن السبريد الضيق على الإكسبرت الأساسي يحسّن تكلفة الدخول الذي أنتج السلة.

منطق الاستراتيجية

Pipsgrowth EX03005 Grid — تحليل منطق الاستراتيجية (من كود .mq5)

العائلة: Grid الماجيك: 22203005 الإصدار: 2.00

الوصف: TP averaging assistant that calculates the break-even price of all buy and sell positions on the current symbol and automatically modifies TP to a fixed distance from average. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

  • مؤشرات قياسية

الدوال الرئيسية:

  • OnTimer()
  • clearStructures()
  • modifyPosition()
  • positionInformation()
  • TryOrderSend_EX03005()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX03005 Grid — Execution Flow (from source analysis)
// Family: Grid
// TP averaging assistant that calculates the break-even price of all buy and sell positions on the current symbol and automatically modifies TP to a fixed distance from average. 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

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

المعاملالافتراضيالوصف
InpMagicNumber22203005Magic Number
InpTradeComment"Psgrowth.com Expert_03005"Trade Comment
TakeProfit100Take Profit in Points
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX03005.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX03005 Asisten_TP_Averaging — TP averaging assistant for basket management, full 12-layer stack."

input group "=== Trade Management ==="
input int      InpMagicNumber    = 22203005; // Magic Number
input string   InpTradeComment   = "Psgrowth.com Expert_03005"; // Trade Comment

input group "=== TP Settings ==="
input double      TakeProfit        = 100;      // Take Profit in Points

MqlTradeRequest   m_request;              // request data
MqlTradeResult    m_result;               // result data
MqlTradeCheckResult m_check_result;       // result check data

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() {
//--- create timer
   EventSetTimer(5);

//---
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
//--- destroy timer
   EventKillTimer();

}
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer() {
//---
   double tPriceBuy = 0,
          tPriceSell = 0,
          tLotsBuy = 0,
          tLotsSell = 0,
          BEPBuy = 0,
          BEPSell = 0;

   positionInformation(tPriceBuy, tPriceSell, tLotsBuy, tLotsSell, BEPBuy, BEPSell);

   if(BEPBuy != 0) {
      modifyPosition(POSITION_TYPE_BUY, BEPBuy + TakeProfit * Point());
   }

   if(BEPSell != 0) {
      modifyPosition(POSITION_TYPE_SELL, BEPSell - TakeProfit * Point());
   }

}
//+------------------------------------------------------------------+

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

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

الوسوم:ex03005gridpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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