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

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

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

Pipsgrowth EX18110 TrendFollow — Classic Donchian Channel (Turtle Trading) breakout EA. LONG when price breaks above N-period highest high, SHORT when pr. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

EX18110 هو مستشار خبير يعتمد على اختراق قناة دونشيان — ما يُعرف بنمط تداول السلحفاة، مختزلًا في خطين أفقيين وقاعدة بسيطة: شراء عندما يتجاوز ارتفاع شمعة أعلى قمة لآخر 20 شمعة، وبيع عندما ينخفض الانخفاض عن أدنى قاع. تُعاد القناة حسابها في كل تكّة عبر الدالة CalculateDonchianChannel() التي تستعرض آخر عدد من الشموع يحدده DonchianPeriod (افتراضيًا 20) وتخزن النتيجة في g_upperChannel وg_lowerChannel. يستخدم المقارن الفعلي للاختراق داخل CheckForSignals() الشمعة 1 (الشمعة المنتهية لتوها)، ما يمنع إعادة الرسم ويجعل القرار متوافقًا مع الإغلاق وليس مع التكّة الجارية.

الفترة الافتراضية 20 هي نظام Turtle S1 الأصلي. مع شموع M5، يمتد ذلك على 100 دقيقة من نطاق الارتفاع/الانخفاض — نافذة ضيقة بما يكفي لأن تلتقط اختراقات جلسة لندن الصباحية (07:00–09:00 بتوقيت GMT) بشكل موثوق، لكنها واسعة بما يكفي لأن نادرًا ما يولّد الضجيج داخل اليوم اختراقًا كاذبًا. الفترة قابلة للضبط بالكامل: أنزلها إلى 10 لقناة أسرع وأكثر تفاعلًا، أو ارفعها إلى 55 لنظام Turtle S2 الأبطأ الذي يلتقط موجات تمتد عدة أيام. يرفض فحص الحدود داخل OnInit() أي قيمة أقل من 5 أو أعلى من 200.

المخاطرة ثابتة عند 1% من الرصيد لكل صفقة افتراضيًا. تحسب CalculateLotSize() حجم اللوت المناسب من مسافة وقف الخسارة: riskAmount = الرصيد * RiskPercent / 100، ثم lotSize = riskAmount / (slDistance / tickSize * tickValue). تقوم NormalizeLot() بتقريب النتيجة إلى مضاعف حجم الصفقة لدى الوسيط وتقييدها ضمن SYMBOL_VOLUME_MIN وSYMBOL_VOLUME_MAX. اضبط RiskPercent = 0 فيعود المستشار إلى FixedLotSize = 0.01 للاختبار بالميكرو-لوت. يعني MaxPositions = 1 أن المستشار يحتفظ بصفقة واحدة في كل مرة؛ أي اختراق في الاتجاه المعاكس يغلق الصفقة القائمة أولًا عبر CloseAllPositions() ثم يفتح الجديدة.

وقف الخسارة الوقائي والهدف يعتمدان على ATR افتراضيًا. يُنشأ المقبض g_atrHandle داخل OnInit() ضد ATRPeriod = 14، ويُحدَّث g_atrValue في كل تكّة. يقف وقف الخسارة عند ATR * ATRMultiplierSL = ATR * 2.0 ويقف جني الأرباح عند ATR * ATRMultiplierTP = ATR * 3.0 — نسبة مخاطرة إلى عائد 1.5 تفترض أن موجة الاتجاه ستتفوق على الوقف. لمن يفضل نقاط الوقف الثابتة، يفعّل UseATRStops = false قيمتي FixedStopLossPips = 50 وFixedTakeProfitPips = 100. يُرسل الوقف والهدف من جانب الخادم عند الدخول، فينفذهما الوسيط حتى لو انقطع المستشار.

