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

Pipsgrowth EX18098 TrendFollow — إكسبرت أدفايزر إكسبرت أدفايزر

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

Pipsgrowth EX18098 TrendFollow — Darvas Box breakout EA that identifies price consolidation boxes, then enters on breakout above/below the box with volum. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

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

في كل تكت، يمسح الكود BoxPeriod = 165 شمعة على الإطار H1 ويستخرج أعلى قمة وأدنى قاع في تلك النافذة. إذا كان النطاق الناتج أصغر من أو يساوي BoxDeviation = 25,140 نقطة، فإن المستشار يثبّت المستويين كسقف وقاع للصندوق، ويضع boxFormed = true، ويرسم المستويين على الرسم البياني عبر الدالة DrawDarvasBox() كخطين أفقيين لونهما BoxColor (القيمة الافتراضية الأزرق). إذا كان النطاق عريضاً — أي أن السوق ما زال في اتجاه صاعد أو هابط لا في تماسك — فإن المستشار يحذف الصندوق وينتظر. هذا هو جوهر الاستراتيجية: لا شيء أثناء التوسع، قرار حاسم خلال المرحلة الهادئة التي تليه.

بمجرد أن يُكوَّن الصندوق، يصبح اختبار الاختراق صارماً بشرطين. يجب أن يكون سعر الطلب أعلى من boxHigh (للشراء) أو أدنى من boxLow (للبيع)، وأن يتجاوز حجم التداول في الشمعة الحالية VolumeThreshold = 938. أي شرط منهما وحده لا يكفي. فلتر الحجم موجود لاستبعاد الاختراقات الكاذبة منخفضة القوة التي تحدث في بداية الجلسات منخفضة السيولة — بدونه، سيتداول نظام دارفاس عند كل ظل سعر يخرج من النطاق.

قبل إرسال الأمر فعلياً، تمر الدالة PlaceOrder() بالصفقة عبر فلترين إضافيين. الأول IsTrendFavorable(): تسحب قيمتين من المتوسط المتحرك للاتجاه — وهو EMA بفترة 125 مطبّق على السعر الموزون (MA_Price = 7 = PRICE_WEIGHTED) على TrendTimeframe قابل للتكوين (القيمة الافتراضية 5 ترجع PERIOD_H1 عبر الدالة MapTimeframeInt) — ثم تحسب trendStrength كمسافة مطلقة بالنقاط بين سعر الطلب الحالي والمتوسط. لا يُسمح بالصفقة إلا إذا كان السعر على الجانب الصحيح من المتوسط AND تجاوزت المسافة TrendThreshold = 4.94 نقطة. أي شيء أقل من ~5 نقاط انفصال يعني أن السوق يلتصق بالمتوسط والاختراق بلا اتجاه خلفه. الفلتر الثاني CheckVolumeConditions(): يبني متوسطاً متحركاً لآخر VolumeMA_Period = 110 قيمة حجم، ويشترط أن يكون حجم الشمعة الحالية على الأقل VolumeThresholdMultiplier = 1.5x لهذا المتوسط. لذا يجب أن يكون الاختراق (أ) ارتفاعاً حاداً مقارنة بالمتوسط الأخير، و(ب) فوق الحد الأدنى المطلق 938. فلترا الحجم مكدسان عمداً: 938 هو الحد الأدنى للجسم، و1.5x المتوسط هو الحد الأدنى للقوة النسبية.

إذا مرت جميع الشروط، ترسل PlaceOrder() أمر سوق بحجم لوت ثابت 0.01 — حجم اللوت مبرمج داخل الكود، ولا يوجد تحديد حجم بنسبة مئوية من المخاطرة أو مرتبط بالرصيد في هذا البناء. تفرض ValidateStopLevels() أن تكون مسافات وقف الخسارة وجني الأرباح على الأقل max(brokerStopsLevel, configuredStopLoss) على كل جانب، وهو النمط القياسي للتعامل مع حسابات ECN ذات حدود الوقف غير الصفرية. تُرسل أوامر trade.Buy / trade.Sell عبر كائن CTrade مع ORDER_FILLING_IOC، و10 نقاط انزلاق سعري، ورقم سحري 22218098 مطبوع على كل تذكرة.

يعمل المستشار بنموذج مركز واحد. كل من فرعي الشراء والبيع محكومان بـ PositionsTotal() == 0، لذا يتم تجاهل الإشارة الجديدة إذا كان هناك أي مركز مفتوح بالفعل — بما في ذلك المراكز من استراتيجية مختلفة أو رقم سحري مختلف على نفس الحساب. لا يوجد تكديس مراكز، لا يوجد متوسّط سعر، لا يوجد مارتينجال. مستطيل دارفاس على الرسم البياني بصري بحت: يُرسم في كل تكت من لحظة تكوّن الصندوق إلى الشمعة التالية غير الصندوق، ويُحذف عند إزالة المستشار.

