Pipsgrowth EX04002 HAEA — إكسبرت أدفايزر إكسبرت أدفايزر
إكسبرت أدفايزر MT5 مفتوح المصدر · XAUUSD · M15
Pipsgrowth EX04002 HAEA — Gold scalping strategy using Heiken Ashi trend change detection. Trades bullish/bearish trend changes confirmed by conse. إكسبرت أدفايزر MT5 مفتوح المصدر.
نظرة عامة
يبني خبير Pipsgrowth EX04002 HAEA قراراته على سلسلة هايكن آشي (Heiken Ashi) يُعيد حسابها بنفسه من بيانات الإطار الزمني M15 الخام، ويتعامل مع كل تغيّر لون وكأنه حدث منفصل لا استمرار لاتجاه. بدلًا من جلب مؤشر هايكن آشي الجاهز من المنصة، تعيد دالة GetHASignal() بناء السلسلة شمعة بشمعة عبر iOpen/iHigh/iLow/iClose. عند كل شمعة M15 جديدة، تمر الدالة على آخر ConfirmBars + 2 شموع، فتحسب haClose = (o+h+l+c)/4 لكل واحدة منها، وتزرع افتتاح أقدم شمعة اصطناعية بمتوسط افتتاح وإغلاق الشمعة الحقيقية الأصلية، ثم تُكمل بقية سلسلة الافتتاح بشكل تكراري. ومن ثمّ فإن لون كل شمعة اصطناعية هو نسخة ملساء من المسار السعري الحقيقي، لا مجرد انعكاس آلي للشموع الخام.
قاعدة القرار الفعلية أعمق بطبقتين. الانعكاس الصعودي يتطلب أن آخر ConfirmBars شمعة (افتراضيا 2) كلها خضراء، أي haClose[i] > haOpen[i] لكل i داخل النافذة، وأن الشمعة التي تسبق هذا النافذة مباشرة عند الفهرس ConfirmBars تكون حمراء haClose[ConfirmBars] <= haOpen[ConfirmBars]. الانعكاس الهبوطي هو النسخة المعكوسة. هذا الشرط المزدوج هو ما يجعل الخبير كاشف تغيّر لا تابع اتجاه؛ فهو لا يطلق الصفقة حين يرى مجموعة خضراء بدأت قبل ثلاث ساعات، بل ينتظر كتلة خضراء حلّت محل كتلة حمراء فورًا. مع ConfirmBars = 2 يحتاج الخبير إلى شمعتين خضراوين متتاليتين فوق شمعة حمراء واحدة ليُفعّل الشراء. رفع القيمة يجعل الخبير أكثر انتقائية ويقلل عدد الصفقات، وخفضها يجعله أكثر اندفاعًا ويقبل انعكاسات أكثر ضوضاء.
عند تاكد الإشارة تستدعي OpenPosition() لقياس الوقف لا من قيمة StopLossPips وحدها بل من أكبر ثلاثة بدائل متنافسة: currentATR * 1.5، وStopLossPips * pipSize (15 نقطة افتراضيا)، و1.5 * minDist حيث minDist هو SYMBOL_TRADE_STOPS_LEVEL * _Point للوسيط مع حد أدنى 10 نقاط. لأن قيمة ATR(14) على M15 للذهب تتراوح عادة بين 150 و400 نقطة، يهيمن ذراع ATR على أرضية الـ15 نقطة، فيستقر الوقف قرب 1.5× ATR، أوسع من الوقف الثابت 15 نقطة في الأسواق الهادئة وأضيق حين يكون الهدوء مفرطًا. يُضبط جني الأرباح على 2 * slDist بنسبة مخاطرة إلى عائد 1:2، مع نفس أرضية 1.5 * minDist كشبكة أمان ضد الوسطاء الذين يرفضون جني أرباح بمسافة بنس. تتحقق دالة SafePositionModify() من أن قيم SL/TP الناتجة تحترم الحد الأدنى للمستوى، وتدفع الخط للخارج بنقطة واحدة عند الحاجة، وترفض التعديل إن استقر الوقف في الجهة الخاطئة من السعر.
يمر تحديد حجم الصفقة عبر CalculatePositionSize(). مع UseMoneyManagement = true (الافتراضي) تقرأ الدالة رأس المال الفعّال، وهو أصغر قيمة بين Equity الحالي وInpCapitalCapAmount حين يكون الحد غير صفري، وإلا Equity نفسه. تضربه في RiskPercent / 100 (2% افتراضيا) وتقسمه على قيمة النقطة لكل لوت مضروبة في المسافة SL بالنقاط. تُقرّب النتيجة إلى SYMBOL_VOLUME_STEP للرمز، وتُقص بين SYMBOL_VOLUME_MIN وSYMBOL_VOLUME_MAX. عند إيقاف UseMoneyManagement يرجع الخبير إلى FixedLotSize = 0.01 الثابت. فحص OrderCalcMargin المسبق يرفض الصفقة مباشرة لو كان حجم اللوت يستهلك هامشًا حرًا غير كافٍ. يستخدم إرسال الأوامر نمط إعادة المحاولة الثلاثي المعتاد مع 150 مللي ثانية بين المحاولات عند REQUOTE وTIMEOUT وPRICE_OFF، وأي رمز إرجاع آخر يُنهي المحاولة. الانزلاق ثابت 3 نقاط، ووضع التعبئة يُكتشف تلقائيًا من SYMBOL_FILLING_MODE مع تفضيل FOK ثم IOC ثم RETURN.
واجهة إدارة الصفقات مقصودة في بساطتها. يمر OnTick() على IsSafeToTrade()، ثم يحدّث عدادات اليوم، وينتظر شمعة M15 جديدة عبر IsNewBar()، ويُحدّث مقبض ATR عبر RefreshIndicators()، ويُشغّل CheckFilters() التي تحظر الشمعة إن تجاوز السبريد 25 نقطة افتراضيا، ويتحقق أن CountPositions() < 1 أي أن الخبير يحمل صفقة واحدة كحد أقصى على الرمز بهذا السحر. بعد ذلك فقط يسأل GetHASignal(). ما إن تُفتح الصفقة يتركها الخبير وشأنها ليصلها SL/TP. لا يوجد وقف متبقي في OnTick، ولا قفل عند نقطة التعادل، ولا إغلاق جزئي يُستدعى من المسار الحي. دالة TryClosePartial_EX04002() موجودة لكنها لا تُستدعى أبدًا. الإشارة العكسية لا تُغلق الصفقة القائمة بفعالية، بل يفتح الخبير صفقة جديدة في الاتجاه المعاكس بعد أن يُغلَق الأصلية بطبيعتها عبر SL أو TP، ولهذا يضمن سقف الصفقة الواحدة أن الانعكاس يُعالَج بحكم HA للشمعة الجديدة حالما تنتهي الصفقة القديمة.
طبقات إدارة المخاطر متراكمة فوق منطق الصفقة. على جانب رأس المال: InpMinEquityPercent = 95 يوقف الخبير حين يهبط Equity تحت 95% من الرصيد الأولي المُلتقط في OnInit، فيكفي تراجع بنسبة 5% على مستوى الحساب لإيقاف الدخول الجديد. InpCapitalCapAmount = 0 يعطّل حد الدولارات افتراضيا؛ وضبطه بقيمة موجبة يحدّ Equity المستخدم في حساب حجم الصفقة بهذا السقف، وInpCapitalCapFloor = 50 يحظر الدخول تحت عتبة 50 دولارًا. على جانب الربح والخسارة: تُتراكَم الخسائر المحققة في g_realizedToday ويُحظر الدخول حين تصل إلى -3% من رأس المال الفعّال، مع سقف أسبوعي -6% يعكس نفس المنطق. على جانب السلوك: كل صفقة TRADE_TRANSACTION_DEAL_ADD تطابق السحر تزيد g_consecLosses عند الخسارة وتعيدها إلى صفر عند الربح؛ ثلاث خسائر متتالية (InpMaxConsecLosses = 3) تُفعّل g_cooldownUntil بعد 30 دقيقة، وخلالها ترجع IsSafeToTrade() إلى false. حد 50 صفقة يوميًا (InpMaxTradesPerDay) يوقف الخبير نهائيًا بعد ذلك العدد من الصفقات على الرمز.
تُدار بوابة الجلسات والأخبار بتوقيت GMT. إما تحترم DetectGMTOffset() قيمة InpServerGMTOffset أو تبحث في آخر 100 شمعة H1 عن فجوة الجمعة-الاثنين، وتطرح 22 من ساعة الشمعة السابقة، وتقص النتيجة في نطاق [-12، +12]. تُقيّم InActiveSession() دقيقة اليوم الناتجة مقابل نوافذ لندن (7-16) ونيويورك (12-21)؛ يُسمح بالتداول إن وقعت الدقيقة في إحداها، مع قاعدة إضافية أن InpAvoidAsia = true (الافتراضي) ترفض الدخول خلال النافذة الآسيوية (0-7 GMT) حتى لو تداخلت زمنيًا مع لندن. تحظر IsMarketOpen() السبت كاملًا والأحد قبل الساعة 22 GMT. حين يكون InpNewsFilter مُفعّلًا، ترجع IsNewsTime() إلى true خلال ±InpNewsFilterMinutes دقيقة من افتتاح لندن أو نيويورك وتوقف الخبير لتلك النافذة. إيقاع M15 يعني أن الإشارات تتشكّل عند حافة الشمعة فقط، فيمكن للخبير أن يكون حاضرًا في الجلسة لكن خاملًا إن لم يحدث انعكاس HA مؤهل على الشمعة المعنية.
الاستراتيجية: صفقة واحدة، صفقة واحدة لكل شمعة، وقف مرتكز على ATR، نسبة مخاطرة/عائد ثابتة، مع حواجز قوية على الربح والخسارة. اختيار التصميم الذي يميّز EX04002 عن خبير تقاطع متوسطات اعتيادي هو أن الإشارة تُبنى من سلسلة سعرية اصطناعية لا من الخام، فيتلاشى الخبير طبيعيًا عند أول شمعة من أي حركة اندفاعية وينتظر شمعة تأكيد ثانية قبل التزام رأس المال. للتجار الذين يستهدفون الذهب تحديدًا، هذا مقصود: تكرار إشارات أضيق مقابل دخول أنظف. الحد الأدنى للرصيد 100 دولار يعكس حجم اللوت الاحتياطي 0.01، لكن مع 2% مخاطرة افتراضية ووقف يتراوح بين 20 و50 نقطة، تقع المخاطرة بالدولار بين 2 و10 دولارات على رصيد 100 دولار، وهو ما يناسب صفقة مضاربة واحدة.
تفاصيل الاستراتيجية
يُعيد الخبير بناء سلسلة هايكن آشي شمعة بشمعة من بيانات M15 الخام داخل GetHASignal()، ولا يُطلق الإشارة إلا حين تجلس كتلة من ConfirmBars شمعة اصطناعية بلون واحد فوق شمعة واحدة من اللون المعاكس. يُقرأ ATR(14) عند إغلاق M15 عبر مقبض iATR واحد في RefreshIndicators()، وتلك القيمة تضبط وقف الخسارة كـ max(ATR*1.5، 15 نقطة، 1.5*minStopDistance). جني الأرباح ثابت عند 2× SL. يمر تحديد اللوت عبر CalculatePositionSize() التي تستخدم 2% من رأس المال الفعّال (مع InpCapitalCapAmount يحد أساس Equity حين يكون غير صفري) مقسومًا على قيمة النقطة بالدولار لـ SL الناتج. يمر OnTick() بكل إجراء عبر IsSafeToTrade(): أرضية Equity عند 95% من الرصيد الأولي، خسارة يومية 3%، أسبوعية 6%، cooldown 30 دقيقة بعد ثلاث خسائر متتالية، سقف 50 صفقة يوميًا، حظر عطلة نهاية الأسبوع، ونافذة جلستي لندن ونيويورك مع خيار تجنّب آسيا. يجب أن تُفتتح شمعة M15 جديدة قبل إعادة تقييم الإشارات، ويرفض الخبير فتح صفقة ثانية ما دامت صفقة بالسحر 22204002 حيّة.
الدخول للشراء عند انعكاس صعودي في هايكن آشي: تتطلب GetHASignal() أن آخر ConfirmBars شمعة اصطناعية (افتراضيا 2) على M15 كلها خضراء (haClose > haOpen) وأن الشمعة التي تسبق النافذة مباشرة تكون حمراء. النسخة الهبوطية معكوسة. تُقيَّم كل إشارة فقط عند افتتاح شمعة M15، وفقط حين لا توجد صفقة مفتوحة بالسحر 22204002 على XAUUSD.
عمليات الخروج سلبية: تُغلق الصفقات فقط حين يصل السعر إلى SL أو TP المُرفقَين عند الدخول. لا يوجد وقف متبقي حيّ، ولا قفل عند نقطة التعادل، ولا منطق إغلاق عند إشارة عكسية في OnTick(). الانعكاس في اتجاه هايكن آشي يفتح صفقة جديدة بعد إغلاق القائمة بطبيعتها عبر SL أو TP، لأن الخبير يفرض سقفًا صارمًا بصفقة واحدة مفتوحة على الرمز.
يُحسب وقف الخسارة كـ max(ATR(14,M15) * 1.5، 15 نقطة، 1.5 * minStopDistance)، فمسافة الحماية مرتبطة بمتوسط التذبذب وتبلغ عادة 1.5× قيمة ATR على M15. تتحقق SafePositionModify() من قيمة SL النهائية مقابل SYMBOL_TRADE_STOPS_LEVEL للوسيط وترفضها إن استقرت في الجهة الخاطئة من السعر.
يُضبط جني الأرباح على 2× مسافة الوقف (tpDist = 2 * slDist)، بنسبة عائد إلى مخاطرة ثابتة 1:2، مع أرضية 1.5 * minDist لتلبية الوسطاء الذين يرفضون جني الأرباح بمسافة بنس. لا يُستدعى إغلاق جزئي من المسار الحي.
موصى به للتجار الذين يبحثون عن خبير مضاربة على الذهب بصفقة واحدة وتردد منخفض، بحد أدنى 100 دولار وتحمل متوسط للمخاطرة. الأنسب على وسيط XAUUSD بسبريد ضيق ووضع تعبئة FOK أو IOC، لأن MaxSpreadPips = 25 يخفف الإشارات حين يتسع السبريد، ويعتمد الخبير على وقفات بمسافة 1.5× ATR داخل الحد الأدنى لمسافة الوقف لدى الوسيط. شغّله على M15، واسمح له بالعمل خلال جلستي لندن (7-16 GMT) ونيويورك (12-21 GMT)، وأبقِ InpAvoidAsia = true ما لم ترد اختبار انعكاسات الاتجاه في الجلسة الآسيوية تحديدًا. رأس المال الحي الموصى به يتراوح بين 2-5× قيمة InpCapitalCapAmount إن ضبطتها، لأن الخبير يرفض فتح صفقة جديدة حالما يصل Equity إلى السقف.
منطق الاستراتيجية
Pipsgrowth EX04002 HAEA — تحليل منطق الاستراتيجية (من كود .mq5)
العائلة: HAEA
الماجيك: 22204002
الإصدار: 2.00
الوصف:
Gold scalping strategy using Heiken Ashi trend change detection. Trades bullish/bearish trend changes confirmed by consecutive same-color HA candles, with ATR-based stops and spread filtering
المؤشرات:
- مؤشرات قياسية
الدوال الرئيسية:
SafePositionModify()RefreshIndicators()GetHASignal()OpenPosition()CalculatePositionSize()GetEffectiveCapital()IsNewBar()GetPipSize()CheckFilters()CountPositions()
// Pipsgrowth EX04002 HAEA — Execution Flow (from source analysis)
// Family: HAEA
// Gold scalping strategy using Heiken Ashi trend change detection. Trades bullish/bearish trend changes confirmed by consecutive same-color HA candles, with ATR-based stops and spread filtering
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اسحب الإكسبرت على رسم بياني يطابق الإطار الزمني الموصى به
- 7هيّء المعاملات وفقاً للجدول في هذه الصفحة
- 8فعّل Allow Algo Trading واضغط OK
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| ConfirmBars | 2 | Consecutive same-color bars to confirm |
| InpMaxConsecLosses | 3 | Max consecutive losses before cooldown (0=disabled) |
| InpCooldownMinutes | 30 | Cooldown minutes after consec losses (0=disabled) |
| InpMaxTradesPerDay | 50 | Maximum trades per day |
| InpMinEquityPercent | 95.0 | Stop trading if equity falls below this % of initial balance |
| InpDailyLossLimitPct | 3.0 | Daily loss limit (% of effective capital) |
| InpWeeklyLossLimitPct | 6.0 | Weekly loss limit (% of effective capital) |
| InpCapitalCapAmount | 0.0 | Cap amount ($ real money equity) |
| InpCapitalCapFloor | 50.0 | Floor ($); block entries below this |
| InpServerGMTOffset | 0 | Server GMT offset in hours (0=auto-detect via weekend gap) |
| InpLondonStartHour | 7 | London session start (GMT) |
| InpLondonEndHour | 16 | London session end (GMT) |
| InpNYStartHour | 12 | New York session start (GMT) |
| InpNYEndHour | 21 | New York session end (GMT) |
| InpAvoidAsia | true | Avoid Asian session |
| InpAsiaStartHour | 0 | Asian session start (GMT) |
| InpAsiaEndHour | 7 | Asian session end (GMT) |
| InpNewsFilter | false | Avoid trading near news session opens |
| InpNewsFilterMinutes | 15 | Minutes to avoid around news |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX04002 HA_XAUUSD_5M — Heiken Ashi trend change scalping, full 12-layer stack."
#include <Trade\Trade.mqh>
input group "=== Identity ==="
input int MagicNumber = 22204002;
input string InpTradeComment = "Psgrowth.com Expert_04002";
input group "=== Risk Management ==="
input bool UseMoneyManagement = true;
input double RiskPercent = 2.0;
input double FixedLotSize = 0.01;
input group "=== Trade Settings ==="
input int StopLossPips = 15;
input int Slippage = 3;
input int ConfirmBars = 2; // Consecutive same-color bars to confirm
input group "=== Filters ==="
input bool UseSpreadFilter = true;
input double MaxSpreadPips = 25.0;
input group "=== Hardening: Risk Management ==="
input int InpMaxConsecLosses = 3; // Max consecutive losses before cooldown (0=disabled)
input int InpCooldownMinutes = 30; // Cooldown minutes after consec losses (0=disabled)
input int InpMaxTradesPerDay = 50; // Maximum trades per day
input double InpMinEquityPercent = 95.0; // Stop trading if equity falls below this % of initial balance
input double InpDailyLossLimitPct= 3.0; // Daily loss limit (% of effective capital)
input double InpWeeklyLossLimitPct= 6.0; // Weekly loss limit (% of effective capital)
input group "=== Hardening: Capital Allocation Cap ==="
// InpCapitalCapEnabled removed — use InpCapitalCapAmount=0 to disable // Enable capital allocation cap
input double InpCapitalCapAmount = 0.0; // Cap amount ($ real money equity)
input double InpCapitalCapFloor = 50.0; // Floor ($); block entries below this
input group "=== Hardening: GMT Sessions ==="
input int InpServerGMTOffset = 0; // Server GMT offset in hours (0=auto-detect via weekend gap)
input int InpLondonStartHour = 7; // London session start (GMT)
input int InpLondonEndHour = 16; // London session end (GMT)
input int InpNYStartHour = 12; // New York session start (GMT)
input int InpNYEndHour = 21; // New York session end (GMT)
input bool InpAvoidAsia = true; // Avoid Asian session
input int InpAsiaStartHour = 0; // Asian session start (GMT)
input int InpAsiaEndHour = 7; // Asian session end (GMT)
input bool InpNewsFilter = false; // Avoid trading near news session opens
input int InpNewsFilterMinutes= 15; // Minutes to avoid around news
CTrade trade;
int handleATR;
datetime lastBarTime = 0;
double currentATR;
//--- Hardening globals
double initialBalance = 0.0;
int g_gmtOffset = 0;
int g_consecLosses = 0;
datetime g_cooldownUntil = 0;الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على MT5 — استخدم وسيطاً موثوقاً بتنفيذ سريع وسبريد منخفض
إكسبرتات مشابهة
عرض جميع الإكسبرتاتإكسبرتات أخرى بنفس استراتيجية أخرى
Pipsgrowth EX01007 Adaptive — إكسبرت أدفايزر تكييفي
Pipsgrowth EX01007 Adaptive — Adaptive signal scorer EA combining EMA crossover, RSI, Heiken Ashi, Bollinger Bands, ATR and volume spike detection int. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX01019 Adaptive — إكسبرت أدفايزر تكييفي
Pipsgrowth EX01019 Adaptive — Self-adaptive market regime EA that auto-detects trending, ranging, volatile, quiet and breakout conditions. Switches be. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX15029 SMC-OrderBlock — إكسبرت أدفايزر إكسبرت أدفايزر
Pipsgrowth EX15029 SMC-OrderBlock — Smart Money Concepts breakout EA — detects order blocks, CHOCH and liquidity sweeps using EMA cross + structure break, A. إكسبرت أدفايزر MT5 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.