بمجرد الدخول في الصفقة، يتدخل طبقتا حماية. تعمل ApplyBreakeven() عند كل شمعة جديدة؛ وحالما يتحرك السعر 20 نقطة في الربح (BreakevenTriggerPips)، يُرفع وقف الخسارة إلى الدخول + 2 نقطة (BreakevenOffsetPips)، مع مصفوفة لكل تذكرة (g_breakevenTickets[]) تتعقب الصفقات التي نُقل وقفها لمنع المستشار من تعديل نفس الأمر مرارًا. ثم تتولى ApplyTrailingStop() المتابعة: بعد 30 نقطة ربح (TrailingStartPips)، يتبع وقف الخسارة السعر بفارق 15 نقطة (TrailingStepPips)، ويتحرك خطوة واحدة فقط عندما يتجاوز السعر نقطة واحدة فوق الوقف السابق. الأثر المشترك هو صفقة بلا مخاطرة بعد 20 نقطة، ثم تُقفل تدريجيًا مع امتدادها.

فلتر الجلسة وعطلة نهاية الأسبوع هما الطبقة الدفاعية. تستخدم IsInSession() دالة TimeGMT() للمقارنة مع SessionStartHour = 7 وSessionEndHour = 16 — نافذة لندن فقط في الإعداد الافتراضي. مع UseSessionFilter = false يتداول المستشار على مدار الساعة. ترجع IsWeekendApproaching() صحيحًا يوم الجمعة بعد الساعة 20:00 بتوقيت GMT، وحينها تستدعي OnTick() الدالة CloseAllPositions(0) وتنهي عمل الشمعة — لا تُحمل أي صفقات إلى فجوة نهاية الأسبوع. تراقب IsMaxDailyLossReached() المتغير g_dailyProfit مقابل 5% من الرصيد (MaxDailyLossPct)؛ وعند بلوغها يتوقف المستشار عن فتح صفقات جديدة حتى تعيد CheckDayChange() تصفير العداد عند منتصف الليل بتوقيت GMT. يُفلتر السبريد أيضًا: تحظر IsSpreadOK() الدخول حين يتجاوز السبريد المباشر MaxSpreadPips = 3.

العناصر البصرية ثرية بشكل غير معتاد لمستشار في هذه الفئة. ترسم DrawInitialChannel() ثلاثة خطوط أفقية (علوي، أوسط، سفلي) عند الشمعة الحالية؛ ثم تمشي DrawChannelHistory() إلى الوراء بمقدار ChannelBarsToShow = 50 شمعة وترسم كل مقطع من القناة كخط OBJ_TREND مخفي، مع إعادة استخدام الكائنات لتبقى العملية سريعة بعد تحديث الشارت. تبني CreateDashboard() لوحة داكنة بأبعاد 280×220 في الزاوية العلوية اليسرى تعرض قيم القناة العلوية والسفلية وقيمة ATR الحالية والسبريد (بالأحمر حين يتجاوز الحد) وحالة الجلسة ومنطقة الإشارة (BUY ZONE / SELL ZONE / NEUTRAL) والصفقة الحالية ونسبة الربح الإجمالية مدى الحياة. تُخنق UpdateDashboard() بحيث لا تتجاوز مرة كل ثانيتين حتى لا تبطئ مسار التكّة.

تُحفظ الإحصائيات الدائمة في ملف ثنائي داخل مجلد MQL5/Files عبر SaveStatistics() وتُستعاد بواسطة LoadStatistics() في OnInit() التالية. يحوي الملف إجمالي الصفقات وعدد الرابح منها وإجمالي الربح — ما يكفي لاستئناف عرض نسبة الربح دون الحاجة لاستيراد دفتر يوميات.

يزعم ترويسة الملف بنية من 12 طبقة تشمل كشف النظام والتوسع وتحسين لياقة OnTester. عمليًا يغطي التنفيذ نحو سبع طبقات فقط: الإشارة (اختراق دونشيان)، الدخول (إرسال الشراء/البيع مع إغلاق الاتجاه المعاكس)، التأكيد (كسر القناة)، عدم التداول (جلسة/سبريد/خسارة يومية/نهاية الأسبوع)، رأس المال (صفقة واحدة بحد أقصى، مخاطرة 1%)، المخاطرة (وقف قائم على ATR، نقطة التعادل، trailing)، والإدارة (وقف/هدف من جانب الخادم إلى جانب نقل نقطة التعادل والـtrailing شمعة بشمعة). الطبقات المتبقية (النظام، التوسع، OnTester، فلتر الأخبار، تقييم لوحة المعلومات، الرموز المتعددة) غير موجودة في الكود — لوحة المعلومات موجودة لكنها غير مربوطة بطبقة استراتيجية. اعتبر ادعاء الـ12 طبقة خارطة طريق، لا إنجازًا.

