Pipsgrowth EX16044 Trend — إكسبرت أدفايزر متابعة اتجاه
إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD · M5، H1
Pipsgrowth EX16044 Trend — MA Trend 2 EA trades in the direction of a moving average crossover. Uses LWMA on configurable timeframe with SL, TP, tr. إكسبرت أدفايزر MT5 مفتوح المصدر.
نظرة عامة
Pipsgrowth EX16044 Trend هو مستشار خبير يتبع الاتجاه ويعتمد على مؤشر واحد فقط، حيث يتداول في اتجاه المتوسط المتحرك الموزون الخطي (LWMA) الوحيد. كل شيء آخر في المصدر — مدير المخاطر، وقف الخسارة المتحرك، مفتاح إغلاق الاتجاه المعاكس، قفل المركز الوحيد — هو غلاف حول السؤال المركزي الذي يطرحه هذا المستشار الخبير عند كل شمعة جديدة: هل سعر Ask الحالي أعلى أو أقل من قيمة LWMA قبل شمعة واحدة؟ عندما يكون Ask > ma[1]، يضع المستشار m_need_open_buy = true؛ وعندما يكون Bid < ma[1]، يضع m_need_open_sell = true. تتم قراءة المتوسط المتحرك من مؤشر iMA واحد (handle_iMA) يُبنى مرة واحدة في OnInit، ويُكوَّن بواسطة Inp_MA_period وInp_MA_ma_period (الافتراضي 12) وInp_MA_ma_shift (الافتراضي 3) وInp_MA_ma_method = MODE_LWMA، وInp_MA_applied_price المعيَّن إلى PRICE_WEIGHTED عبر دالة MapAppliedPriceInt المساعدة. يُحسب المتوسط المتحرك على إطار زمني قابل للتكوين بشكل منفصل (Inp_MA_period هو الرمز 0–7 الذي يراه المتداول، ويفك تشفيره MapTimeframeInt إلى M1 أو M5 أو M15 أو M30 أو H1 أو H4 أو D1، مع افتراض الرمز 0 إلى H1)، لذا يمكن فصل الإطار الزمني للرسم البياني الذي يعمل عليه المستشار والإطار الزمني الذي يقيِّم فيه المتوسط المتحرك — يمكن لرسم بياني M5 أن يأخذ إشارته من LWMA على H1، وهذا هو جوهر التصميم.
تقييم الإشارة مقفل على تكة الشمعة الجديدة فقط. يبدأ OnTick بآلة حالة المعاملات (m_waiting_transaction + m_waiting_order_ticket + m_transaction_confirmed)، ويعالج أي جزء فتح معلق بمنطق OnlyOne/CloseOpposite، وعندها فقط يتحقق من حارس time_0 == PrevBars. عندما تفتح شمعة جديدة، تُستدعى RefreshRates()، ويحسب FreezeStopsLevels مخزن 1.1× من تجميد/وقف Broker، وتعمل Trailing()، ويسحب iGetArray ثلاث قيم من مخزن iMA (ma[0] وma[1] وma[2])، وتُطلَق المقارنة. ma[1] هي القيمة التي كان عليها LWMA عند إغلاق الشمعة المنتهية للتو — يعني استخدام ma[1] بدلاً من ma[0] أن الإشارة تستند إلى متوسط الشمعة السابقة، وليس القيمة التي لا تزال تُرسم خلال الشمعة الجارية. هذا القرار الوحيد هو ما يجعل دخول المستشار الخبير نظام إغلاق-الشمعة بدلاً من نظام تكة-حية.
المخاطر وبناء الصفقة تُفوَّضان إلى OpenPosition وOpenBuy وOpenSell. عندما يكون IntLotOrRisk == risk، يُنشئ المصدر كائن CMoneyFixedMargin في OnInit، ويستدعي m_money.Percent(InpVolumeLorOrRisk) — الافتراضي 3.0٪ من الهامش الحر — ثم يطلب من m_money.CheckOpenLong / CheckOpenShort حساب حجم مركز يخاطر بهذه النسبة بالضبط على مسافة InpStopLoss. عندما يكون IntLotOrRisk == lot، يرسل المستشار حجم InpVolumeLorOrRisk الكثيرات بصرف النظر عن مسافة الوقف. يتم التحقق من الحجم مقابل LotsLimit للرمز (حد Broker الثابت)، والتحقق من صحته من خلال FreeMarginCheck > MarginCheck، وعندها فقط يُرسَل عبر m_trade.Buy / m_trade.Sell مع أسعار SL وTP المحسوبة في OpenPosition. حارس مستوى التجميد والوقف في FreezeStopsLevels يدفع SL للداخل إلى price±level وTP للخارج إلى price±level إذا كانت InpStopLoss / InpTakeProfit المكوَّنة ستنتهك الحد الأدنى لمسافة Broker — وهي ميزة أمان حقيقية على الرموز ذات SYMBOL_TRADE_STOPS_LEVEL غير الصفرية.
يعمل التريلينج على كل تكة بعد مرور الشمعة الجديدة، وليس عند إغلاق الشمعة. تمر حلقة Trailing() على جميع المراكز على الرمز الذي له ماجيك المستشار، ولكل BUY، لا تدفع SL للأعلى (أبداً للأسفل) إلا عندما يكون السعر الحالي قد تحرك بأكثر من ExtTrailingStop + ExtTrailingStep بعد الدخول ويكون SL الحالي لا يزال تحت الهدف الجديد. لكل SELL، يعمل نفس الراتش في الاتجاه المعاكس. ExtTrailingStop هو مدخل InpTrailingStop المضروب في m_adjusted_point (والذي يساوي point × 10 على الرموز 3 و5 خانات، وpoint × 1 على 2 و4 خانات)، وExtTrailingStep هو نفس القياس المطبق على InpTrailingStep. يتم التعديل الفعلي على جانب Broker بواسطة TryModify_EX16044، وهي دالة مساعدة بثلاث محاولات تُعيد الإطلاق على TRADE_RETCODE_REQUOTE أو TRADE_RETCODE_TIMEOUT أو TRADE_RETCODE_PRICE_OFF أو TRADE_RETCODE_PRICE_CHANGED مع 100 مللي ثانية من النوم بين المحاولات. توجد دالتان مساعدتان شبه توأم، TryClose_EX16044 وTryClosePartial_EX16044، تغلِّفان نفس الانضباط في إعادة المحاولة حول استدعاءات إغلاق المراكز (200 مللي ثانية من النوم) ولكن لا تُستدعيان إلا من مسار ClosePositions عند تفعيل InpCloseOpposite. تُعرَّف جميع الدوال المساعدة الثلاث في نهاية الملف؛ وفي مسار الفتح الحي، يُستخدم m_trade.Buy / m_trade.Sell العاري مباشرة لأن منطق تأكيد الطلب يعيش في OnTradeTransaction بدلاً من ذلك.
ثلاثة مفاتيح لوضع التشغيل مكشوفة تحت مجموعة Trading Options. يحدد InpTypeTraiding اتجاهات الشراء فقط أو البيع فقط أو كليهما. InpOnlyOne = true يحوِّل المستشار إلى نظام مركز واحد في كل مرة: عندما ينطلق m_need_open_buy ويوجد مركز معاكس، يفتح المستشار شراء فقط إذا كان count_buys+count_sells == 0؛ إذا كان هناك أي شيء مفتوح، يُعاد تعيين m_need_open_buy ولا يُرسَل أي طلب جديد. InpCloseOpposite = true، عند دمجه مع إشارة الفتح، يستدعي ClosePositions على الجانب المعاكس قبل فتح الجانب الجديد. InpReverse يقلب الإشارة — شراء عندما يكون السعر تحت المتوسط المتحرك، بيع عندما يكون فوقه — مما يحوِّل متابع الاتجاه إلى متداول مناهض للاتجاه. لا تظهر أي من هذه الأعلام في المقارنة الحية ما لم تُفعَّل؛ الافتراضي InpTypeTraiding = buy_sell وInpOnlyOne = false وInpCloseOpposite = false وInpReverse = false هو متابع اتجاه ثنائي الاتجاه نقي سيُكدِّس في اتجاه LWMA.
OnTester غير موجود في المصدر — لا توجد دالة OnTester مخصصة، لذا سيستخدم Strategy Tester مولد إحصائيات التداول القياسي. لا يوجد حد سحب عام، ولا توقف لمنحنى الأسهم، ولا مانع خسارة يومية، ولا مرشح أخبار؛ الحد الوحيد لإدارة الأموال هو تحديد حجم CMoneyFixedMargin للنسبة لكل صفقة وحد LotsLimit الخاص بـ Broker. تدفق تأكيد الطلب هو أقرب شيء إلى حارس رأس المال: يُحاصَر m_need_open_buy / m_need_open_sell بواسطة m_waiting_transaction، والذي يُعيَّن إلى true في اللحظة التي يقر فيها خادم التداول OrderSend (ResultRetcode == 10009)، ولا يُطلَق إلا عندما يتلقى OnTradeTransaction معاملة DEAL_ADD تطابق m_waiting_order_ticket المتوقع. تمنع هذه المصافحة المستشار من إطلاق استدعاء طلب فتح ثانٍ قبل تأكيد الأول كصفقة.
ما يبدو عليه الاختبار التاريخي في الممارسة: سيُنتج المستشار جولات طويلة وبطيئة في اتجاه LWMA وخسائر متقطعة ومتذبذبة في ظروف النطاق. زوج SL/TP الافتراضي 50/140 على H1 هو تقريباً 5/14 نقطة على تسع ذهب 5 خانات (5-نقطة و14-نقطة إذا كان m_adjusted_point هو point×10)، مما يعطي نسبة مخاطرة/مكافأة 1:2.8 لكل صفقة. مع تعطيل وقف الخسارة المتحرك (InpTrailingStop = 0)، تكون المخارج مدفوعة بالكامل بـ SL/TP. مع تشغيل التريلينج عند 15/5، سيقفل المستشار الأرباح عند أول تحرك يتجاوز 20 نقطة في الاتجاه المواتي ويستمر في الراتش كل 5 نقاط إضافية. لا يوجد مرشح جلسة — سيفتح المستشار عند افتتاح أي شمعة إطار زمني بغض النظر عن التوقيت المحلي لـ Broker، لذا يحتاج المتداولون الذين يريدون سلوك لندن أو نيويورك فقط إلى جدولة الرسم البياني وفقاً لذلك أو إضافة حارس جلسة خارجي. يُحدَّد الزوج برمز الرسم البياني؛ منطق المستشار محايد للزوج ويعمل على أزواج FX الرئيسية والذهب والأدوات الأخرى بشرط أن يكون الحد الأدنى للكثير وخطوة الكثير والتجميد ومستويات التوقف محددة من قبل Broker.
تفاصيل الاستراتيجية
يُنشئ المستشار مؤشر iMA واحداً في OnInit مع رمز الإطار الزمني للمتداول الموجه عبر MapTimeframeInt، ثم يبقى خاملاً في OnTick حتى تفتح شمعة جديدة. يقمع حارس الشمعة الجديدة (PrevBars مقابل time_0) جميع منطق الإشارة على الشموع الجارية؛ عند إغلاق الشمعة، تسحب دالة iGetArray المساعدة ثلاث قيم للمتوسط المتحرك، وتُقارن ma[1] القائمة على الإغلاق بـ Ask وBid الحاليين، ويُرفَع علم اتجاهي. ثم يتم ترتيب الطلب من خلال مصافحة m_need_open_buy / m_need_open_sell + m_waiting_transaction بحيث يمكن أن يكون OrderSend واحد فقط قيد التنفيذ في كل مرة، مع قيام OnTradeTransaction بتحرير البوابة عندما يؤكد Broker الصفقة. عند كل تكة — بما في ذلك التكات التي لا تُولَّد فيها إشارة — تمر Trailing() على المراكز المفتوحة للمستشار وتدفع SL للأعلى عندما يتجاوز التحرك المواتي مسافة التريلينج بالإضافة إلى الخطوة، مع التعديل الفعلي على جانب Broker مغلف في دالة مساعدة بثلاث محاولات تتعافى من إعادة التسعير والمهلات.
عند كل شمعة جديدة على الإطار الزمني للرسم البياني، يقرأ المستشار قيمة LWMA عند الشمعة السابقة (ma[1]) ويقارنها بـ Ask وBid الحاليين. إذا كان Ask > ma[1]، يضع المستشار m_need_open_buy = true؛ وإذا كان Bid < ma[1]، يضع m_need_open_sell = true. يُحسب المتوسط المتحرك على إطار زمني قابل للتكوين بشكل منفصل (الافتراضي H1) ويستخدم طريقة تجانس LWMA مع فترة افتراضية 12 وإزاحة 3 وسعر مطبق PRICE_WEIGHTED.
المخارج مدفوعة بـ SL/TP افتراضياً، مع وقف خسارة متحرك تدريجي اختياري. بمجرد أن يصبح المركز رابحاً بأكثر من InpTrailingStop + InpTrailingStep نقطة (الافتراضي 15 + 5 = 20 نقطة)، تدفع Trailing() SL للأعلى بخطوات 5 نقاط عند كل تكة مواتية. عند تفعيل InpCloseOpposite وانطلاق إشارة جديدة ضد المركز الحالي، يُسطِّح ClosePositions المركز القائم أولاً قبل فتح الجديد.
InpStopLoss افتراضياً 50 نقطة، يُطبَّق عند فتح الطلب عبر m_trade.Buy / m_trade.Sell ويظهر في دالة OpenPosition كـ price ± ExtStopLoss. يدفع FreezeStopsLevels SL للداخل إلى الحد الأدنى لمسافة Broker إذا كانت المسافة المكوَّنة أقل من SYMBOL_TRADE_STOPS_LEVEL × 1.1.
InpTakeProfit افتراضياً 140 نقطة، مما يعطي نسبة مخاطرة/مكافأة 1:2.8 تقريباً مقابل SL 50 نقطة. يُرسَل TP على الطلب الأصلي بدلاً من إرفاقه بعد التعبئة، ويدفعه FreezeStopsLevels للخارج إلى الحد الأدنى لمسافة Broker إذا لزم الأمر.
شغِّل هذا على حساب 100 دولار+ على XAUUSD M5 (أو H1)، مع LWMA(12) shift-3 للسعر الموزون على H1 الافتراضي يغذي الإشارات. يحتاج زوج SL/TP 50/140 نقطة إلى Broker ECN أو RAW بفارق سعر منخفض على الذهب؛ فارق سعر 3 نقاط على تسع 5 خانات هو تقريباً نصف مسافة SL وسوف يؤدي إلى تآكل نسبة 1:2.8 بسرعة على M5. استخدم InpTypeTraiding = شراء فقط أو بيع فقط إذا كنت تريد إبقاء المستشار خارج أحد الاتجاهين بالكامل، واقرن المستشار بمرشح جلسة لندن أو نيويورك على مستوى الرسم البياني إذا كنت تريد تجنب تذبذبات المتوسط المتحرك في الجلسة الآسيوية.
منطق الاستراتيجية
Pipsgrowth EX16044 Trend — تحليل منطق الاستراتيجية (من كود .mq5)
العائلة: Trend
الماجيك: 22216044
الإصدار: 2.00
الوصف:
MA Trend 2 EA trades in the direction of a moving average crossover. Uses LWMA on configurable timeframe with SL, TP, trailing stop, and risk-based or fixed lot money management. Supports buy-only, sell-only, or both directions. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
المؤشرات:
- مؤشرات قياسية
الدوال الرئيسية:
OnTradeTransaction()RefreshRates()CheckVolumeValue()FreezeStopsLevels()OpenPosition()OpenBuy()OpenSell()PrintResultTrade()iGetArray()Trailing()
// Pipsgrowth EX16044 Trend — Execution Flow (from source analysis)
// Family: Trend
// MA Trend 2 EA trades in the direction of a moving average crossover. Uses LWMA on configurable timeframe with SL, TP, trailing stop, and risk-based or fixed lot money management. Supports buy-only, sell-only, or both directions. 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اسحب الإكسبرت على رسم H4 أو اليومي للحصول على أفضل النتائج
- 7حدد فترات EMA وعتبة ADX وحجم اللوت في نافذة الإعدادات
- 8فعّل Allow Algo Trading واضغط OK
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| InpStopLoss | 50 | Stop Loss, in pips (1.00045-1.00055=1 pips) |
| InpTakeProfit | 140 | Take Profit, in pips (1.00045-1.00055=1 pips) |
| InpTrailingStop | 15 | Trailing Stop (min distance from price to Stop Loss, in pips |
| InpTrailingStep | 5 | Trailing Step, in pips (1.00045-1.00055=1 pips) |
| IntLotOrRisk | risk | Money management: Lot OR Risk |
| InpVolumeLorOrRisk | 3.0 | The value for "Money management" |
| Inp_MA_period | 0 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // MA: timeframe |
| Inp_MA_ma_period | 12 | MA: averaging period |
| Inp_MA_ma_shift | 3 | MA: horizontal shift |
| Inp_MA_ma_method | MODE_LWMA | MA: smoothing type |
| Inp_MA_applied_price | 7 | Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // MA: type of price |
| InpTypeTraiding | buy_sell | Type traiding |
| InpOnlyOne | false | Only one positions |
| InpReverse | false | Reverse |
| InpCloseOpposite | false | Close opposite |
| InpPrintLog | false | Print log |
| InpMagicNumber | 22216044 | Magic Number |
| InpTradeComment | "Psgrowth.com Expert_16044" | Trade Comment |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX16044 MA_Trend_2 — MA trend-following EA, full 12-layer stack."
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\DealInfo.mqh>
#include <Trade\OrderInfo.mqh>
#include <Expert\Money\MoneyFixedMargin.mqh>
CPositionInfo m_position; // trade position object
CTrade m_trade; // trading object
CSymbolInfo m_symbol; // symbol info object
CAccountInfo m_account; // account info wrapper
CDealInfo m_deal; // deals object
COrderInfo m_order; // pending orders object
CMoneyFixedMargin *m_money;
//+------------------------------------------------------------------+
//| Enum Lor or Risk |
//+------------------------------------------------------------------+
enum ENUM_LOT_OR_RISK
{
lot=0, // Constant lot
risk=1, // Risk in percent for a deal
};
//+------------------------------------------------------------------+
//| Enum Type Traiding |
//+------------------------------------------------------------------+
enum ENUM_TYPE_TRADING
{
buy = 0, // Only BUY
sell = 1, // Only SELL
buy_sell = 2, // BUY and SELL
};
//--- 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;الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على MT5 — استخدم وسيطاً موثوقاً بتنفيذ سريع وسبريد منخفض
إكسبرتات مشابهة
عرض جميع الإكسبرتاتإكسبرتات أخرى بنفس استراتيجية متابعة الاتجاه
Pipsgrowth EX16080 Trend — إكسبرت أدفايزر متابعة اتجاه
Pipsgrowth EX16080 Trend — EURUSD triple-EMA trend follower — trades EMA20/50 cross with EMA200 filter on H4, ATR-based SL/TP, risk-percent sizing . إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX16081 Trend — إكسبرت أدفايزر متابعة اتجاه
Pipsgrowth EX16081 Trend — Gold trend EA catching major XAUUSD trends using EMA 50/ 200 crossover on H4 with daily structure swing high/low and Fib. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX16033 Trend — إكسبرت أدفايزر متابعة اتجاه
Pipsgrowth EX16033 Trend — Price-action scalping EA using distance-based grid entries with net-take-profit targeting and optional lot multiplier. 1. إكسبرت أدفايزر MT5 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.