P
PipsGrowth
أخرىمفتوح المصدر - مجاني

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

ملف التحسين

الوسطاء المُحسّنون:
ExnessIC Markets
الرموز المُحسّنة:
XAUUSD
الأطر الزمنية المُحسّنة:
M15M5

كيفية تثبيت الإكسبرت على 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اسحب الإكسبرت على رسم بياني يطابق الإطار الزمني الموصى به
  7. 7هيّء المعاملات وفقاً للجدول في هذه الصفحة
  8. 8فعّل Allow Algo Trading واضغط OK

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

المعاملالافتراضيالوصف
UseMoneyManagementtrueUse Dynamic Risk %
RiskPercent2.0Risk Percent per Trade
FixedLotSize0.01Fixed Lot Size (if MM false)
BB_Period20Bollinger Bands Period
BB_Deviation2.0Bollinger Bands Deviation
SqueezeThreshold0.015Squeeze Threshold (bandwidth %)
StopLossPips15Stop Loss (pips)
TakeProfitPips30Take Profit (pips)
Slippage3Max Slippage (points)
InpMagicNumber22217008Magic Number (222 + Expert ID)
InpTradeComment"Psgrowth.com Expert_17008"Trade Comment
UseTrailingStoptrueUse Trailing Stop
TrailToSMAtrueTrail to SMA (else fixed)
TrailingStartPips10Trailing Start (pips)
TrailingStepPips5Trailing Step (pips)
UsePyramidingfalseUse Pyramiding
MaxOpenPositions2Max Open Positions
UseSpreadFiltertrueUse Spread Filter
MaxSpreadPips25.0Max Spread (pips)
UseTimeFilterfalseUse Time Filter
StartTime"08:00"Start Time (HH:MM)
EndTime"17:00"End Time (HH:MM)
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX17008.mq5
#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()
{

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

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

الوسوم:ex17008volatilitypipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

اسم الملفPipsgrowth_com_EX17008.mq5
حجم الملف19.5 KB
الإصدارv2.00
PlatformMetaTrader 5
نوع الملف.mq5 Source
الاستراتيجيةأخرى
المخاطرةمخاطرة متوسطة
الأطر الزمنية
M15M5
أزواج العملات
XAUUSD
الحد الأدنى للإيداع$100