Pipsgrowth EX05009 Hedge — إكسبرت أدفايزر إكسبرت أدفايزر
إكسبرت أدفايزر MT5 مفتوح المصدر · EURUSD، GBPUSD · M5
Pipsgrowth EX05009 Hedge — 3D correlation matrix visualization tool that displays rolling correlation coefficients between multiple FX pairs in a r. إكسبرت أدفايزر MT5 مفتوح المصدر.
نظرة عامة
ليست كل خبيرة (Expert Advisor) في ميتاتريدر 5 تُرسل أوامر. Pipsgrowth EX05009 Hedge أداة تصوير ثلاثي الأبعاد لمصفوفة الارتباط — تستقر على الشارت كمشهد DirectX، وتستوعب ما يصل إلى عشرة أزواج عملات دفعة واحدة، وترسم معامل ارتباط بيرسون المتحرّك بين كل زوجين كقضيب داخل شبكة ثلاثية الأبعاد قابلة للدوران. تتدرج ألوان القضبان من الأحمر عبر الرمادي إلى الأخضر: الأحمر يعني ارتباطاً عكسياً قوياً، والرمادي يعني انعدام الارتباط، والأخضر يعني تزامناً كاملاً في الحركة. تُثبَّت الخلايا القُطرية على لون رمادي-أبيض مسطّح لأن كل رمز يرتبط بنفسه ارتباطاً تاماً. المصفوفة هي المُخرَج الوحيد؛ الخبيرة لا تستدعي OrderSend ولا تلمس خادم التداول ولا تحجز هامشاً. لمن يبني محفظة، أو يبحث عن ساق تحوط، أو يحاول اكتشاف لحظة انكسار ارتباط قائم بين زوجين، فإن هذه الإجابة المرئية غالباً ما تساوي أكثر من أي منحنى حقوق ملكية آخر.
تبدأ خطّة البيانات داخل PrepareData() بقائمة InpSymbolsList المفصولة بفواصل، حيث يقوم المحلّل بتقسيمها والتحقق من وجودها في نافذة Market Watch. كل رمز غير موجود يُرفَض برسالة Print() وتُعاد الخبيرة بـ INIT_FAILED. تتضمن القائمة الافتراضية EURUSD وEURGBP وEURCHF وEURJPY وGBPUSD وGBPCHF وGBPJPY وUSDCHF وUSDJPY وCHFJPY، أي الأزواج الأربعة الرئيسية وعملاتها المُتقاطعة مع الين والفرنك، وهي نقطة الانطلاق الطبيعية لأي دراسة ارتباط في سوق العملات. يُثبَّت الإطار الزمني برمجياً على PERIOD_D1 داخل PrepareData() بصرف النظر عن الشارت الذي تُسحب إليه الخبيرة، لأن العوائد اليومية هي الحبيبات المعيارية لأبحاث الارتباط متعدد الأزواج. بعدها تستطلع SymbolsDataReady() علامة SERIES_SYNCHRONIZED لكل رمز لما يصل إلى 100 محاولة مع نوم 50 مللي ثانية، وتسجّل أحدث تاريخ بداية متاح لتبدأ نافذة الحساب من حيث تتوفر بيانات فعلية لكل الأزواج.
بمجرد محاذاة السلاسل، تقوم CopyRatesTimeSynchronized() بملء الفجوات في التقويم بإغلاق صفري. ثم تُسقط FilterNonzeroRates() أي طابع زمني يفتقد إليه ولو رمز واحد، تاركةً كتلة نظيفة خالية من الفجوات يُسهم فيها كل رمز بإغلاق حقيقي. وتحول PreparePriceReturnsInPoints() هذه الكتلة إلى فروق سعرية لكل شمعة مقسومة على SYMBOL_POINT، فيصبح مصفوف العائد الناتج متماسكاً أبعاديا بين أزواج تتفاوت أحجام نقاطها المطلق. تُبنى المصفوفة التي تغذّي المُصَيِّر عبر UpdateCorrelationMatrix() التي تستدعي CalculatePearsonCoefficient() على كل زوج (i, j) ضمن نافذة متحرّكة من 100 شمعة، يتقدّمها المؤقّت شمعة واحدة في كل خطوة.
الرياضيات هنا هي صيغة بيرسون الكلاسيكية لحاصل ضرب العزوم. يجمع CorrelationPearson() قيم sum_X وsum_Y وsum_XY وsquareSum_X وsquareSum_Y على امتداد N شمعة النافذة، ويُعيد (N × ΣXY − ΣX × ΣY) / √((N × ΣX² − (ΣX)²) × (N × ΣY² − (ΣY)²)). الناتج محصور بنيّاً بين [−1, +1]. يتشارك نصفا المصفوفة المتماثلة القيمة نفسها (m_data[i·m_data_size + j] = m_data[j·m_data_size + i])، لذا فإن لون الخلية هو تدرّج واحد من الأحمر إلى الأخضر يُحسب عبر DXComputeColorRedToGreen(value × 0.5 + 0.5). ويُعاد القطر (i == j) إلى رمادي بنصف الكثافة.
التصيير هو النقطة التي تؤدّي فيها الأداة دورها. يُنشئ PrepareBoxes() صندوق CDXBox لكل خلية في شبكة m_data_size × m_data_size، ويُسجّل كل واحد منها في مشهد CCanvas3D، ويضبط لمعة بيضاء بقوة 128، ثم تُعيد UpdateBoxes() حساب الترجمة والتوسيع لكل خلية في كل إعادة رسم. BAR_WIDTH يساوي 1.25 وBAR_HEIGHT يساوي 5.0 بوحدات المشهد، فالارتباط الإيجابي التام يمدّ القضيب إلى خمس وحدات، بينما يغوص الارتباط السلبي التام إلى −5. يُكتَب طابع زمني أسود بخط Arial بحجم 64 في الزاوية العلوية اليسرى من البطاقة البيتيّة ليعرف المستخدم دائماً أي شريحة من الـ 100 شمعة ينظر إليها. كما يُرسَم اسم الرمز لكل زوج على المحور الأكثر قابلية للقراءة وفق زاوية الكاميرا الحالية — ويحافظ UpdateCamera() وOnMouseEvent() على تزامن الكاميرا مع سحب المستخدم.
التفاعل يعتمد على لوحة المفاتيح والفأرة فقط. السحب بالنقر يُدوّر العرض: الحركة الأفقية تُحدِّث m_angle_y، والعمودية تُحدِّث m_angle_x، وتُقيَّد زاوية الميلان عند ±0.49π حتى لا تنقلب الكاميرا رأساً على عقب. تبدّل المفاتيح الرقمية من 0 إلى 9 ظهور الرموز في المصفوفة عبر SetSelected() — وهي مفيدة حين يربك زوج منخفض الارتباط الصورة. أما مفتاح ESC فيستدعي ExpertRemove() ليعود الشارت إلى وضعه الطبيعي. يُحرِّك EventSetMillisecondTimer بسرعة 10 مللي ثانية التشغيل: كل علامة تُحرّك m_index_current بمقدار m_index_step_bars (افتراضياً 1)، ويعكس المؤقّت اتجاهه عند m_index_boundary1 وm_index_boundary2 ليلفّ الحركة فوق التاريخ المتاح كاملاً من دون تخطّي المصفوفة. يتولّى OnChartChange() التعامل مع تغيير حجم الشارت فيستدعي m_canvas.Resize() وDXContextSetSize() لإبقاء الإسقاط الثلاثي الأبعاد صحيحاً بعد أن يسحب المستخدم نافذة الطرفية.
المُدخلات قليلة عمداً لأن الأداة حاسبة وليست استراتيجية. يستطيع المستخدم تغيير الرقم السحري، وسلسلة تعليق الأمر التي تسجّلها الخبيرة كهوية، ولون الخلفية (clrWhiteSmoke افتراضياً، مع قلب لون النص تلقائياً إلى الأبيض على الخلفيات الداكنة عبر فحص الإنارة في Create())، وقائمة الرموز نفسها. أمّا مُدخلَا التاريخ — InpStartDate (افتراضياً 2015.01.01) وInpFinishDate (افتراضياً 2019.11.01) — فيُحدّدان الشريحة التاريخية التي يكتسح فوقها معامل بيرسون. لا يؤثّر أيّ من هذه المُدخلات على تنفيذ أوامر، لأنه لا يوجد تنفيذ أوامر أصلاً؛ بل تشكّل الصورة المرئية ذاتها.
تتراكم حالات الاستخدام فوق التصوير. شغّل المصفوفة على سلة من الأزواج الرئيسية وأنت تطوّر خبير متعدد الأزواج، وسيلتقط عينك قضيب EURUSD/USDCHF يمتد نحو −1 في الأسابيع الهادئة ثم ينهار أثناء صدمات أخبار الدولار — أي فحص سلامة مجاني ومسبَق الصنع لمعرفة ما إذا كانت ساق التحوط تؤدّي وظيفتها. واستعمل المصفوفة نفسها على محفظة من الأزواج المتقاطعة لرصد تحوّلات الحالة حيث ينفصل زوج كان ارتباطه −0.7 ولم يعد يعمل كمُنوِّع. النافذة اليومية المكونة من 100 شمعة هي المعيار الوحيد الذي لا يستطيع المستخدم تخطّيه، وهو القرار الصائب — النوافذ القصيرة تُفرط في ملاءمة الضوضاء، والحبيبات اليومية هي ما يرسو عليه بقيّة أدبيات مشتقات العملات. يُعيد OnTester() ثابتاً 0.0 لأنه لا توجد صفقات لتسجيل نقاط؛ ببساطة سترى المُحسِّن الثابت ويُرتّب الخبيرة وفقاً له. الخطر الذي يجب إدارته هنا هو الوقت الذي تقضيه محدّقاً في الصورة، لا منحنى حقوق الملكية.
تفاصيل الاستراتيجية
تستطلع SymbolsDataReady() علامة SERIES_SYNCHRONIZED لكل رمز في InpSymbolsList حتى تتصافى جميع السلاسل، ثم تملأ CopyRatesTimeSynchronized() فجوات التقويم بإغلاقات صفرية، وتُسقط FilterNonzeroRates() أي طابع زمني ينقصه ولو رمز واحد. تحوّل PreparePriceReturnsInPoints() الإغلاقات المتصافى إلى عوائد نقطية لكل رمز، ويمشي EventSetMillisecondTimer بسرعة 10 مللي ثانية بنافذة متحرّكة من 100 شمعة فوق هذه السلسلة، مستدعياً UpdateCorrelationMatrix() لإعادة ملء مصفوفة m_data بمعاملات بيرسون في كل علامة. يُخصّص PrepareBoxes() صندوق CDXBox واحداً لكل خلية في المصفوفة، وتُعيد UpdateBoxes() تحجيم الترجمة والامتداد الرأسي لكل صندوق بحسب قيمة الارتباط، ممررةً الناتج عبر تدرّج أحمر-أخضر بواسطة DXComputeColorRedToGreen. تدوّر OnMouseEvent() الكاميرا استجابةً للسحب، وتُعيد OnChartChange() تحجيم سياق DirectX عند تغيير حجم نافذة الشارت، وتُبدّل المفاتيح الرقمية من 0 إلى 9 الرموز المعروضة عبر SetSelected().
لا توجد صفقات للدخول. الشرط المسبق للعرض هو أن تنجح PrepareData() في التحقق من وجود رمزين على الأقل في نافذة Market Watch، وأن تكون سلاسل D1 الخاصة بهما متزامنة من InpStartDate إلى InpFinishDate، وأن يبقى ما لا يقل عن 100 إغلاق غير صفري لكل رمز بعد FilterNonzeroRates(). إن أعادت PrepareData() قيمة false تُجهض الخبيرة بـ INIT_FAILED ولا يحدث أي تصيير.
لا توجد صفقات للخروج. تُغلق الأداة حين يضغط المستخدم مفتاح ESC، الذي تلتقطه OnChartEvent() وتمرّره إلى ExpertRemove(). أما الضغط على المفاتيح الرقمية من 0 إلى 9 فيُبدّل ظهور رمز بعينه في المصفوفة عبر SetSelected()؛ وأي مفتاح آخر يُتجاهَل.
لا ينطبق — الخبيرة لا تُرسل أوامراً أبداً، فلا يوجد وقف خسارة لكل صفقة. طبقة الأمان الوحيدة هي التحقق من المُدخلات داخل OnInit(): يجب أن يكون InpMagicNumber غير صفري، وInpSymbolsList غير فارغ، وInpStartDate يسبق InpFinishDate، وإلا تُعيد الخبيرة INIT_PARAMETERS_INCORRECT.
لا ينطبق — لا يوجد هدف ربح لأنه لا تُفتح أي أوامر. يُعيد OnTester() ثابتاً 0.0؛ ولا يملك مختبر الاستراتيجيات معياراً يُحسِّن على أساسه لخبيرة تصوير، فيرتّبها المُحسِّن كعبور مسطّح.
شغّل الأداة على حساب تجريبي برصيد 100 دولار مع تفعيل شارتي EURUSD وGBPUSD في نافذة Market Watch وإضافة بعض المتقاطعات للسياق — الخبيرة تقرأ قائمة الرموز لا رمز الشارت، لذا يصلح أي شارت. نافذة الـ 100 شمعة اليومية ثابتة، لذا التهيئة المفيدة الوحيدة هي سلة الرموز (الافتراضية عشرة أزواج رئيسية إضافة إلى متقاطعات الين والفرنك هي الأكثر إفادة) والمدى الزمني (الأطول أكثر استقراراً، الأقصر يستجيب بسرعة لتحولات الحالة الأخيرة). هي أداة بحث لبناء المحافظ، والتنقيب عن ساق تحوط، ورصد تحوّل حالة الارتباط، لا استراتيجية بحدّ ذاتها؛ اقترنها بخبير تداول متعدد الأزواج للتحقق من أن التحوط يقوم بوظيفته.
منطق الاستراتيجية
Pipsgrowth EX05009 Hedge — تحليل منطق الاستراتيجية (من كود .mq5)
العائلة: Hedge
الماجيك: 22205009
الإصدار: 2.00
الوصف: 3D correlation matrix visualization tool that displays rolling correlation coefficients between multiple FX pairs in a rotatable 3D bar chart. Useful for identifying correlation shifts and hedging opportunities across currency pairs
المؤشرات:
- مؤشرات قياسية
الدوال الرئيسية:
OnChartEvent()OnTimer()GetTimeframeMinutes()
// Pipsgrowth EX05009 Hedge — Execution Flow (from source analysis)
// Family: Hedge
// 3D correlation matrix visualization tool that displays rolling correlation coefficients between multiple FX pairs in a rotatable 3D bar chart. Useful for identifying correlation shifts and hedging opportunities across currency pairs
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تأكد أن وسيطك يسمح بالتحوط (الاحتفاظ بمراكز معاكسة في آن واحد)
- 3افتح برنامج MetaTrader 5 على حاسوبك
- 4من القائمة العلوية اختر File → Open Data Folder
- 5انتقل إلى مجلد MQL5 → Experts والصق الملف هناك
- 6في MT5، انقر بالزر الأيمن على Expert Advisors في لوحة Navigator → Refresh
- 7اسحب الإكسبرت على رسم بياني وحدد مستوى تفعيل التحوط والتعرض الأقصى
- 8فعّل Allow Algo Trading واضغط OK
معاملات الإكسبرت
| المعامل | الافتراضي | الوصف |
|---|---|---|
| InpMagicNumber | 22205009 | Magic Number |
| InpTradeComment | "Psgrowth.com Expert_05009" | Trade Comment |
| InpBackground | clrWhiteSmoke | Background color |
| InpSymbolsList | "EURUSD,EURGBP,EURCHF,EURJPY,GBPUSD,GBPCHF,GBPJPY,USDCHF,USDJPY,CHFJPY" | +------------------------------------------------------------------+ |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX05009 Correlation_Matrix_3D — 3D correlation matrix visualization, full 12-layer stack."
#include <Controls\Picture.mqh>
#include <Canvas\Canvas3D.mqh>
#include <Canvas\DX\DXBox.mqh>
//--- constants
#define BAR_WIDTH 1.25f
#define BAR_HEIGHT 5.0f
//--- input data
input group "=== Identity ==="
input int InpMagicNumber = 22205009; // Magic Number
input string InpTradeComment = "Psgrowth.com Expert_05009"; // Trade Comment
input group "=== Visualization ==="
input color InpBackground = clrWhiteSmoke; // Background color
input datetime InpStartDate = D'01.01.2015';
input datetime InpFinishDate = D'01.11.2019';
input string InpSymbolsList = "EURUSD,EURGBP,EURCHF,EURJPY,GBPUSD,GBPCHF,GBPJPY,USDCHF,USDJPY,CHFJPY";
//+------------------------------------------------------------------+
//| sSymbolData |
//+------------------------------------------------------------------+
struct sSymbolData
{
string name;
//--- synchronized close prices
MqlRates rates[];
//--- percent of empty bars
double zero_data_percent;
//--- times and returns (in points)
datetime returns_times[];
double returns_prices_points[];
//--- array with current data window
double current_data_array[];
bool synchronized_flag;
datetime history_first_date;
};
//+------------------------------------------------------------------+
//| Application window |
//+------------------------------------------------------------------+
class CCanvas3DWindow
{
protected:
CPicture m_picture;
CCanvas3D m_canvas;
//---
int m_width;
int m_height;
uint m_background_color;
uint m_text_color;
//--- function data
double m_data[];
int m_data_size;
//--- source functions data
CDXBox m_boxes[];
الكود المصدري الكامل متاح عند التحميل
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.
تحذير صريح: لأغراض تعليمية فقط
تحذير صريح: هذا الإكسبرت لأغراض تعليمية واختبارية فقط. لا تستخدمه بأموال حقيقية. اختبره فقط على حساب تجريبي. التداول بأموال حقيقية ينطوي على مخاطر فقدان رأس المال. لا يشكل هذا نصيحة استثمارية.
وسطاء موصى بهم لهذا الإكسبرت
هذه الروبوتات تعمل على MT5 — استخدم وسيطاً موثوقاً بتنفيذ سريع وسبريد منخفض
إكسبرتات مشابهة
عرض جميع الإكسبرتاتإكسبرتات أخرى بنفس استراتيجية التحوط
Pipsgrowth EX05003 Hedge — إكسبرت أدفايزر إكسبرت أدفايزر
Pipsgrowth EX05003 Hedge — "Slow up, fast down" USDJPY asymmetry. LONG engine = H1 SMC Order-Block retest + D1 MA50 uptrend. SHORT engine = Previou. إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX05001 Hedge — إكسبرت أدفايزر إكسبرت أدفايزر
Pipsgrowth EX05001 Hedge — RSI-extreme reversion signal on closed bar; hedged grid default OFF, ATR-spaced, lot-capped (mult <=1.3, max 5 levels). . إكسبرت أدفايزر MT5 مفتوح المصدر.
Pipsgrowth EX05007 Hedge — إكسبرت أدفايزر إكسبرت أدفايزر
Pipsgrowth EX05007 Hedge — Correlation hedging EA that trades EURUSD/GBPUSD correlation divergence. When the two highly correlated pairs diverge, i. إكسبرت أدفايزر MT5 مفتوح المصدر.
مجتمع المستخدمين
لأغراض تعليمية فقط. لا تستخدمه بأموال حقيقية. اختبر على حساب تجريبي فقط.