Pipsgrowth EX03007 Grid — إكسبرت أدفايزر شبكة
إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD · M5
Pipsgrowth EX03007 Grid — Utility EA that closes all open positions at a specified stop time. Can filter by magic number or close all positions re. إكسبرت أدفايزر MT5 مفتوح المصدر.
نظرة عامة
Pipsgrowth EX03007 أداة منفردة الغرض لإدارة المراكز وليست استراتيجية تداول. لا يحتوي هذا الإكسبيرت أدفيسر على منطق إشارات، ولا على مكدس مؤشرات، ولا على شروط دخول، ولا على أي رياضيات لإدارة رأس المال — وظيفته الوحيدة هي تسوية المراكز المفتوحة على الرمز الموضح على الشارت عند حلول ساعة يحددها المستخدم. تسمية عائلة «Grid» التي يندرج تحتها الملف تشير إلى المجموعة التي صدر منها، لكن الكود المصدري يوضح الدور بجلاء: هذا الملف يقبع في عمود إدارة الصفقات، لا في عمود الإشارات، وهو مصمم ليعمل إلى جانب إكسبيرت أدفيسر آخر كمفتاح قتل مجدول لكل ما يتركه الإكسبيرت الآخر مفتوحاً.
كل السلوك مدفوع بمُدخلين اثنين في مجموعة «Close Settings». الأول هو StopTime (datetime، الافتراضي D'2030.01.01 23:59') وهو وقت القطع. في كل تيكة، يستدعي معالج OnTick() الدالة TimeCurrent() ويتحقق من الشرط TimeCurrent() > StopTime && PositionsTotal(). إذا لم يتجاوز الوقت حد القطع، تعود الدالة فوراً ولا تفعل شيئاً — لا عمل على المعالج، ولا تسجيل، ولا فحص للمراكز. الافتراضي 2030-01-01 هو العنصر النائب الآمن عند الشحن: افتراضياً لن يغلق الإكسبيرت أدفيسر أي شيء لأن لا حساباً حياً سيصل إلى عام 2030 في اختبار رجعي، وعلى الحساب الحقيقي يُجبر المستخدم على ضبط القيمة قبل أن يطلب أي تسوية.
أما المُتحكم الثاني، MagicToClose (ulong، الافتراضي 0)، فيحدد ما يُعد هدفاً. القيمة الافتراضية 0 هي علم الشمول: عندما تكون صفراً، تتجاهل الحلقة أرقام الماجيك وتغلق كل مركز مفتوح على الرمز بصرف النظر عن أي إكسبيرت أدفيسر فتحه. ضبطها على قيمة غير صفرية — مثلاً 22203007 لتطابق ماجيك هذا الإكسبيرت نفسه، أو ماجيك إكسبيرت شريك — يضيق النطاق ليقتصر على هذا المُعرّف بعينه. هذا يجعل نفس الملف قابلاً للاستخدام إما كتسوية كاملة (صفر) أو كتسوية جراحية مقيّدة بالماجيك (غير صفر) دون تغيير في الكود.
بمجرد تثبيت Stop على true، يدور الإكسبيرت أدفيسر في حلقة for(int pos = total-1; pos >= 0; pos--) بحيث أن الإغلاق من نهاية قائمة المراكز إلى بدايتها لا يتخطى أي إدخال أثناء انضغاط القائمة في منتصف الحلقة. لكل مركز يستدعي PositionGetSymbol(pos) ثم PositionSelect(symbol) لربط سياق المركز، ويطبق مرشح الماجيك: if(MagicToClose != 0 && PositionGetInteger(POSITION_MAGIC) != (long)MagicToClose) continue;. بعد المرشح يتفرع مُميّز النوع: POSITION_TYPE_BUY يستدعي BuyPositionClose() بصفقة بيع عند Bid؛ وPOSITION_TYPE_SELL يستدعي SellPositionClose() بصفقة شراء عند Ask. المُتحكم الثالث، Deviation_ (uint، الافتراضي 20)، هو الحد الأقصى لتفاوت السعر الممنوح، يُمرَّر مباشرة إلى حقل request.deviation في طلب الإغلاق.
دالتا الإغلاق صورتان معكوستان لبعضهما. كلتاهما تُصفّر MqlTradeRequest، وتعبئه بـ action=TRADE_ACTION_DEAL، وتُلغي sl=0.0 وtp=0.0 (لا تعديل على وقف الخسارة أو جني الأرباح في صفقة إغلاق سوقي)، وتضبط type_filling=ORDER_FILLING_FOK، وتسحب التذكرة من PositionGetInteger(POSITION_TICKET). كل منهما يمرر الطلب أولاً عبر OrderCheck()، ويسجل شعاراً محلياً بالرمز، ولا يرسل الأمر إلا عبر TryOrderSend_EX03007(). عند TRADE_RETCODE_DONE تضبط الدالة علامة Signal على false (يستخدمها حارس حلقة المُستدعي)، وتُسجل شعار تأكيد ثانٍ، وتشغّل ok.wav ليتسمع المتداول لحظات الإغلاق. عند أي رمز إرجاع آخر تُسجل الدالة ResultRetcodeDescription(result.retcode) — وهو مفتاح تحويل من 30 حالة على ثوابت TRADE_RETCODE_* القياسية يعيد أوصافاً بالروسية مثل «Реквота» (إعادة تسعير) و«Заявка выполнена» (تم التنفيذ) و«Нет достаточных денежных средств» (لا أموال كافية) — وتُعيد false، تاركةً للتيكة التالية إعادة المحاولة.
غلاف إعادة المحاولة، TryOrderSend_EX03007()، يحاول تنفيذ OrderSend() لما يصل إلى ثلاث مرات. يقبل TRADE_RETCODE_DONE وTRADE_RETCODE_PLACED وTRADE_RETCODE_DONE_PARTIAL كنجاح؛ وعند TRADE_RETCODE_REQUOTE أو TRADE_RETCODE_TIMEOUT أو TRADE_RETCODE_PRICE_OFF أو TRADE_RETCODE_PRICE_CHANGED ينام 200 مللي ثانية ويُعيد الحلقة؛ وعند أي رمز إرجاع آخر يخرج من الحلقة ويُعيد false. هذه هي طبقة المرونة الوحيدة في الكود المصدري — لا يوجد OnTradeTransaction() للتسوية، ولا مُجمّع تنفيذ جزئي، ولا آلة حالات طرفية. ولأن الإكسبيرت أدفيسر يكرر تعداد قائمة المراكز في كل تيكة ما دام Stop==true، فإن أي إغلاق فاشل في تيكة ما تُعيد محاولته بشكل طبيعي في التيكة التالية بواسطة الحلقة الخارجية، حتى لو كان الغلاف الداخلي قد استسلم.
لا يُمسح قفل Stop إلا بعد أن يصل عداد المراكز فعلياً إلى الصفر: if(!total) { Stop=false; return; }. هذا يعني أن دفعة جزئية (على سبيل المثال، تُغلق عمليات الشراء فقط في أول تيكة لأن أسعار الطلب كانت بعيدة جداً عن سعر العرض لحظة الإرسال) لا تُعطّل التسوية بصمت — يبقى الإكسبيرت أدفيسر في وضع التسوية حتى اختفاء كل مركز مُصفّى، ويسمع المتداول ok.wav واحدة لكل تذكرة تُغلق بنجاح، ولا يعود OnTick() إلى وضع التحقق الصامت من الوقت إلا بعد ذلك.
التكوين متعمد بساطته. المقابض الثلاثة ذات المعنى هي StopTime (متى تتم التسوية)، وMagicToClose (أي المراكز تُسوَّى — 0 للكل، أو غير صفر لماجيك محدد)، وDeviation_ (ميزان الانزلاق لكل إغلاق، الافتراضي 20 نقطة). المُدخلان الأولان في مجموعة «Trade Management» — MagicNumber=22203007 وInpTradeComment='Psgrowth.com Expert_03007' — مشروحان صراحة بـ«not used for closing»؛ ولا وجود لهما إلا لاستيفاء تخطيط مجموعة المُدخلات القياسي وللحفاظ على هوية الإكسبيرت أدفيسر في قائمة الخبراء على الشارت. لا يوجد مُدخل لنسبة المخاطرة، ولا قاطع للدائرة على الخسارة اليومية، ولا مرشح جلسات، ولا مرشح أخبار، ولا سقف لرأس المال، لأن الإكسبيرت أدفيسر لا يخصص مخاطرة — بل يُصفّيها على مؤقت فقط.
حالات الاستخدام المقصودة ضيقة ومحددة جيداً. الأكثر شيوعاً، يُلحق المتداولون EX03007 بشارت يعمل عليه إكسبيرت أدفيسر آخر ويضبطون StopTime على بضع دقائق قبل إغلاق نهاية الأسبوع أو الترحيل اليومي، مع MagicToClose=0 لضمان دفتر مسطح بصرف النظر عن الاستراتيجية الفعّالة. ويلصقه آخرون بنهاية جلسة محددة (الساعة الأخيرة من نيويورك مثلاً) بحيث تُغلق قسرياً أي صفقة اختراق لم تصل إلى الخروج الخاص بها بحلول الساعة 17:00 بتوقيت شرق الولايات المتحدة. هناك نمط ثالث يستخدم MagicToClose غير صفر لإبقاء إكسبيرتين متوازيين على نفس الرمز في سلتين منفصلتين، ولا يُسوَّى إلا السلة التي يملكها ماجيك محدد — وهو مفيد عند المقارنة المباشرة بين نسختين. لا شيء من هذه الأنماط يتضمن الإكسبيرت أدفيسر في إنشاء تعرض للمخاطر؛ إنه فقط إغلاق مجدول.
تفاصيل الاستراتيجية
في كل تيكة يستدعي الإكسبيرت أدفيسر أولاً TimeCurrent() ويتحقق مما إذا كان ساعة الوسيط تجاوزت StopTime التي يكوّنها المستخدم مع وجود مركز واحد على الأقل على رمز الشارت؛ وإن لم يكن، يعود فوراً ولا ينفذ شيئاً. بمجرد انتهاك البوابة، يُثبَّت قفل Stop لاصقاً ويدور الإكسبيرت أدفيسر على قائمة المراكز من الخلف إلى الأمام، مصفياً عبر MagicToClose (صفر = إغلاق كل الماجيك، غير صفر = إغلاق التذاكر المطابقة فقط) ومُرسلاً صفقات إغلاق سوقي عبر BuyPositionClose() للشراء وSellPositionClose() للبيع، وكلتاهما تمرر طلبيها عبر OrderCheck() قبل الإرسال. كل إرسال يمر عبر TryOrderSend_EX03007() الذي يعيد المحاولة لما يصل إلى ثلاث مرات بفاصل 200 مللي ثانية عند رموز requote أو timeout أو price_off أو price_changed؛ وعند TRADE_RETCODE_DONE يشغّل ok.wav ويؤكد عبر شعار السجل باللغة الروسية الذي تنتجه ResultRetcodeDescription(). تستمر الحلقة الخارجية في مسح قائمة المراكز في كل تيكة، معيدةً المحاولة بشكل طبيعي لأي شيء تخلى عنه الغلاف الداخلي، حتى تُعيد PositionsTotal() صفراً — وعندها يُمسح Stop ويعود الإكسبيرت أدفيسر إلى وضع التحقق الصامت من الوقت. لا توجد طبقة إشارات، ولا مكدس مؤشرات، ولا سقف لرأس المال، ولا قاطع دائرة للخسارة اليومية، ولا مرشح أخبار: القرار الوحيد الذي يتخذه الإكسبيرت أدفيسر على الإطلاق هو ما إذا كانت الساعة قد تجاوزت حد القطع، وحين يحدث ذلك، الإجراء الوحيد هو التسوية.
هذا الإكسبيرت أدفيسر لا يفتح صفقات. EX03007 أداة لإدارة المراكز بلا منطق إشارات، ولا مؤشرات، ولا شروط دخول من أي نوع. صُمّم لِيُلحق بشارت يتداول عليه إكسبيرت آخر (أو يتداول عليه المتداول يدوياً) ويقوم بتسوية ما يتركه ذلك الفاعل الآخر مفتوحاً. لا يوجد دخول يمكن وصفه لأن دور الإكسبيرت أدفيسر يبدأ بعد أن تكون المراكز موجودة فعلاً على الدفتر.
الخروج مدفوع بالكامل بالزمن ويحدث عندما تتجاوز TimeCurrent() قيمة StopTime التي يحددها المستخدم. من تلك اللحظة فصاعداً، تمر كل تيكة على كامل قائمة المراكز على رمز الشارت وتُرسل صفقات إغلاق سوقية (بيع عند Bid للشراء، شراء عند Ask للبيع) حتى تُعيد PositionsTotal() صفراً. كل إغلاق يُمرَّر عبر TryOrderSend_EX03007() بما يصل إلى ثلاث محاولات بفاصل 200 مللي ثانية عند رموز requote أو timeout أو price_off أو price_changed؛ وتُعيد الحلقة الخارجية محاولة المراكز الفاشلة في التيكة التالية. الإغلاق الناجح يستدعي PlaySound("ok.wav") ويسجل سطر تأكيد محلي؛ ولا يُحرَّر القفل إلا بعد أن يصل عداد المراكز فعلياً إلى الصفر.
لا يضع EX03007 أوامر وقف خسارة. وقف الخسارة ليس من مسؤوليات هذا الإكسبيرت أدفيسر لأنه لا يفتح مراكز؛ الحماية الوحيدة التي يقدمها هي التسوية المعتمدة على الزمن ذاتها، والتي بحكم التعريف تقضي على أي خسارة إضافية على المراكز المتأثرة لحظة انقضاء وقت القطع. إذا أراد المستخدم أوامر وقف خسارة لكل صفقة، فعليه أن يضبطها على الإكسبيرت أدفيسر الذي فتح الصفقات، لا على هذه الأداة.
لا يضع EX03007 أوامر جني أرباح ولا مخارج مستهدفة. لا يوجد عتبة ربح، ولا مضاعف مخاطرة/عائد، ولا منطق إغلاق جزئي في الكود المصدري — كل من BuyPositionClose() وSellPositionClose() تضبط request.tp = 0.0 على صفقة الإغلاق. «جني الأرباح» لأي مركز مفتوح هو في الواقع الوقت الذي يحدد فيه المستخدم StopTime؛ أي ربح تكون عليه الصفقة في تلك اللحظة هو ما يحتفظ به المستخدم.
أنسب للمتداولين الذين يديرون محفظة من عدة إكسبيرتات ويريدون شبكة أمان حتمية قائمة على الزمن بدلاً من شبكة تقديرية — الحد الأدنى الموصى به للرصيد هو 100 دولار المنشور مع الإكسبيرت أدفيسر، لكن الحد الأدنى الفعلي يتوقف كلياً على ما يفعله الإكسبيرت الشريك، لأن EX03007 نفسه لا يخصص مخاطرة. اجمعه مع حساب ECN أو قياسي يسمح بصفقات إغلاق السوقي على الرمز؛ XAUUSD هو الافتراضي المنشور، لكن منطق الإغلاق قابل للنقل بين الرموز والملخص يذكر «FX Majors, Gold/Metals (portable)». النشر الأكثر شيوعاً هو M5 على رمز 24/5، حيث يحدد المستخدم StopTime على بضع دقائق قبل الترحيل اليومي أو إغلاق الجمعة وMagicToClose=0 لتسوية كل شيء بصرف النظر عن المصدر؛ والنمط الثاني يستخدم MagicToClose غير صفر لإبقاء إكسبيرتين متوازيين في سلال منفصلة على نفس الشارت.
منطق الاستراتيجية
Pipsgrowth EX03007 Grid — تحليل منطق الاستراتيجية (من كود .mq5)
العائلة: Grid
الماجيك: 22203007
الإصدار: 2.00
الوصف:
Utility EA that closes all open positions at a specified stop time. Can filter by magic number or close all positions regardless of magic. Useful for scheduled basket closure. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
المؤشرات:
- مؤشرات قياسية
الدوال الرئيسية:
BuyPositionClose()SellPositionClose()ResultRetcodeDescription()TryOrderSend_EX03007()
// Pipsgrowth EX03007 Grid — Execution Flow (from source analysis)
// Family: Grid
// Utility EA that closes all open positions at a specified stop time. Can filter by magic number or close all positions regardless of magic. Useful for scheduled basket closure. 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
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| MagicNumber | 22203007 | Magic Number (not used for closing) |
| InpTradeComment | "Psgrowth.com Expert_03007" | Trade Comment (not used for closing) |
| MagicToClose | 0 | 0 = close ALL magic numbers, non-zero = only close this magic |
| StopTime | D'2030.01.01 23:59' | Time to close all positions |
| Deviation_ | 20 | Max price deviation in points |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX03007 Exp_CloseAllPositionsByTime — scheduled close-all utility, full 12-layer stack."
//+----------------------------------------------+
//| Input Parameters |
//+----------------------------------------------+
input group "=== Trade Management ==="
input long MagicNumber = 22203007; // Magic Number (not used for closing)
input string InpTradeComment = "Psgrowth.com Expert_03007"; // Trade Comment (not used for closing)
input ulong MagicToClose = 0; // 0 = close ALL magic numbers, non-zero = only close this magic
input group "=== Close Settings ==="
input datetime StopTime = D'2030.01.01 23:59'; // Time to close all positions
input uint Deviation_ = 20; // Max price deviation in points
//+----------------------------------------------+
bool Stop;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//----
Stop=false;
//---- завершение инициализации
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//----
//----
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//----
if(TimeCurrent()>StopTime && PositionsTotal()) Stop=true;
else return;
//---- закрываем все открытые позиции по текущему символу
if(Stop)
{
int total=PositionsTotal();
if(!total)
{
Stop=false; // все позиции закрыты
return;
}
for(int pos=total-1; pos>=0; pos--)
{
string symbol=PositionGetSymbol(pos);
if(!PositionSelect(symbol)) continue;
if(MagicToClose != 0 && PositionGetInteger(POSITION_MAGIC) != (long)MagicToClose) continue; // skip other EAsالكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على 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 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.