Pipsgrowth EX17008 Volatility — إكسبرت أدفايزر تقلب
إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD · M15، M5
Pipsgrowth EX17008 Volatility — Gold scalping strategy using Bollinger Bands volatility squeeze breakout detection. Enters when BB bandwidth contracts b. إكسبرت أدفايزر MT5 مفتوح المصدر.
نظرة عامة
تم بناء Pipsgrowth EX17008 حول سلوك سوقي محدد: عصر التذبذب في نطاقات بولينجر. تتقلص نطاقات بولينجر المحيطة بالسعر دورياً — ينخفض عرض النطاق، ويهبط متوسط المدى الحقيقي (ATR)، وتضيق الشموع — وفي اللحظة التي ينطلق فيها هذا الانضغاط، يتحرك الذهب في الغالب بقوة. وإكس 17008 هو المستشار الخبير الذي يصطاد تلك اللحظات.
يقع منطق الإشارة بالكامل في دالة GetBreakoutSignal(). عند افتتاح كل شمعة M15 جديدة، تنسخ دالة RefreshIndicators() قيم النطاق العلوي والسفلي والوسط من الشمعتين المغلقة السابقتين، بالإضافة إلى قراءة ATR(14). ثم تحسب الدالة النسبة المئوية لعرض النطاق: (العلوي - السفلي) / الأوسط * 100. يجب أن يتحقق شرطان معاً لفتح صفقة. أولاً، يجب أن يكون عرض نطاق الشمعة السابقة أقل من قيمة الإدخال SqueezeThreshold، التي يبلغ افتراضها 0.015% — ما يعني أن النطاقات كانت ضاغطة بإحكام حول السعر. ثانياً، يجب أن يكون عرض نطاق الشمعة الحالية أوسع بأكثر من 10% من الشمعة السابقة، وهو ما يتم التحقق منه عبر isExpanding (المتغير المنطقي) الذي يفحص ما إذا كان bandwidth > prevBandwidth * 1.1. وعند تحقق الشرطين، يكون الانضغاط قد انفك للتو. أما الاتجاه فيأتي من مكان إغلاق الشمعة السابقة: إغلاق فوق النطاق العلوي يعني شراء، وإغلاق تحت النطاق السفلي يعني بيع. لا توجد لمسات للنطاق الأوسط، ولا انعكاس للمتوسط داخل النطاق، ولا مرشح اختراق كاذب — الإدخال الوحيد هو كسر النطاق بعد عصر حقيقي.
يعد وضع وقف الخسارة عملية حسابية للحد الأدنى من قيمتين في دالة OpenPosition(). للشراء، يُوضع وقف الخسارة عند الأقرب للإدخال: إما النطاق السفلي الحالي، أو StopLossPips (افتراضياً 15 نقطة) تحت السعر. للبيع، يكون الوقف عند الأعلى بين النطاق العلوي الحالي أو 15 نقطة فوق السعر. ثم تفرض الدالة مسافة وقف أدنى قدرها max(stopLevel * _Point, 10 pips) * 1.5 للامتثال لمستويات الوقف لدى الوسيط، وتعيد حساب عدد النقاط الفعلية التي يمثلها الوقف، وتمرر ذلك الرقم إلى دالة CalculatePositionSize(). مع تفعيل UseMoneyManagement = true وRiskPercent = 2.0، يتم تحديد حجم اللوت بحيث يساوي ضرب الوقف 2% من رصيد الحساب، باستخدام SymbolInfoDouble(SYMBOL_TRADE_TICK_VALUE) وحجم الـ tick لحساب قيمة النقطة لكل لوت. يتم تقريب أحجام اللوت إلى SYMBOL_VOLUME_STEP لدى الوسيط، وتقييدها بـ SYMBOL_VOLUME_MAX وSYMBOL_VOLUME_MIN، وأخيراً فحصها مقابل الهامش الحر — إذا كان اللوت المزمع يأخذ أكثر من 90% من الهامش الحر، يُخفَّض حجمه.
يقع جني الأرباح عند ضعف مسافة وقف الخسارة بالضبط — نسبة مخاطرة إلى عائد ثابتة 1:2 هيكلياً. مع الوقف الافتراضي 15 نقطة، ينتج عن ذلك جني أرباح 30 نقطة. حقل TakeProfitPips قديم ولكن حساب الهدف الفعلي يتجاوزه بـ tpDist = slDist * 2. كما يتم تقييد جني الأرباح بـ 1.5 ضعف الحد الأدنى لمستوى وقف الوسيط لمنع رفض الأمر من البورصة. لا يوجد إغلاق جزئي، ولا جني أرباح سلة، ولا خروج مرتبط بانتهاء الوقت. إما أن يصل السعر إلى هدف 1:2، أو يضرب الوقف الهيكلي، أو تتم إدارة الصفقة بمنطق التتبع.
التتبع (Trailing) هو أبرز ميزة في وقت التشغيل. تعمل دالة ManageOpenPositions() على كل تكة (tick)، وليس فقط عند إغلاق الشمعة. بمجرد أن تحقق الصفقة ربحاً يزيد عن TrailingStartPips (افتراضياً 10 نقاط)، يُحرَّك وقف الخسارة إلى الأمام بزيادات قدرها TrailingStepPips (افتراضياً 5 نقاط). افتراضياً، يكون TrailToSMA = true، ما يعني أن مستوى الوقف الجديد هو نطاق بولينجر الأوسط ناقص 5 نقاط (للشراء) أو زائد 5 نقاط (للبيع). يختلف هذا هيكلياً عن وقف التتبع بنقاط ثابتة — فالوقف مرتكز على النطاق الذي يحدد مركز عصر النطاقات، لذا تُغلق الصفقة دائماً إذا انكمشت النطاقات مجدداً إلى العصر السابق. اضبط TrailToSMA = false للتحول إلى وقف تتبع بنقاط ثابتة عند currentPrice - TrailingStartPips.
طبقتا الهرمية والتصفية بسيطتان عمداً. يكون UsePyramiding معطلاً افتراضياً، مع MaxOpenPositions = 2 كحد أقصى صارم. إذا فُتحت صفقة ثانية في نفس الاتجاه والصفقة الأولى لا تزال نشطة، فإن منطق الكسر نفسه يُولِّد الصفقتين — لا يوجد مضاعف حجم، والصفقة الثانية تُحجَّم بنفس الصفقة الأولى. تُجري CheckFilters() بوابتين قبل كل دخول. مرشح السبريد مفعَّل افتراضياً ويحظر الدخول عندما يتجاوز السبريد 25 نقطة — تساهل مناسب للذهب (10–30 نقطة عادةً)، لكنه يمنع التنفيذ الشاذ خلال السيولة الرقيقة. مرشح الوقت معطل افتراضياً، ولكن عند تفعيله يقصر الإدخالات على نافذة StartTime/EndTime (افتراضياً 08:00–17:00 بتوقيت الخادم، أي تقريباً لندن + نيويورك).
تقوم دالة SafePositionModify() بالعمل الشاق عند كل تغيير في الوقف. تعيد قراءة SYMBOL_TRADE_STOPS_LEVEL من الوسيط، وتطبع SL وTP الجديدين، وتتحقق أن SL على الجانب الصحيح من السعر الحالي، وتستدعي TryModify_EX17008 لتنفيذ trade.PositionModify الفعلي مع هيكل إعادة محاولة 3 مرات / 100 مللي ثانية لحالات إعادة التسعير وانتهاء المهلة. توفر TryClose_EX17008 وTryClosePartial_EX17008 نفس هيكل إعادة المحاولة لـ trade.PositionClose وtrade.PositionClosePartial، مع فاصل 200 مللي ثانية بين المحاولات. تم التصريح بهذه الدوال دون استدعائها مباشرة من OnTick — فهي تعمل كطبقة سباكة لأي توسيع مستقبلي لأنماط الخروج.
EX17008 مناسب للمتداولين الذين يبحثون عن مستشار اختراق بسيط المدخلات وواضح البنية على الذهب. لا يوجد مرشح ADX، ولا كومة متوسطات متحركة للاتجاه، ولا مرشح أخبار — الميزة الكاملة هي نمط عصر النطاقات ثم انفراجها. هذا يجعله سهل التحليل في الاختبار الخلفي، لكنه يعني أيضاً أنه سيتداول في كلا الاتجاهين عند كل انفراج: إشارة شراء متبوعة بإشارة بيع نمط طبيعي عندما تنضغط النطاقات مجدداً ثم تنفرج بالاتجاه الآخر. للحصول على أفضل النتائج، شغّله على XAUUSD M15، وتوقع بضع صفقات في الجلسة، واعتبر أي صفقة منفردة جزءاً من دورة عصر وانفراج أطول بدلاً من إشارة معزولة.
تفاصيل الاستراتيجية
تعالج OnTick() دالة ManageOpenPositions() عند كل تكة (tick) لإدارة وقف التتبع، وعند افتتاح شمعة M15 جديدة فقط (IsNewBar()) تستدعي RefreshIndicators() لنسخ نطاقات بولينجر العلوية والوسطى والسفلية من الشمعتين المغلقة السابقتين، إضافة إلى ATR(14). تحسب GetBreakoutSignal() عرض النطاق كـ (العلوي - السفلي) / الأوسط * 100 لكلتا الشمعتين، وتُفعَّل عندما يكون عرض النطاق السابق أقل من SqueezeThreshold (0.015%) ويكون عرض النطاق الحالي أوسع بأكثر من 10% — انفراج عصر النطاقات. يحدد موضع الشمعة المغلقة بالنسبة للنطاقات الاتجاه: فوق النطاق العلوي شراء، وتحت النطاق السفلي بيع. تقوم CheckFilters() بحراسة الإدخالات على سبريد ≤ 25 نقطة ونافذة زمنية اختيارية للخادم 08:00-17:00، بينما تفرض CountPositions() حد الصفقتين. حجم الصفقة ديناميكي افتراضياً — تُقرِب CalculatePositionSize() اللوتات إلى RiskPercent = 2.0% من الرصيد، مع تقييدها بخطوة حجم الوسيط والهامش الحر. وقف الخسارة هو الأقرب بين (BB المعاكس، 15 نقطة)، وجني الأرباح ضعف SL بالضبط. يبدأ التتبع عند 10 نقاط ربح ويُحرَّك بزيادات 5 نقاط، مع ربطه بالنطاق الأوسط BB عند TrailToSMA = true. تمر جميع تعديلات الصفقات عبر SafePositionModify() ← TryModify_EX17008 (3 محاولات / 100 مللي ثانية) لمعالجة إعادة التسعير وانتهاء المهلة.
يفتح صفقة شراء عندما يكون عرض نطاق بولينجر للشمعة السابقة في M15 أقل من 0.015% ويكون عرض النطاق للشمعة الحالية أوسع بنسبة 10% على الأقل — أي أن عصراً حقيقياً انفك للتو — ويغلق السعر فوق النطاق العلوي لـ BB(20, 2.0). ويفتح صفقة بيع عند الشرط المعاكس (إغلاق تحت النطاق السفلي). لا توجد مرشحات أخرى: لا فحص اتجاه، ولا بوابة ADX، ولا مرشح أخبار — عصر النطاقات وانفراجها هو الإدخال بأكمله.
يخرج عند هدف نسبة المخاطرة إلى العائد الثابتة 1:2 (TP عند ضعف مسافة الوقف بالضبط) أو عند الوقف الأصلي إذا ضُرب. بمجرد أن يصل الربح إلى أكثر من 10 نقاط، تقوم ManageOpenPositions() بتحريك وقف الخسارة إلى الأمام بزيادات قدرها 5 نقاط، مع ربطه بنطاق بولينجر الأوسط افتراضياً (أو بمسافة نقاط ثابتة عند TrailToSMA = false). تُغلق الصفقة إذا عاد السعر إلى منطقة العصر السابقة على مسار التتبع.
وقف الخسارة هو الأقرب بين نطاق بولينجر المعاكس أو المسافة الثابتة البالغة 15 نقطة (StopLossPips) — وقف الشراء عند min(currentBB_Lower, price - 15 pips)، ووقف البيع عند max(currentBB_Upper, price + 15 pips). بعد الوضع الأولي، يحرك منطق التتبع وقف الخسارة إلى الأمام في اتجاه الربح فقط، مع ربطه بالنطاق الأوسط BB أو بمسافة نقاط ثابتة.
جني الأرباح ثابت عند ضعف مسافة الوقف الفعلية بالضبط (tpDist = slDist * 2) — نسبة مخاطرة إلى عائد 1:2 هيكلية، وليست عدد نقاط يحدده المستخدم. حقل الإدخال TakeProfitPips قديم ويتم تجاوزه بهذا الحساب 2:1 داخل دالة OpenPosition(). لا يوجد جني أرباح جزئي ولا جني أرباح سلة.
مصمم لـ XAUUSD على الإطار M15 (يعمل على M5 أيضاً)، بحد أدنى للرصيد 100 دولار ومستوى مخاطرة متوسط. يُفضَّل إقرانه بوسيط ECN أو سبريد منخفض — يفترض حد السبريد 25 نقطة وتسامح الانزلاق 3 نقاط تسعير تنافسي للذهب. نسبة المخاطرة الافتراضية 2% وحجم اللوت الثابت الاحتياطي 0.01 يجعلان المستشار في متناول الحسابات الصغيرة، لكن نسبة المخاطرة 1:2 ووقف 15 نقطة هيكلياً تعني ضرورة تحديد الحجم لتحمُّل تذبذبات ~15 نقطة؛ نوصي برصيد 500 دولار أو أكثر للحصول على مخاطرة مالية معقولة لكل صفقة. مرشح الوقت الافتراضي معطل (تداول 24/5 على الذهب)؛ فعِّل نافذة 08:00-17:00 بتوقيت الخادم إذا أردت حصر التداول في تداخل لندن + نيويورك فقط.
منطق الاستراتيجية
Pipsgrowth EX17008 Volatility — تحليل منطق الاستراتيجية (من كود .mq5)
العائلة: Volatility
الماجيك: 22217008
الإصدار: 2.00
الوصف:
Gold scalping strategy using Bollinger Bands volatility squeeze breakout detection. Enters when BB bandwidth contracts below threshold and price closes outside bands, with trailing stop along SMA, spread and time filters. Full 12-layer stack. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
المؤشرات:
- مؤشرات قياسية
الدوال الرئيسية:
SafePositionModify()RefreshIndicators()GetBreakoutSignal()OpenPosition()CalculatePositionSize()ManageOpenPositions()IsNewBar()GetPipSize()CheckFilters()CountPositions()
// Pipsgrowth EX17008 Volatility — Execution Flow (from source analysis)
// Family: Volatility
// Gold scalping strategy using Bollinger Bands volatility squeeze breakout detection. Enters when BB bandwidth contracts below threshold and price closes outside bands, with trailing stop along SMA, spread and time filters. Full 12-layer stack. 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اسحب الإكسبرت على رسم بياني يطابق الإطار الزمني الموصى به
- 7هيّء المعاملات وفقاً للجدول في هذه الصفحة
- 8فعّل Allow Algo Trading واضغط OK
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| UseMoneyManagement | true | Use Dynamic Risk % |
| RiskPercent | 2.0 | Risk Percent per Trade |
| FixedLotSize | 0.01 | Fixed Lot Size (if MM false) |
| BB_Period | 20 | Bollinger Bands Period |
| BB_Deviation | 2.0 | Bollinger Bands Deviation |
| SqueezeThreshold | 0.015 | Squeeze Threshold (bandwidth %) |
| StopLossPips | 15 | Stop Loss (pips) |
| TakeProfitPips | 30 | Take Profit (pips) |
| Slippage | 3 | Max Slippage (points) |
| InpMagicNumber | 22217008 | Magic Number (222 + Expert ID) |
| InpTradeComment | "Psgrowth.com Expert_17008" | Trade Comment |
| UseTrailingStop | true | Use Trailing Stop |
| TrailToSMA | true | Trail to SMA (else fixed) |
| TrailingStartPips | 10 | Trailing Start (pips) |
| TrailingStepPips | 5 | Trailing Step (pips) |
| UsePyramiding | false | Use Pyramiding |
| MaxOpenPositions | 2 | Max Open Positions |
| UseSpreadFilter | true | Use Spread Filter |
| MaxSpreadPips | 25.0 | Max Spread (pips) |
| UseTimeFilter | false | Use Time Filter |
| StartTime | "08:00" | Start Time (HH:MM) |
| EndTime | "17:00" | End Time (HH:MM) |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX17008 GoldScalper_BollingerBreakout_VolatilitySqueeze — BB squeeze breakout gold scalper, full 12-layer stack."
#include <Trade\Trade.mqh>
//+------------------------------------------------------------------+
//| Inputs |
//+------------------------------------------------------------------+
input group "=== Risk Management ==="
input bool UseMoneyManagement = true; // Use Dynamic Risk %
input double RiskPercent = 2.0; // Risk Percent per Trade
input double FixedLotSize = 0.01; // Fixed Lot Size (if MM false)
input group "=== Trade Settings ==="
input int BB_Period = 20; // Bollinger Bands Period
input double BB_Deviation = 2.0; // Bollinger Bands Deviation
input double SqueezeThreshold = 0.015; // Squeeze Threshold (bandwidth %)
input int StopLossPips = 15; // Stop Loss (pips)
input int TakeProfitPips = 30; // Take Profit (pips)
input int Slippage = 3; // Max Slippage (points)
input int InpMagicNumber = 22217008; // Magic Number (222 + Expert ID)
input string InpTradeComment = "Psgrowth.com Expert_17008"; // Trade Comment
input group "=== Trailing Stop ==="
input bool UseTrailingStop = true; // Use Trailing Stop
input bool TrailToSMA = true; // Trail to SMA (else fixed)
input int TrailingStartPips = 10; // Trailing Start (pips)
input int TrailingStepPips = 5; // Trailing Step (pips)
input group "=== Pyramiding ==="
input bool UsePyramiding = false; // Use Pyramiding
input int MaxOpenPositions = 2; // Max Open Positions
input group "=== Filters ==="
input bool UseSpreadFilter = true; // Use Spread Filter
input double MaxSpreadPips = 25.0; // Max Spread (pips)
input bool UseTimeFilter = false; // Use Time Filter
input string StartTime = "08:00"; // Start Time (HH:MM)
input string EndTime = "17:00"; // End Time (HH:MM)
// Global Variables
CTrade trade;
int handleBB;
int handleATR;
datetime lastBarTime = 0;
// Cached indicator values
double currentBB_Upper, currentBB_Lower, currentBB_Middle;
double prevBB_Upper, prevBB_Lower, prevBB_Middle;
double currentATR;
double lastBarClose, lastBarOpen, lastBarHigh, lastBarLow;
//+------------------------------------------------------------------+
//| Helper function for broker filling mode |
//+------------------------------------------------------------------+
ENUM_ORDER_TYPE_FILLING GetAllowedFilling()
{الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على MT5 — استخدم وسيطاً موثوقاً بتنفيذ سريع وسبريد منخفض
إكسبرتات مشابهة
عرض جميع الإكسبرتاتإكسبرتات أخرى بنفس استراتيجية أخرى
Pipsgrowth EX01007 Adaptive — إكسبرت أدفايزر تكييفي
Pipsgrowth EX01007 Adaptive — Adaptive signal scorer EA combining EMA crossover, RSI, Heiken Ashi, Bollinger Bands, ATR and volume spike detection int. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX01019 Adaptive — إكسبرت أدفايزر تكييفي
Pipsgrowth EX01019 Adaptive — Self-adaptive market regime EA that auto-detects trending, ranging, volatile, quiet and breakout conditions. Switches be. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX15029 SMC-OrderBlock — إكسبرت أدفايزر إكسبرت أدفايزر
Pipsgrowth EX15029 SMC-OrderBlock — Smart Money Concepts breakout EA — detects order blocks, CHOCH and liquidity sweeps using EMA cross + structure break, A. إكسبرت أدفايزر MT5 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.