P
PipsGrowth
التحوطمفتوح المصدر - مجاني

Pipsgrowth EX05008 Hedge — إكسبرت أدفايزر إكسبرت أدفايزر

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

Pipsgrowth EX05008 Hedge — 3D correlation matrix visualization tool that displays rolling correlation coefficients between multiple FX pairs in a r. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

EX05008 Correlation Matrix 3D ليس روبوت تداول، بل أداة تحليل بحتة. عند تحميله على الشارت، يُخفي شموع الشارت الأصلي، ويفتح لوحة DirectX بحجم نافذة الشارت، ويرسم معامل الارتباط بيرسون المتحرك بين كل زوج في السلة التي يحددها المستخدم كشبكة من الأعمدة ثلاثية الأبعاد. القطر رمادي وثابت (كل زوج يرتبط مع نفسه بـ 1.0). كل عمود خارج القطر يُرسم بارتفاع رأسي يساوي معامل الارتباط على آخر 100 شمعة يومية، بإشارة تجعل الارتباطات الموجبة ترتفع فوق الأرضية والسالبة تنخفض تحتها. تلوين الأعمدة يتم عبر DXComputeColorRedToGreen: قيمة قريبة من +1 تعطي أخضر عميق، وقيمة قريبة من -1 تعطي أحمر عميق، والقيم القريبة من الصفر تنضغط في قصاصة على الأرضية. يسحب المستخدم بزر الفأرة الأيسر لتدوير الكاميرا، يضغط مفتاح رقم (0-9) لكتم زوج واحد من المصفوفة، ويضغط ESC لإزالة الأداة وإعادة الشارت. لا توجد أوامر شراء أو بيع، ولا وقف خسارة، ولا جني أرباح، ولا بوابة مخاطر، لأن الأداة لا تفتح أي صفقة. وظيفتها أن تُظهر للمستخدم بنظرة واحدة أي الأزواج تتحرك معاً وأيها انفصل، ليتخذ قرار محفظة متعددة الأرجل بعين مفتوحة.

مسار البيانات هو الجزء الجاد. PrepareData() تقسم InpSymbolsList على الفواصل وتستدعي SymbolExist() على كل رمز؛ أي رمز غير موجود في Market Watch يفشل التهيئة بأكملها. بعد تحديد السلة، تثبت الأداة الإطار الزمني الداخلي على PERIOD_D1، وتمشي في التقويم بين InpStartDate وInpFinishDate (الافتراضي 2015-01-01 إلى 2019-11-01)، وتبني شبكة زمنية متصلة. CopyRatesTimeSynchronized() تسحب أسعار الخادم لكل زوج على هذا النطاق، ثم تضعها على الشبكة بالفهرس. أي طابع زمني يفتقده زوج معين يُملأ بإغلاق 0.0 كعلامة فجوة. التمريرة الأولى تبقي هذه العلامات. التمريرة الثانية FilterNonzeroRates() تحذف كل طابع زمني ينقصه زوج واحد على الأقل، فتترك البيانات التي تداولت فيها كل أزواج N فعلاً. ثم تحوّل PreparePriceReturnsInPoints() فرق إغلاق كل شمعة إلى حجم نقطة الزوج نفسه — وليس عائد نسبة مئوية — وتنتج سلسلة الفروق بالنقاط التي تتوقعها صيغة بيرسون. العمل بالنقاط اختيار متعمد: يبقي الحساب ثابتاً تجاه المستويات السعرية المختلفة جداً لليورو/دولار (1.10) والدولار/ين (150.00)، ويعني أن نفس النافذة من الشموع تعطي نفس الارتباط لرمز اصطناعي وآخر حقيقي.