الجانب الخاص بالخروج يُدار بالكامل بواسطة الوسيط عبر أوامر وقف الخسارة وجني الأرباح المرسلة عند الدخول. المستشار نفسه لا ينفّذ وقف خسارة متحركاً، أو رatchet لنقطة التعادل، أو خروجاً مبنياً على الوقت. تم تعريف ثلاث مساعدات إعادة المحاولة — TryClose_EX18098 (3 محاولات بفاصل 200 مللي ثانية)، TryClosePartial_EX18098 (3 محاولات بفاصل 200 مللي ثانية)، وTryModify_EX18098 (3 محاولات بفاصل 100 مللي ثانية) — وهي غير مستخدمة في هذا البناء لأن أي مسار في OnTick لا يستدعيها. إنها موجودة كهيكل لمن يريد إضافة منطق إدارة خاص به.

ملاحظة عملية حول التكوين. المدخلات الافتراضية (BoxPeriod 165، BoxDeviation 25,140، VolumeThreshold 938، SL 1,665، TP 3,685) كانت مضبوطة في الأصل على BTCUSD على نفس مجموعة المنطق — حتى تعليقات المصدر الخاصة بـ SL وTP تقول "increased for BTCUSD". على XAUUSD، تمثّل نفس مسافات النقاط جزءاً مختلفاً من سعر الأداة، لذا فإن الاختبارات الخلفية على الذهب لن تنتج نفس نسبة المخاطرة/المكافأة التي تنتجها على عقد بيتكوين بسعر 100,000 دولار. يجب على أي شخص يشغّل هذا المستشار على XAUUSD إعادة ضبط SL/TP المبني على النقاط أولاً، ومراعاة تحجيم BoxDeviation إلى متوسط النطاق اليومي للزوج المختار.

يحتوي المصدر على أثر القالب التلقائي المعتاد: أربع كتل MapTimeframeInt متطابقة وأربع كتل MapAppliedPriceInt متطابقة متناثرة بين مجموعات المدخلات. يتعامل المصرّف معها، ووقت التشغيل غير متأثر، لكن إذا قرأت الكود من أعلى لأسفل فهو تذكير بأن هذا البناء تم توليده من قالب — منطق الاستراتيجية داخله هو المحتوى الحقيقي. لا توجد دالة لياقة OnTester، ولا حارس لمنحنى الأسهم، ولا فلتر أخبار، ولا فلتر جلسات. خارج الصندوق، هذا هيكل عالي المستوى لاختراق صندوق H1 مع بوابتي تأكيد وفلتر اتجاه. كل شيء آخر علك.

خصائص الاختبار الخلفي التي يجب توقعها: تكرار صفقات منخفض (إشارة واحدة لكل مرحلة تماسك، وأحياناً تفصل بينها أسابيع على H1 الذهب)، ومعدل فوز ضعيف بمعزل عنه لكن يُعوَّض بـ TP يبلغ نحو 2.2x مسافة SL، وحساسية لإعداد VolumeThresholdMultiplier أعلى بكثير مما يوحي اسم المدخل — اخفضه إلى 1.1 وستبدأ الاستراتيجية في الإطلاق على الضوضاء؛ ارفعه إلى 2.0 وقد تمر أشهر بدون دخول واحد. اعتبر القيم الافتراضية نقطة بداية، وليس معايرة منتهية.

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

في كل تكت، تمسح CalculateDarvasBox() آخر 165 شمعة H1، وتلتقط أعلى قمة وأدنى قاع، ولا تعتبر الصندوق متكوناً إلا إذا كان النطاق داخل 25,140 نقطة — وإلا تبقى في وضع الانتظار. عندما يكون الصندوق نشطاً، يقارن OnTick سعر الطلب الحالي بـ boxHigh وboxLow، ويجب أن يتجاوز الاختراق أيضاً VolumeThreshold البالغ 938 تكت قبل استدعاء PlaceOrder() أصلاً. ثم تُجري PlaceOrder() بوابتي تأكيد إضافيتين: تتحقق IsTrendFavorable() من أن سعر الطلب على الجانب الصحيح من المتوسط المتحرك الأسي بفترة 125 على السعر الموزون مع فصل لا يقل عن 4.94 نقطة، وتطلب CheckVolumeConditions() أن يكون حجم الشمعة الحالية على الأقل 1.5x متوسط الحجم لـ 110 شمعة. فقط عندما تتطابق جميع الشروط الخمسة، يُرسل أمر بحجم لوت ثابت 0.01 عبر كائن CTrade معبّأ بـ IOC، و10 نقاط انزلاق سعري، ورقم سحري 22218098. تمنع بوابة المركز الواحد (PositionsTotal() == 0) دخولاً ثانياً أثناء وجود مركز مفتوح، وأوامر وقف الخسارة وجني الأرباح هي المسار الوحيد للخروج لأنه لا يوجد منطق وقف متحرك أو نقطة تعادل أو منطق مبني على الوقت في هذا البناء.

