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

Pipsgrowth EX16009 Trend — إكسبرت أدفايزر متابعة اتجاه

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

Pipsgrowth EX16009 Trend — Gold Scalping EA using Volume Weighted MA (VWMA) trend analysis. Trades VWMA crossover with standard SMA, entering on vo. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

EX16009 هو مستشار آلي يعمل على زوج XAUUSD على إطار M15 ضمن عائلة تتبع الاتجاه، وتكمن ميزته الأساسية في المتوسط ​​المتحرك المرجح بالحجم (VWMA). بدلًا من الاعتماد على المتوسط ​​المتحرك التقليدي المعتمد على سعر الإغلاق فقط، يعيد المؤشر حساب المتوسط ​​المرجح بالحجم داخل الكود: لكل شمعة داخل نافذة طولها 20 شمعة، يسحب iClose وiVolume، ويضربهما ببعضهما البعض، ثم يجمع حاصل ضربات الإغلاق في الحجم قبل القسمة على الحجم الكلي. النتيجة هي متوسط ​​متحرك تتأثر قيمته بالشموع ذات الحجم الكبير بقدر أكبر من الشموع الهادئة؛ لذلك عندما يبتعد VWMA عن المتوسط ​​البسيط SMA(20)، يفسر المستشار هذا كدليل على أن الحجم يدعم الحركة.

يعمل منطق اتخاذ القرار عند افتتاح شمعة M15 جديدة. بوابة IsNewBar() في OnTick لا تنشط إلا مرة واحدة عند إغلاق الشمعة، فلا يعيد المستشار التقييم داخل الشمعة. بعدها تستدعي RefreshIndicators() التي تجلب قيم VWMA الحالية والسابقة يدويًا، ونسخ مخزني SMA(20) وATR(14). الروح الحقيقية للإشارة توجد داخل GetVWMASignal(). إشارة الشراء تتطلب تحقق ثلاثة شروط في وقت واحد: أن تكون قيمة VWMA السابقة عند SMA السابقة أو أدنى منها، وأن يكون VWMA الحالي قد اخترق SMA الحالي صعودًا، وأن يكون سعر الإغلاق فوق VWMA الحالي. إشارة البيع هي النسخة المعكوسة. اجتماع هذه الشروط الثلاثة (الاختراق + الاتجاه + موقع السعر) هو ما يجعل الإشارة مرجحة بالحجم لا مجرد إشارة اتجاه سعرية، لأن الاختراق الناتج عن شموع هادئة ممكن رياضيًا لكنه نادر عمليًا، إذ يتوجب على عامل الحجم في البسط أن يعمل بقوة فعلية لرفع VWMA بعيدًا عن SMA المستقر.

يتم فتح الصفقة مع سقف صارم لصفقة واحدة لكل رمز. CountPositions() تمسح PositionsTotal() بحثًا عن صفقات مطابقة للرمز وللرقم السحري 22216009؛ إن وجدت واحدة أو أكثر، تعود OnTick فورًا ولا يتم إرسال أي أمر جديد. حين تنطلق إشارة فعلًا، تتولى OpenPosition() التنفيذ. يُربط وقف الخسارة بمؤشر ATR، لا بعدد نقاط ثابت: يأخذ max(currentATR * 1.5, StopLossPips * pipSize, minDist * 1.5)، أي أن المستشار يحترم دائمًا 15 نقطة على الأقل (مدخل StopLossPips الافتراضي) و1.5× مسافة الستوب لدى الوسيط على الأقل، لكنه في شموع التذبذب العالي يوسّع الوقف إلى 1.5× قراءة ATR(14). أما جني الأرباح فيُحسب بـ max(slDist * 2, minDist * 1.5)، أي بنسبة مخاطرة إلى عائد لا تقل عن 1:2 نسبة إلى وقف الخسارة الفعلي، ولا تقل عن 1.5× مسافة الستوب لدى الوسيط. يُرفق كل من SL وTP من جهة الخادم لحظة تنفيذ الأمر، مما يضمن بقاء القوسين حتى في حال انقطاع المنصة.