محرك الارتباط تطبيق كتاب مدرسي. CorrelationPearson() تأخذ مصفوفتين X وY متساويتي الطول من حجم N وتُرجع r = (N·ΣXY − ΣX·ΣY) / sqrt((N·ΣX² − (ΣX)²)·(N·ΣY² − (ΣY)²)). إذا كان المقام صفراً — وهو ما يحدث إذا كانت أي من السلسلتين ثابتة — تُرجع 0.0 بدلاً من القسمة. CalculatePearsonCoefficient() هي الغلاف الذي ينسخ الشريحة الصحيحة من سلسلة العوائد لكل زوج في مخزن عمل ويسلم المصفوفتين إلى CorrelationPearson(). تمشي UpdateCorrelationMatrix() في المثلث العلوي من المصفوفة m_data_size × m_data_size، وتستدعي CalculatePearsonCoefficient() لكل زوج (i, j)، وتعكس النتيجة إلى (j, i) لتبقى المصفوفة متماثلة. القطر يُضبط يدوياً على 1.0. تُعاد حساب المصفوفة كاملة عند كل علامة timer على نافذة الـ100 شمعة الحالية، وهذا ما يتيح للمستخدم رؤية انجراف الارتباط كعملية مستمرة بدلاً من جدول ثابت.

خط أنبوب العرض ثلاثي الأبعاد مبني على ثلاث فئات Canvas في MQL5 — CCanvas3D وCDXBox وCPicture — يتم تضمينها عبر #include. تُخصّص PrepareBoxes() شبكة m_data_size × m_data_size من بدائيات CDXBox، وتحدد اللون الانعكاسي لكل صندوق إلى أبيض بشفافية 0.5 وقوة انعكاس 128، وتضيفه إلى مشهد الإدخال في اللوحة. تمشي UpdateBoxes() في المصفوفة، وتطبق ترجمة وتدرجاً على كل صندوق ليساوي ارتفاعه معامل الارتباط (المعاملات الموجبة تدفع الصندوق للأعلى من الأرضية، والسالبة تترجم الصندوق تحت الأرضية وتدرج المقدار الموجب — لا يوجد تدرج سالب، الهندسة تنعكس في Y)، ثم تضرب مصفوفة النموذج في مصفوفة العرض-الإسقاط المركبة لإسقاط كل صندوق في فضاء الشاشة. تُحسب مواضع تسميات الرموز على المحورين X وZ في نفس الحلقة عبر DXVec4Transform. تدور UpdateCamera() بالكاميرا حول الأصل بنصف قطر 30 حسب m_angle_x وm_angle_y للمستخدم؛ الإضاءة ثابتة بضوء اتجاهي أبيض دافئ عند (0.25, −0.25, 1.0) وملء محيط بارد. يُرسم الإطار الأول عند Y = π/12 وX = π/4 — عرض ثلاثة أرباع يُظهر الواجهة والجانب الأيمن من المصفوفة في وقت واحد، بدون تداخل على الأقطار.

التفاعل صغير عن قصد. سحب الزر الأيسر في OnMouseEvent() يحدّث m_angle_y وm_angle_x من فرق السحب مقسوماً على 300، ثم يقيّد m_angle_x عند ±0.49π حتى لا تنقلب الكاميرا فوق القطب. الضغط على 0 إلى 9 يستدعي SetSelected()، التي تقلب قيمة بوليان لكل زوج؛ في UpdateBoxes() أي صندوق يكون كل من صفّه وعموده مكتوماً ينضغط إلى قصاصة 0.001f ليتمكن المستخدم من كتم الأزواج بدون فقدان محاذاة الشبكة. تتقدم المصفوفة تلقائياً عبر نطاق التاريخ: OnTimer() تعمل كل 10 مللي ثانية (مضبوطة بـ EventSetMillisecondTimer(10) في OnInit)، وتزيد m_index_current بمقدار m_index_step_bars، وتعيد حساب المصفوفة، وتعيد الرسم. عندما يصل الفهرس إلى أي من حدود سلسلة العوائد المتزامنة، تنعكس الخطوة تلقائياً، فيستطيع المستخدم ترك التصور يعمل ومشاهدة سطح الارتباط يتأرجح ذهاباً وإياباً عبر نطاق التاريخ بأكمله. يُرسم تاريخ الحافة اليمنى الحالية بخط Arial أسود 64 بكسل عند البكسل (25, 15) من اللوحة ليعرف المستخدم دائماً شريحة الـ100 شمعة المعروضة. الضغط على ESC يستدعي ExpertRemove()، ويُشغّل OnDeinit، ويُدمر اللوحة، ويُستعاد الشارت الأصلي بـ ChartSetInteger(CHART_SHOW, true).