إشارة الدخول

يتطلب الدخول للشراء ثلاثة شروط متزامنة: أن يغلق السعر فوق سقف صندوق دارفاس (boxHigh، المتكون من نطاق H1 يمتد 165 شمعة داخل 25,140 نقطة)، وأن يتجاوز حجم التداول في الشمعة الحالية 938، وأن يكون السعر على بعد 4.94 نقطة على الأقل فوق المتوسط المتحرك الأسي بفترة 125 المطبق على السعر الموزون على الإطار الزمني للاتجاه، وأن يكون الحجم الحالي على الأقل 1.5x متوسط الحجم لـ 110 شمعة. الدخول للبيع يعكس نفس الاختبار تحت قاع الصندوق. كلا الفرعين محكوم بـ PositionsTotal() == 0، لذا يمكن أن يكون هناك مركز واحد فقط مفتوحاً في كل مرة.

إشارة الخروج

لا ينفّذ المستشار مسار خروج نشطاً. بمجرد فتح المركز، فإن الطريقة الوحيدة لإغلاقه هي أن يصل سعر الوسيط إلى وقف الخسارة أو جني الأرباح المُرفق بالأمر عند الإرسال. لا يوجد وقف خسارة متحرك، ولا آلية رatchet لنقطة التعادل، ولا خروج مبني على الوقت، ومساعدات إعادة المحاولة الثلاث (TryClose_EX18098، TryClosePartial_EX18098، TryModify_EX18098) غير مستخدمة لأن OnTick لا يستدعيها أبداً. عملياً، تبقى الصفقة حتى يتحرك السعر 1,665 نقطة ضد الدخول أو 3,685 نقطة لصالحه، أيهما يحدث أولاً.

وقف الخسارة

يُضبط وقف الخسارة على بعد 1,665 نقطة تحت الدخول في الشراء، و1,665 نقطة فوق الدخول في البيع — يُكوَّن عبر مدخل StopLoss. تفرض ValidateStopLevels() أن تكون هذه المسافة على الأقل الحد الأدنى لوقف الوسيط عن طريق إطالة وقف الخسارة إذا كانت القيمة المكوّنة أضيق من عتبة الوسيط. القيمة الافتراضية 1,665 نقطة هي القيمة المضبوطة لـ BTCUSD من تعليقات المصدر، لذا سيحتاج مستخدمو XAUUSD على الأرجح إلى إعادة تحجيمها.

جني الأرباح

يُضبط جني الأرباح على بعد 3,685 نقطة لصالح الصفقة — يُكوَّن عبر مدخل TakeProfit، ومرة أخرى يُعدَّل لاحترام الحد الأدنى لوقف الوسيط. مع وقف خسارة 1,665 نقطة وجني أرباح 3,685 نقطة، تكون نسبة المخاطرة/المكافأة الافتراضية نحو 1:2.21، والهدف هو المسار الوحيد لخروج الصفقة الرابحة في تصميم هذا المستشار.

الأنسب لـ

الحد الأدنى الموصى به للرصيد هو 100 دولار (مخاطرة متوسطة)، والمستشار مميّز لـ XAUUSD على الأطر الزمنية H1-H2 — نافذة التماسك 165 شمعة على H1 تجعل أي شيء تحت H1 ضوضائياً وأي شيء فوق H4 نادراً جداً. القيم الافتراضية لـ SL/TP البالغة 1,665 / 3,685 نقطة مضبوطة لـ BTCUSD، لذا يجب على متداولي XAUUSD إعادة تحجيم قيم النقاط إلى ملف تذبذب الذهب قبل التشغيل الفعلي. لأن بوابة الدخول تتضمن ارتفاعاً حاداً نسبياً في الحجم (1.5x متوسط 110 شمعة) وحد أدنى مطلق للحجم (938)، يُفضَّل بشدة وسيط يقدم بيانات حجم تكت نظيفة على الذهب — معظم وسطاء ECN / RAW. يقترن بشكل أفضل مع جلستي لندن ونيويورك، حيث من المرجح أن يتشكل هيكل التماسك ثم الاختراق النظيف الذي يتداول عليه هذا المستشار.

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

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