في الاختبار التاريخي، توقّع أن يطلق المستشار من 1 إلى 3 اختراقات لكل جلسة على EURUSD عند M5، بنسبة فوز تقديرية بين 35% و45% عند الإعداد الافتراضي 1.5R — النمط النموذجي لتداول السلحفاة. أغلب الخروج سيكون عبر الوقف المتحرك لا عبر جني الأرباح. الصفقة التي تغطي شهرًا كاملًا عادة ما تكون اختراقًا لجلسة لندن يمتد 4 إلى 6 ساعات ويجري 80 نقطة أو أكثر قبل أن ينعكس؛ أما 5 إلى 10 صفقات صغيرة تُوقف بالخسارة فهي تكلفة البقاء في اللعبة.

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

في كل تكّة، تُعيد CheckDayChange() تصفير g_dailyProfit عند انتصاف الليل بتوقيت GMT. ثم تجبر IsWeekendApproaching() إغلاق كل الصفقات يوم الجمعة بعد الساعة 20:00 بتوقيت GMT. توقف IsMaxDailyLossReached() المستشار حين يهبط الربح المتحقق في الجلسة دون -5% من الرصيد. تُحدّث CalculateDonchianChannel() وCalculateATR() الحدود العلوية والسفلية ومؤشر ATR لفترة 14 باستخدام مقابض المؤشرات المخزّنة. عند شمعة جديدة، تمسح ApplyBreakeven() وApplyTrailingStop() الصفقات المفتوحة، ثم تقارن CheckForSignals() الشمعة المنتهية للتو بقناة آخر 20 شمعة وتستدعي OpenPosition() عند الاختراق. تستخرج CalculateLotSize() حجم اللوت من RiskPercent = 1% ومسافة وقف الخسارة، مع تقريب النتيجة إلى مضاعف حجم الصفقة لدى الوسيط.

إشارة الدخول

شراء عندما يتجاوز ارتفاع الشمعة السابقة الحد العلوي لقناة دونشيان (أعلى قمة لآخر عدد من الشموع يحدده DonchianPeriod، افتراضيًا 20). بيع عندما ينخفض الانخفاض عن الحد السفلي. تعمل CheckForSignals() عند كل شمعة جديدة ولا تطلق إشارة إلا حين يكون المستشار محايدًا أو يحمل الاتجاه المعاكس. يخضع الدخول لفلتر الجلسة (GMT 7–16 افتراضيًا) والسبريد (≤3 نقاط) وحد الخسارة اليومية (5% من الرصيد).

إشارة الخروج

يخرج من الصفقة بثلاث طرق: كسر القناة في الاتجاه المعاكس يستدعي CloseAllPositions() ثم يفتح صفقة جديدة في الاتجاه الآخر؛ وسلم نقطة التعادل ثم التريلينج يرفع وقف الخسارة تدريجيًا (تفعيل نقطة التعادل عند 20 نقطة، بدء التريلينج عند 30 نقطة، خطوة 15 نقطة)؛ أو يُغلق الوسيط الصفقة عند جني الأرباح من جانب الخادم عند 3.0× ATR (افتراضيًا 100 نقطة). الجمعة بعد الساعة 20:00 بتوقيت GMT وعند بلوغ 5% سحب يومي يُغلق المستشار كل الصفقات أيضًا.

وقف الخسارة