التكوين متفرق لأن الأداة لا تتداول. InpMagicNumber (افتراضي 22205008) مجرد علامة — لا يوجد تتبع صفقات مفهرس عليه — لكنه الحقل الوحيد الذي يتيح لخط أنابيب السجلات تحديد أي شارت يشغّل التصور. InpTradeComment يحمل "Psgrowth.com Expert_05008" للسبب نفسه. InpBackground هو لون مسح اللوحة؛ الافتراضي clrWhiteSmoke فاتح بما يكفي لقلب لون النص إلى clrNavy، والخلفية الداكنة تقلبه إلى clrWhite. InpStartDate وInpFinishDate يبدآن افتراضياً على نافذة خمس سنوات من الشموع اليومية؛ النطاق الأطول جيد، لكن تاريخ الشارت يجب أن يغطيه. InpSymbolsList افتراضياً عشرة أزواج رئيسية وفرعية (EURUSD, EURGBP, EURCHF, EURJPY, GBPUSD, GBPCHF, GBPJPY, USDCHF, USDJPY, CHFJPY)؛ يمكن للمستخدم تقليصها إلى زوجين لمحور واحد، أو توسيعها إلى خمسة عشر إذا بقيت شبكة الأعمدة مقروءة، أو استبدالها بسلاسل إقليمية. الثوابت الصلبة الوحيدة هي BAR_WIDTH = 1.25f وBAR_HEIGHT = 5.0f، وكلاهما مضبوط للسلة الافتراضية ذات العشرة.

ما يفعله المستخدم فعلاً بالصورة. الأقطار ضوضاء. الخلايا المثيرة خارج القطر. خلية قريبة من -1.0 (أحمر عميق، عمود نازل كبير) تعني أن الزوجين تحركا متعاكسين على آخر 100 شمعة يومية — محفظة تشتري أحدهما وتبيع الآخر أقرب إلى الحياد السوقي من رهان اتجاهي. خلية قريبة من +1.0 (أخضر عميق، عمود صاعد كبير) تعني أن الزوجين يتحركان معاً — مضاعفة الرهان على كلا الساقين تضاعف التعرض بدلاً من تنويعه. الغرض من تحريك المصفوفة عبر نطاق التاريخ هو مشاهدة خلايا كانت خضراء في 2015 تتحول إلى حمراء في 2017، ثم تعود إلى محايدة في 2019، وتحديد اللحظات التي ينقلب فيها الهيكل بين الأزواج. خريطة حرارية ثنائية الأبعاد ثابتة لا تستطيع فعل هذا؛ عمود ثلاثي الأبعاد يتقدم شريطاً واحداً لكل علامة يستطيع.

ملاحظات عملية لإعداد حي. الأداة تخفي الشارت الأصلي بـ ChartSetInteger(0, CHART_SHOW, false) في Create() وتستعيده في OnDeinit()، فترك التصور يعمل لا يؤثر على أي EA آخر أو تداول يدوي على نفس Terminal. اللوحة m_canvas تسمية بيتماب ولا تعتمد على OpenCL أو وسيط محدد. OnTester() تُرجع ثابت 0.0 لأنه لا توجد لياقة اختبار خلفي لتحسين. النشر الطبيعي على شارت ثانٍ (أو شارت رمز غير مستخدم) مع كل الأزواج العشرة الافتراضية في Market Watch، وتاريخ اليومي الكامل للوسيط متاح من InpStartDate فصاعداً، ورأس مال 100 دولار على الأقل كما تتوقع بيانات مخاطر المشروع — الأداة لن تستهلك هذا الرأس مال فعلياً، لكن وجوده يضمن أن الوسيط لا يحد من تغذية الرمز بينما تستطلع الأداة الأسعار اليومية لعشر أدوات في وقت واحد.

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