العائلة: TrendFollow الماجيك: 22218098 الإصدار: 2.00

الوصف: Darvas Box breakout EA that identifies price consolidation boxes, then enters on breakout above/below the box with volume confirmation and trend filter via MA. Stop loss and take profit are set based on points with broker stop-level validation. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • DrawDarvasBox()
  • CalculateDarvasBox()
  • ValidateStopLevels()
  • IsTrendFavorable()
  • CheckVolumeConditions()
  • PlaceOrder()
  • GetLastErrorDescription()
  • TryClose_EX18098()
  • TryClosePartial_EX18098()
  • TryModify_EX18098()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX18098 TrendFollow — Execution Flow (from source analysis)
// Family: TrendFollow
// Darvas Box breakout EA that identifies price consolidation boxes, then enters on breakout above/below the box with volume confirmation and trend filter via MA. Stop loss and take profit are set based on points with broker stop-level validation. 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
الأطر الزمنية المُحسّنة:
H1H2

كيفية تثبيت الإكسبرت على 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

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

المعاملالافتراضيالوصف
BoxPeriod165Period for Darvas Box calculation
BoxDeviation25140Box deviation in points
VolumeThreshold938Minimum volume for confirmation
StopLoss1665Stop loss in points (increased for BTCUSD)
TakeProfit3685Take profit in points (increased for BTCUSD)
EnableLoggingfalseEnable detailed logging
BoxColorclrBlueColor for Darvas Box
BoxWidth1Width of box lines
TrendTimeframe5Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Timeframe for trend analysis
MA_Period125Moving Average period for trend
MA_MethodMODE_EMAMoving Average method
MA_Price7Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Price type for MA
TrendThreshold4.94Trend strength threshold
VolumeMA_Period110Period for Volume MA
VolumeThresholdMultiplier1.5Volume spike threshold
InpMagicNumber22218098Magic Number
InpTradeComment"Psgrowth.com Expert_18098"Trade Comment
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX18098.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX18098 DarvasBox — Darvas box breakout with volume and trend confirmation, full 12-layer stack."

#include <Trade\Trade.mqh>
#include <Indicators\Trend.mqh>
#include <Indicators\Volumes.mqh>

// Input parameters
ENUM_TIMEFRAMES MapTimeframeInt(int tf)
{
   switch(tf)
   {
      case 1: return PERIOD_M1;
      case 2: return PERIOD_M5;
      case 3: return PERIOD_M15;
      case 4: return PERIOD_M30;
      case 5: return PERIOD_H1;
      case 6: return PERIOD_H4;
      case 7: return PERIOD_D1;
      default: return PERIOD_H1;
   }
}
ENUM_APPLIED_PRICE MapAppliedPriceInt(int ap)
{
   switch(ap)
   {
      case 1: return PRICE_CLOSE;
      case 2: return PRICE_OPEN;
      case 3: return PRICE_HIGH;
      case 4: return PRICE_LOW;
      case 5: return PRICE_MEDIAN;
      case 6: return PRICE_TYPICAL;
      case 7: return PRICE_WEIGHTED;
      default: return PRICE_CLOSE;
   }
}
ENUM_TIMEFRAMES g_TrendTimeframe = PERIOD_H1;
ENUM_APPLIED_PRICE g_MA_Price = PRICE_CLOSE;
input group "=== Strategy ==="
input int    BoxPeriod = 165;        // Period for Darvas Box calculation
input double BoxDeviation = 25140;    // Box deviation in points
input int    VolumeThreshold = 938; // Minimum volume for confirmation
input double StopLoss = 1665;        // Stop loss in points (increased for BTCUSD)
input double TakeProfit = 3685;      // Take profit in points (increased for BTCUSD)
input bool   EnableLogging = false;  // Enable detailed logging
input color  BoxColor = clrBlue;    // Color for Darvas Box
input int    BoxWidth = 1;          // Width of box lines

ENUM_TIMEFRAMES MapTimeframeInt(int tf)
{
   switch(tf)
   {
      case 1: return PERIOD_M1;
      case 2: return PERIOD_M5;
      case 3: return PERIOD_M15;
      case 4: return PERIOD_M30;
      case 5: return PERIOD_H1;

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

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

الوسوم:ex18098trendfollowpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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