حجم اللوت يُحسب بالنسبة المئوية. تأخذ CalculatePositionSize() افتراضيًا 2% من رصيد الحساب (RiskPercent = 2.0، قابلة للتبديل عبر UseMoneyManagement)، وتقسمها على نقاط SL مضروبة في قيمة النقطة لكل لوت على XAUUSD، وتُقرّب الناتج إلى SYMBOL_VOLUME_STEP لدى الوسيط، ثم تثبّته ضمن حدود الرمز الدنيا والقصوى. إن أوقفت إدارة المال، تعود إلى 0.01 لوت ثابت. المعطيات المؤثرة هي قراءة ATR(14) بالنقاط وقيمة التيك لـ XAUUSD، وكلاهما يُسحب في لحظة الدخول دون تخزين مؤقت. على رصيد 1,000 دولار ووقف 15 نقطة وقيمة تيكنج عادية قدرها 1.00 دولار للنقطة لكل 0.01 لوت على XAUUSD، يخرج حجم لوت يقارب 0.13 عند مخاطرة 2%؛ أما مع وقف 25 نقطة قائم على ATR على نفس الرصيد، فينخفض الحجم إلى نحو 0.08.

الجانب المتعلق بالمخاطر ضيق بخلاف ذلك. المرشح الوحيد قبل الصفقة هو CheckFilters()، الذي يقارن السبريد الحالي بالنقاط مع MaxSpreadPips = 25.0 (المدخل مفعّل افتراضيًا)، ويرفض الشمعة إن كان السبريد أوسع. لا يوجد مرشح وقت/جلسة، ولا مرشح يوم في الأسبوع، ولا مرشح أخبار، ولا وقف حقوق ملكية، ولا سقف تراجع، ولا قاطع خسارة يومية، ولا حد لعدد الصفقات اليومية. لا توجد إضافة مراكز، ولا شبكة، ولا مارتينجال، ولا متوسطات — سقف الموضع الواحد لكل رمز هو الحد القاسي. كذلك لا توجد إدارة بعد الدخول: لا trailing stop، ولا نقل إلى نقطة التعادل، ولا إغلاق جزئي، ولا خروج على أساس الزمن، ولا إغلاق بسبب إشارة معاكسة. تُحفظ الصفقة حتى يصل السعر إلى SL أو TP من جهة الخادم الذي أرفقته OpenPosition()، وهذا هو مسار الخروج الكامل.

عائلة دوال إعادة المحاولة الثلاث (TryClose_EX16009، TryClosePartial_EX16009، TryModify_EX16009) معرّفة في الكود وتتعامل مع REQUOTE وTIMEOUT وPRICE_OFF وPRICE_CHANGED في استدعاءات CTrade القياسية. تُربط TryModify_EX16009 عبر SafePositionModify() التي تطبيع SL/TP، وتتحقق منهما مقابل مستوى الستوب لدى الوسيط، وترفض أي وقف في الجهة الخاطئة، ولا تنفذ التعديل فعلًا إن لم يتغير شيء. الدالتان الأخريان — الإغلاق والإغلاق الجزئي — معرّفتان لكن لا تُستدعيان من OnTick، أي أن المستشار لا يغلق أي صفقة استباقيًا لأي سبب؛ فالصفقة الخاسرة لا تخرج إلا عند SL من جهة الخادم. يُصدر OnDeinit كلا مقبضي المؤشرات تنظيفًا، ويعيد OnInit قيمة INIT_FAILED إن كان أي مقبض غير صالح، فيرفض المستشار التشغيل على feed غير صالح بدلًا من التداول الخاطئ بصمت.

الوصف في ترويسة الملف يدّعي 12 طبقة (REGIME / SIGNAL / ENTRY / CONFIRM / NO-TRADE / CAPITAL CAP / RISK / SIZING / MANAGE / EXIT / SCALING / OnTester)، لكن الكود يفعّل نحو خمس طبقات فعليًا: الإشارة عبر تقاطع VWMA، والدخول عند شمعة جديدة، والمخاطرة عبر SL المعتمد على ATR، والت sizing عبر قاعدة 2%، والخروج عبر TP/SL. لا يوجد مصنف نظام، ولا مرجح تأكيد بخلاف فحص موقع الإغلاق، ولا سقف رأسمال، ولا طبقة إدارة، ولا توسيع، ولا دالة OnTester في الكود. هذا التناقض بين الوصف والكود متّسق عبر عائلة EX16 — الطبقات المسمّاة طموحية، أما الطبقات المفعّلة فهي ما يفعله المستشار فعلًا.

عمليًا في الإعداد الحي أو الباك تيست، النتيجة مباشرة. تُرفقه على مخطط XAUUSD M15 واحد، وتترك الإعدادات الافتراضية كما هي، وسيبحث المستشار عن تقاطع مرجح بالحجم واحد لكل شمعة 15 دقيقة. توقّع صفقة واحدة كل بضع ساعات في الجلسات النشطة، مع تخطّي شموع كثيرة، وعمليًا لا توجد أكثر من صفقة مفتوحة واحدة في الوقت نفسه. يعني إعداد 1:2 RR الافتراضي وSL المعتمد على ATR أن المستشار يتسامح مع التذبذب، لكنه لا يسمح للصفقة الرابحة بالاستمرار إلى ما لا نهاية — ما إن يصل السعر إلى ضعف مسافة SL، يُغلق الخادم الصفقة. إن أردت نقلًا إلى نقطة التعادل أو trailing أو إغلاقًا جزئيًا، فهذه تحتاج برمجة: الملف بصيغته الحالية لا يوفرها.

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