وقف الخسارة الافتراضي هو ATR(14) * 2.0 يُرسل من جانب الخادم عند الدخول، ويُعدّل إلى الحد الأدنى لمسافة الوقف لدى الوسيط. مع UseATRStops = false يعود إلى 50 نقطة ثابتة. بعد 20 نقطة ربح، تنقل ApplyBreakeven() وقف الخسارة إلى الدخول + 2 نقطة (بتتبع لكل تذكرة لتجنب التعديل المتكرر). بعد 30 نقطة، تبدأ ApplyTrailingStop() برفع الوقف 15 نقطة خلف السعر.

جني الأرباح

جني الأرباح الافتراضي هو ATR(14) * 3.0، بنسبة مخاطرة إلى عائد 1.5 مقابل الوقف عند 2.0× ATR، يُرسل من جانب الخادم عند الدخول. مع UseATRStops = false يعود إلى 100 نقطة ثابتة. تُغلق أغلب الصفقات الرابحة على سلم التريلينج (بعد نقطة التعادل عند 20 نقطة، ثم التريلينج عند 30/15 نقطة) لا على جني الأرباح نفسه، وهذا ما يمنح النظام قدرته على التقاط اتجاهات على طريقة Turtle.

الأنسب لـ

EURUSD على M5 أو H1، مع قناة دونشيان الافتراضية 20 شمعة ومضبوطة على جلسة لندن (GMT 07:00–16:00). الحد الأدنى للرصيد: 100 دولار مع العودة إلى حجم 0.01 لوت، ويُفضّل 500 دولار أو أكثر عند العمل بمخاطرة 1%. يعمل أفضل على حسابات ECN أو RAW منخفضة السبريد — إذ يفترض فلتر السبريد عند 3 نقاط أن تكون تكاليف التنفيذ دون النقطة. إغلاق الجمعة المسائية وقفاز الخسارة اليومية عند 5% يجعلانه مناسبًا للمتداولين الذين لا يستطيعون مراقبة الشارت؛ ولا يُناسب اختراقات الأخبار (لا يوجد فلتر أحداث) ولا المستخدمين الذين يحتاجون تعدد الرموز أو تعدد الصفقات.

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

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

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

الوصف: Classic Donchian Channel (Turtle Trading) breakout EA. LONG when price breaks above N-period highest high, SHORT when price breaks below N-period lowest low. Includes ATR-based SL/TP, trailing stop, breakeven, GMT session filter, weekend close protection, and max daily loss kill switch. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • CalculateDonchianChannel()
  • CalculateATR()
  • PipsToPrice()
  • GetSpreadPips()
  • IsSpreadOK()
  • IsInSession()
  • IsWeekendApproaching()
  • CheckDayChange()
  • IsMaxDailyLossReached()
  • DrawInitialChannel()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX18110 TrendFollow — Execution Flow (from source analysis)
// Family: TrendFollow
// Classic Donchian Channel (Turtle Trading) breakout EA. LONG when price breaks above N-period highest high, SHORT when price breaks below N-period lowest low. Includes ATR-based SL/TP, trailing stop, breakeven, GMT session filter, weekend close protection, and max daily loss kill switch. 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
الرموز المُحسّنة:
EURUSD
الأطر الزمنية المُحسّنة:
M5H1

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

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

المعاملالافتراضيالوصف
DonchianPeriod20Donchian Channel Period
UseSessionFiltertrueUse Session Filter
SessionStartHour7Session Start Hour (GMT/UTC)
SessionEndHour16Session End Hour (GMT/UTC)
AvoidWeekendstrueClose before weekend
RiskPercent1.0Risk Per Trade (%)
FixedLotSize0.01Fixed Lot Size (if Risk=0)
MaxPositions1Max Open Positions
MaxDailyLossPct5.0Max Daily Loss % (0=off)
MaxSpreadPips3Max Spread (pips, 0=off)
UseATRStopstrueUse ATR-based SL/TP
ATRPeriod14ATR Period
ATRMultiplierSL2.0ATR Multiplier for SL
ATRMultiplierTP3.0ATR Multiplier for TP
FixedStopLossPips50Fixed SL (pips) if ATR off
FixedTakeProfitPips100Fixed TP (pips) if ATR off
UseTrailingStoptrueEnable Trailing Stop
TrailingStartPips30Trailing Start (pips)
TrailingStepPips15Trailing Step (pips)
UseBreakeventrueEnable Breakeven
BreakevenTriggerPips20BE Trigger (pips in profit)
BreakevenOffsetPips2BE Offset (pips above entry)
ShowDashboardtrueShow Dashboard
ShowChanneltrueShow Donchian Channel
UpperChannelColorclrLimeUpper Channel Color
LowerChannelColorclrRedLower Channel Color
ChannelWidth2Channel Line Width
ChannelBarsToShow50Bars to Show (less = faster)
MagicNumber22218110Magic number
Slippage10Max Slippage (points)
InpTradeComment"Psgrowth.com Expert_18110"+------------------------------------------------------------------+
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX18110.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX18110 Donchian_Channel — Classic Turtle breakout, full 12-layer stack."
#include <Trade\Trade.mqh>