يخفي EX05008 شارت المضيف في OnInit، ويبني نافذة CCanvas3D بحجم منطقة بكسلات الشارت، ويُسجّل بدائية CDXBox واحدة لكل خلية في المصفوفة في مشهد الإدخال DirectX. تحل PrepareData() كل زوج مفصول بفاصلة في InpSymbolsList، وتستدعي SymbolExist() لحذف أي رمز غير موجود في Market Watch، وتثبت الإطار الزمني العامل على PERIOD_D1، ثم تعيد CopyRatesTimeSynchronized() بناء شبكة تقويم متصلة وتكتب إغلاق صفر في الشموع التي يفتقد فيها أي زوج. تحذف FilterNonzeroRates() كل طابع زمني ينقصه حتى زوج واحد، تاركة سلسلة أسعار N أزواج تداولت في كل شمعة؛ ثم تحوّل PreparePriceReturnsInPoints() كل فرق إغلاق إلى حجم نقطة الزوج نفسه، منتجةً سلسلة عوائد الفروق التي تتوقعها صيغة بيرسون. تُرجع CorrelationPearson() معامل r على نافذة الـ100 شمعة الحالية لأي زوجين، وتمشي UpdateCorrelationMatrix() في المثلث العلوي وتعكسه، وتعيد UpdateBoxes() تدرج كل صندوق ليساوي ارتفاعه معامل الارتباط. يسحب المستخدم بزر الفأرة الأيسر للتدوير، ويضغط 0-9 لكتم زوج، ويضغط ESC لإزالة الـ EA؛ OnTimer() عند 10 مللي ثانية تقدم الفهرس شمعة واحدة لكل علامة لتحريك المصفوفة عبر نطاق التاريخ.

إشارة الدخول

هذا الـ EA لا يفتح صفقات. 'الدخول' هو تسلسل OnInit: يُخفى الشارت، وتُنشأ نافذة CCanvas3D بحجم بكسلات الشارت، وتتحقق PrepareData() من InpSymbolsList مقابل Market Watch، وتبني CopyRatesTimeSynchronized() التقويم اليومي المتصل من InpStartDate إلى InpFinishDate، وتحذف FilterNonzeroRates() كل طابع زمني يفتقد فيه أي زوج، وتبدأ المصفوفة بالتحرك من فهرس الشمعة 200 من سلسلة العوائد الناجية. لا يوجد إرسال أوامر شراء/بيع، ولا تتبع صفقات مفهرس على MagicNumber، ولا بوابة مخاطر.

إشارة الخروج

هذا الـ EA لا يحتوي منطق خروج لأنه لا يحمل أي صفقات. ينتهي التصور عندما يضغط المستخدم ESC، الذي يستدعي ExpertRemove() ويُشغّل OnDeinit — تُدمر اللوحة، ويُستعاد شارت المضيف بـ ChartSetInteger(CHART_SHOW, true)، ويُفرّغ الـ EA. لا يوجد خروج بوقف خسارة، ولا خروج قائم على إشارة، ولا خروج زمني، لأن شيئاً لم يُفتح قط.

وقف الخسارة

غير قابل للتطبيق. لا توجد صفقات، وبالتالي لا يوجد وقف خسارة لكل صفقة. الحماية الوحيدة هيكلية: يخفي الـ EA الشارت أثناء التشغيل بـ ChartSetInteger(CHART_SHOW, false) ويستعيده في OnDeinit، فترك التصور يعمل لا يمكن أن يؤثر على أي EA آخر أو تداول يدوي على نفس Terminal. نطاق البيانات محدود بـ InpStartDate وInpFinishDate، مما يقيد ما تتكرر عليه المصفوفة.