يُعيد المؤشر بناء المتوسط ​​المرجح بالحجم داخل CalculateVWMA() بالمرور على 20 شمعة M15، وضرب كل iClose في iVolume الخاص به، ثم قسمة مجموع حواصل الضرب على الحجم الكلي — فينحني المنحنى نحو الشموع ذات الحجم الكبير. عند شمعة جديدة تلتقط RefreshIndicators() قيمة VWMA الحالية والسابقة، ومقبض SMA(20) ومقبض ATR(14)، ثم تتحقق GetVWMASignal() من تقاطع الشروط الثلاثة. بعدها ترسل OpenPosition() أمرًا فوريًا مع SL مرتبط بـ ATR وTP بنسبة 1:2 مُرفقَين من جهة الخادم، ويُحسب حجم اللوت من 2% من الرصيد مقسومًا على نقاط SL مضروبة في قيمة النقطة لكل لوت. لا توجد أي إدارة بعد الدخول: القوسان يقومان بكل العمل، ودوال إعادة المحاولة الثلاث تتعامل مع REQUOTE/TIMEOUT/PRICE_OFF/PRICE_CHANGED في استدعاءات التعديل القليلة التي قد تُجريها SafePositionModify(). يحجب مرشح السبريد فوق 25 نقطة الشمعة، ويحجب سقف الموضع الواحد إعادة الدخول ما دامت صفقة مفتوحة.

إشارة الدخول

تنطلق إشارة الشراء عند إغلاق شمعة M15 عندما يعبر المتوسط ​​المرجح بالحجم المحسوب يدويًا على 20 شمعة فوق المتوسط ​​البسيط SMA(20)، ويكون إغلاق الشمعة فوق VWMA الحالي. إشارة البيع هي النسخة المعكوسة: VWMA يعبر تحت SMA مع إغلاق تحت VWMA الحالي. قاعدة الشروط الثلاثة (الاختراق + الاتجاه + موقع السعر) تعني أن التقاطعات المدعومة بالحجم والمتوافقة مع السعر فقط هي التي تُحتسب. يقيّم المؤشر مرة واحدة لكل شمعة عبر بوابة IsNewBar()، ولا يفتح صفقة إلا إن اجتاز فحص CountPositions() الذي يسمح بموضع واحد فقط لكل رمز.

إشارة الخروج

الخروج من جهة الخادم فقط: تبقى الصفقة حتى يفعّل الوسيط وقف الخسارة المُرفق عند الدخول (1.5× ATR(14) أو 15 نقطة كحد أدنى) أو جني الأرباح عند ضعف تلك المسافة. لا يوجد trailing stop، ولا نقل إلى نقطة التعادل، ولا إغلاق جزئي، ولا خروج على أساس الزمن، ولا إغلاق بسبب إشارة معاكسة في الكود. دوال إعادة المحاولة TryClose_EX16009 وTryClosePartial_EX16009 معرّفة للمرونة، لكنها لا تُستدعى من OnTick، فلا يُغلق المستشار أي صفقة استباقيًا.

وقف الخسارة

يُربط وقف الخسارة بمؤشر ATR(14) عند 1.5× قراءة المؤشر بالنقاط، لكن لا يقل أبدًا عن مدخل StopLossPips = 15 ولا عن 1.5× مسافة SYMBOL_TRADE_STOPS_LEVEL لدى الوسيط. يُرفق القوسان عند تنفيذ الأمر عبر trade.Buy / trade.Sell بحيث يُرسل كل من SL وTP في نفس الطلب، فيكون وقف الحماية من جهة الخادم منذ الشمعة الأولى. لا يوجد trailing داخل الصفقة، ولا نقل إلى نقطة التعادل، ولا توسيع — يظل SL مثبتًا عند الدخول.

جني الأرباح

يُحسب جني الأرباح عند ضعف مسافة وقف الخسارة الفعلية (نسبة مخاطرة إلى عائد 1:2)، مع حد أدنى من جهة الوسيط قدره 1.5× SYMBOL_TRADE_STOPS_LEVEL. ولأن SL مرتبط بـ ATR، يتبعه جني الأرباح في تقلّبه: على شمعة هادئة بوقف 15 نقطة يكون TP عند 30 نقطة، وعلى شمعة متقلبة يتسع فيها SL إلى 25 نقطة يتسع TP إلى 50 نقطة. يُرسل TP إلى الخادم عند التنفيذ ولا يُعدَّل لاحقًا.