//+------------------------------------------------------------------+
//| INPUT PARAMETERS                                                  |
//+------------------------------------------------------------------+
input group "=== Donchian Channel Settings ==="
input int      DonchianPeriod     = 20;           // Donchian Channel Period
input bool     UseSessionFilter   = true;         // Use Session Filter
input int      SessionStartHour   = 7;            // Session Start Hour (GMT/UTC)
input int      SessionEndHour     = 16;           // Session End Hour (GMT/UTC)
input bool     AvoidWeekends      = true;         // Close before weekend

input group "=== Risk Management ==="
input double   RiskPercent        = 1.0;          // Risk Per Trade (%)
input double   FixedLotSize       = 0.01;         // Fixed Lot Size (if Risk=0)
input int      MaxPositions       = 1;            // Max Open Positions
input double   MaxDailyLossPct    = 5.0;          // Max Daily Loss % (0=off)
input int      MaxSpreadPips      = 3;            // Max Spread (pips, 0=off)

input group "=== Stop Loss / Take Profit ==="
input bool     UseATRStops        = true;         // Use ATR-based SL/TP
input int      ATRPeriod          = 14;           // ATR Period
input double   ATRMultiplierSL    = 2.0;          // ATR Multiplier for SL
input double   ATRMultiplierTP    = 3.0;          // ATR Multiplier for TP
input int      FixedStopLossPips  = 50;           // Fixed SL (pips) if ATR off
input int      FixedTakeProfitPips= 100;          // Fixed TP (pips) if ATR off

input group "=== Trailing & Breakeven ==="
input bool     UseTrailingStop    = true;         // Enable Trailing Stop
input int      TrailingStartPips  = 30;           // Trailing Start (pips)
input int      TrailingStepPips   = 15;           // Trailing Step (pips)
input bool     UseBreakeven       = true;         // Enable Breakeven
input int      BreakevenTriggerPips = 20;         // BE Trigger (pips in profit)
input int      BreakevenOffsetPips  = 2;          // BE Offset (pips above entry)

input group "=== Visual Settings ==="
input bool     ShowDashboard      = true;         // Show Dashboard
input bool     ShowChannel        = true;         // Show Donchian Channel
input color    UpperChannelColor  = clrLime;      // Upper Channel Color
input color    LowerChannelColor  = clrRed;       // Lower Channel Color
input int      ChannelWidth       = 2;            // Channel Line Width
input int      ChannelBarsToShow  = 50;           // Bars to Show (less = faster)

input group "=== EA Settings ==="
input int      MagicNumber        = 22218110;                // Magic number
input int      Slippage           = 10;                    // Max Slippage (points)
input string   InpTradeComment    = "Psgrowth.com Expert_18110";

//+------------------------------------------------------------------+
//| GLOBAL VARIABLES                                                  |
//+------------------------------------------------------------------+
double g_upperChannel = 0;
double g_lowerChannel = 0;
double g_middleChannel = 0;
double g_atrValue = 0;

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

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

الوسوم:ex18110trendfollowpipsgrowthfreemt5eurusd

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

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

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

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

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

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

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

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