جني الأرباح

غير قابل للتطبيق. لا توجد صفقات، وبالتالي لا يوجد منطق جني أرباح. المصفوفة ثلاثية الأبعاد ليس لها قيمة هدف تُغلق عندها أي صفقة؛ بدلاً من ذلك تدور الكاميرا حول سطح الارتباط كاملاً ويقرر المستخدم أي خلايا تمثل معلومات قابلة للتنفيذ. الخلايا الحمراء العميقة القريبة من -1.0 هي المكافئ العملي لإشارة جني الأرباح للمتداول الذي يستخدم التصور — مؤشر واضح لتصميم صفقة زوج محايدة سوقياً حول هاتين الساقين.

الأنسب لـ

المتداولون الذين يديرون محفظة من EAs ويحتاجون لمعرفة الأزواج المفصولة حالياً قبل إضافة ساق جديدة. الأكثر فائدة على حساب تجريبي مع كل الرموز العشرة الافتراضية (EURUSD, EURGBP, EURCHF, EURJPY, GBPUSD, GBPCHF, GBPJPY, USDCHF, USDJPY, CHFJPY) في Market Watch ورأس مال 100 دولار على الأقل حتى لا يحد الوسيط من تغذية الرمز. الإطار اليومي اليومي مكتوب داخل الـ EA، فيكمل ولا يستبدل EA تداول M5 أو M15 — اترك هذا التصور على شارت ثانٍ، وليس نفس شارت استراتيجيتك.

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

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

العائلة: Hedge الماجيك: 22205008 الإصدار: 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()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX05008 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)

ملف التحسين

الوسطاء المُحسّنون:
ExnessIC Markets
الرموز المُحسّنة:
EURUSDGBPUSD
الأطر الزمنية المُحسّنة:
M5

كيفية تثبيت الإكسبرت على MT5

  1. 1حمّل ملف .mq5 بالضغط على زر التحميل أعلاه
  2. 2تأكد أن وسيطك يسمح بالتحوط (الاحتفاظ بمراكز معاكسة في آن واحد)
  3. 3افتح برنامج MetaTrader 5 على حاسوبك
  4. 4من القائمة العلوية اختر File → Open Data Folder
  5. 5انتقل إلى مجلد MQL5 → Experts والصق الملف هناك
  6. 6في MT5، انقر بالزر الأيمن على Expert Advisors في لوحة Navigator → Refresh
  7. 7اسحب الإكسبرت على رسم بياني وحدد مستوى تفعيل التحوط والتعرض الأقصى
  8. 8فعّل Allow Algo Trading واضغط OK

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

المعاملالافتراضيالوصف
InpMagicNumber22205008Magic Number
InpTradeComment"Psgrowth.com Expert_05008"Trade Comment
InpBackgroundclrWhiteSmokeBackground color
InpSymbolsList"EURUSD,EURGBP,EURCHF,EURJPY,GBPUSD,GBPCHF,GBPJPY,USDCHF,USDJPY,CHFJPY"+------------------------------------------------------------------+
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX05008.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX05008 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  = 22205008;    // Magic Number
input string   InpTradeComment = "Psgrowth.com Expert_05008"; // 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[];

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

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

الوسوم:ex05008hedgepipsgrowthfreemt5eurusdgbpusd

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

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

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

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

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

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

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

اسم الملفPipsgrowth_com_EX05008.mq5
حجم الملف40.1 KB
الإصدارv2.00
PlatformMetaTrader 5
نوع الملف.mq5 Source
الاستراتيجيةالتحوط
المخاطرةمخاطرة عالية
الأطر الزمنية
M5
أزواج العملات
EURUSDGBPUSD
الحد الأدنى للإيداع$100