الأنسب لـ

مصمم لزوج XAUUSD على إطار M15 مع حد أدنى موصى به للرصيد قدره 100 دولار (يستخدم المؤشر 2% مخاطرة لكل صفقة، فيُنتج رصيد 100 دولار مع SL الافتراضي 15 نقطة نحو 0.013 لوت — مراكز صغيرة مناسبة لتحديات الشركات الممولة أو حسابات التجزئة الصغيرة). يكون التقاطع المرجح بالحجم أكثر موثوقية خلال جلستي لندن ونيويورك حين يبلغ نشاط التيك على XAUUSD ذروته؛ أما شموع الجلسة الآسيوية الهادئة فتميل إلى مزيد من الانعكاسات الكاذبة لأن VWMA يحصل على معلومات حجم أقل لترجيحها. شغّله على وسيط ECN أو RAW spread للذهب بسبريد منخفض — مرشح السبريد 25 نقطة لا يُفعَّل إلا عند توسّع شديد، لكن السبريدات الضيقة ترفع نسبة الشموع القابلة للتنفيذ.

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

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

العائلة: Trend الماجيك: 22216009 الإصدار: 2.00

الوصف: Gold Scalping EA using Volume Weighted MA (VWMA) trend analysis. Trades VWMA crossover with standard SMA, entering on volume-weighted trend confirmation with ATR-based stops. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • SafePositionModify()
  • CalculateVWMA()
  • RefreshIndicators()
  • GetVWMASignal()
  • OpenPosition()
  • CalculatePositionSize()
  • IsNewBar()
  • GetPipSize()
  • CheckFilters()
  • CountPositions()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX16009 Trend — Execution Flow (from source analysis)
// Family: Trend
// Gold Scalping EA using Volume Weighted MA (VWMA) trend analysis. Trades VWMA crossover with standard SMA, entering on volume-weighted trend confirmation with ATR-based stops. 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
الأطر الزمنية المُحسّنة:
M15

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

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

المعاملالافتراضيالوصف
SMA_Period20Standard MA for comparison
InpMagicNumber22216009Magic Number (222 + Expert ID)
InpTradeComment"Psgrowth.com Expert_16009"Trade Comment
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX16009.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX16009 GoldScalper VWMA VolumeTrend — VWMA trend scalper, full 12-layer stack."

#include <Trade\Trade.mqh>

input group "=== Risk Management ==="
input bool   UseMoneyManagement = true;
input double RiskPercent        = 2.0;
input double FixedLotSize       = 0.01;

input group "=== VWMA Settings ==="
input int    VWMA_Period        = 20;
input int    SMA_Period         = 20;         // Standard MA for comparison

input group "=== Trade Settings ==="
input int    StopLossPips       = 15;
input int    Slippage           = 3;
input int    InpMagicNumber     = 22216009;                     // Magic Number (222 + Expert ID)
input string InpTradeComment    = "Psgrowth.com Expert_16009"; // Trade Comment

input group "=== Filters ==="
input bool   UseSpreadFilter    = true;
input double MaxSpreadPips      = 25.0;

CTrade trade;
int handleSMA, handleATR;
datetime lastBarTime = 0;
double currentVWMA, prevVWMA;
double currentSMA, prevSMA;
double currentATR;

ENUM_ORDER_TYPE_FILLING GetAllowedFilling()
{
   int filling_mode = (int)SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE);
   if((filling_mode & SYMBOL_FILLING_FOK) == SYMBOL_FILLING_FOK) return ORDER_FILLING_FOK;
   else if((filling_mode & SYMBOL_FILLING_IOC) == SYMBOL_FILLING_IOC) return ORDER_FILLING_IOC;
   else return ORDER_FILLING_RETURN;
}


//+------------------------------------------------------------------+
//| Safe Position Modify - validates stops before modifying          |
//+------------------------------------------------------------------+
bool SafePositionModify(ulong ticket, double newSL, double newTP)
{
   // Select the position
   if(!PositionSelectByTicket(ticket))
   {
      return false; // Position doesn't exist, no error needed
   }
   
   // Get current price
   long type = PositionGetInteger(POSITION_TYPE);
   double price = (type == POSITION_TYPE_BUY) ? 
                  SymbolInfoDouble(_Symbol, SYMBOL_BID) : 
                  SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   

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

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

الوسوم:ex16009trendpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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