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

Pipsgrowth EX15022 SMC-OrderBlock — إكسبرت أدفايزر إكسبرت أدفايزر

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

Pipsgrowth EX15022 SMC-OrderBlock — Market-predictor EA using sinusoidal + fractal (FFT) price components with Monte Carlo simulations and parameter optimiz. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

إن Pipsgrowth EX15022 MarketPredictor هو خبير آلي (EA) بنكهة بحثية، تعتمد إشارة تداوله على محاكاة مونت كارلو للأسعار بدلاً من الاعتماد على حزمة المؤشرات الفنية المعتادة. يصف ترويسة الكود النظام بأنه يتكون من 12 طبقة (REGIME وSIGNAL وENTRY وCONFIRM وNO-TRADE وCAPITAL CAP وRISK وSIZING وMANAGE وEXIT وSCALING وOnTester)، لكن القراءة الدقيقة للمصدر تُظهر أن مسار القرار المباشر يختزل إلى عمليتين: في كل tick واردة، تقوم OptimizeParameters() بإعادة كتابة معاملات النموذج الداخلية، ثم تستدعي PredictNextPrice() دالة SimulatePrice() وتمرر سعراً متنبأً واحداً إلى ExecuteTrade(). مكونات Sinusoidal وFractal (FFT) وSigmoid التي يلمّح إليها الترويسة موجودة كدوال مستقلة — CalculateSinComponent وCalculateFractalComponentFFT وCalculateSigmoidComponent — لكن في PredictNextPrice يتم حساب قيمها المرجعة ثم تجاهلها (يحتفظ المصدر بأسطر الإسناد معلّقة، تاركاً مسار مونت كارلو كمصدر الإشارة الوحيد الموصول بـExecuteTrade).

يُعد محرك مونت كارلو قلب الخبير الآلي. لا تزرع دالة SimulatePrice() بذرة العشوائية بنفسها، لكن OnInit() تستدعي MathSrand((int)TimeCurrent()) لكي تحصل كل جلسة EA على تيار عشوائي زائف خاص بها. داخل الحلقة، تُولّد الدالة MonteCarloSimulations = 1000 سحب. كل سحب ينتج معاملاً منتظماً عشوائياً بين −0.5 و0.5 عبر MathRand()/32767.00.5، ويضرب هذا المعامل في متغير sigma الداخلي (الافتراضي 10.0)، ويضيف الاضطراب إلى P_t (آخر سعر Bid). يُرجَع متوسط تلك الأسعار المضطربة الـ1000 كـP_t1، وهو السعر المتوقع التالي. ولأن كل سحب يتمركز حول P_t باضطراب صغير متماثل، يجلس المتوسط قريباً جداً من آخر Bid، وبالتالي الطريقة الوحيدة لتجاوز التنبؤ لمغلف ±sigma هي أن يدفع انحياز MathRand المتوسط فوق العتبة في tick بعينها — وهو ما تختبره ExecuteTrade() بالضبط.

منطق العتبة في ExecuteTrade() غير متماثل. يُفتح شراء عندما P_t1 > currentPrice + sigma ولا توجد صفقة مفتوحة على الرمز؛ ويُفتح بيع عندما P_t1 < currentPrice − sigma ولا توجد صفقة مفتوحة. يعني حارس PositionSelect(_Symbol) أن الخبير الآلي لا يُكدّس أو يتحوط على نفس الشارت: كل تنفيذ يتبعه انتظار لإشارة الدخول التالية. الأوامر نفسها هي استدعاءات OrderSend خام مع TRADE_ACTION_DEAL وORDER_TYPE_BUY أو ORDER_TYPE_SELL، وحجم ثابت 0.1، وانحراف 10 نقاط، ورقم سحري 22215022، وتعليق 'Psgrowth.com Expert_15022'. لا يملأ الطلب request.sl أو request.tp، لذا تُفتح الصفقات دون وقف خسارة ودون جني أرباح على جانب الوسيط. لا يُستخدم غلاف CTrade في مسار الدخول المباشر — يُعلن الملف عن CTrade g_trade_wrappers_EX15022 في الأسفل، لكن ExecuteTrade تتجاوزه لصالح OrderSend المباشر.

تُستدعى OptimizeParameters() عند كل tick، وليس عند إغلاق شريط جديد، لذا تُعاد معايرة معاملات النموذج باستمرار. تستدعي الدالة CopyClose على آخر 14 شريطاً، وتحسب متوسطاً متحركاً بسيطاً، وتُسند النتيجة إلى متغير mu الداخلي، متجاوزة inputMu لبقية دورة tick. تستدعي أيضاً iATR(_Symbol, PERIOD_CURRENT, 14)، وإذا توفر ATR موجب تُعيّن alpha إلى 0.1 × ATR؛ وإلا تعود alpha إلى قيمة inputAlpha. المدخلات الأخرى — inputBeta (وزن Fractal، الافتراضي 0.1)، وinputGamma (تخميد Fractal، الافتراضي 0.1)، وinputKappa (حساسية Sigmoid، الافتراضي 1.0) — تُحمَّل مرة واحدة في OnInit إلى متغيراتها الداخلية المقابلة ولا تُمَس مرة أخرى في المسار المباشر لأن المكونات التي تستهلكها معلّقة. لذلك فإن تعديل هذه المدخلات الأربعة من مربع حوار مدخلات MT5 لا يغير إلا قيمة لا يقرأها الكود المباشر بعد عودة OnInit.

تُعد CalculateFractalComponentFFT() المكان الوحيد الذي توصل فيه آلة FFT فعلياً. تسحب الدالة 128 سعر إغلاق (N = 128، قوة للعدد 2) عبر CopyClose، وتُحزمها في مصفوفة Complex[] (الجزء الحقيقي = الإغلاق، الجزء التخيلي = 0)، وتستدعي FFT(data, false). إن FFT تنفيذ Cooley–Tukey تعاودي كلاسيكي يقسم المصفوفة إلى مصفوفتين فرعيتين زوجية وفردية، ويتعقب في كلتيهما، ويُعد تركيبهما مع عوامل twiddle معقدة MathCos/MathSin(2πk/n)، ولا يقسم على 2 إلا في الاتجاه العكسي. بعد التحويل، تحسب CalculateFractalComponentFFT طيف المقدار، وتمسح المؤشرات 1..N/2 لإيجاد التردد المهيمن (متجاوزة مكوّن DC عند المؤشر 0)، وتُرجع beta × (maxIndex / N). القيمة المُرجعة هي إزاحة السعر المتوقعة-الفركتلية، لكن الكود المباشر لا يستخدمها.

تتبع CalculateSinComponent() وCalculateSigmoidComponent() النمط نفسه: مُعرّفتان لكن غير نشطتين. تختار Sin عشوائياً omega في [0, 2π] لكل استدعاء وتُرجع alpha × sin(omega × t) حيث t هو عدد الأشرطة. تجلب Sigmoid قيمة iATR(_Symbol, PERIOD_CURRENT, 14) وتحسب Delta_t / (1 / (1 + exp(−kappa × (P_t_local − mu)))). كلتا الدالتين لا يُمكن الوصول إليهما إلا من PredictNextPrice، وفي PredictNextPrice الأسطر التي ستسندهما وتجمعهما معلّقة. النتيجة ملف يقرأ كدفتر ملاحظات بحثي: الرياضيات كلها موجودة، لكن منطق التداول الفعلي هو المقارنة الأبسط بكثير P_t + اضطراب عشوائي ضد ±sigma.

المساعدات الثلاث لإعادة المحاولة في أسفل الملف — TryClose_EX15022 وTryClosePartial_EX15022 وTryModify_EX15022 — لا تُستدعى في أي مكان بالمصدر. كل منها تكرر حتى 3 مرات، وتستدعي g_trade_wrappers_EX15022.PositionClose / PositionClosePartial / PositionModify، وتعيد المحاولة عند TRADE_RETCODE_REQUOTE أو TRADE_RETCODE_TIMEOUT أو TRADE_RETCODE_PRICE_OFF أو TRADE_RETCODE_PRICE_CHANGED مع Sleep 200 مللي أو 100 مللي، وتنكسر عند أي رمز إرجاع آخر. إنها موجودة كسقالات لطبقة إدارة SL/TP مستقبلية لا ينفذها الإصدار الحالي. لا توجد نقطة تعادل، ولا trailing stop، ولا خروج قائم على الوقت، ولا إغلاق سلة، ولا وقف حقوق ملكية، ولا سقف خسارة يومية. تظل الصفقة التي فتحتها ExecuteTrade مفتوحة حتى نداء الهامش من جانب الوسيط أو حتى يتدخل المتداول يدوياً.

الحد الأدنى الموصى به للإيداع في قاعدة البيانات هو 100$ ومستوى المخاطرة MEDIUM، وهي نقطة بداية معقولة نظراً لحجم اللوت الثابت 0.1 وغياب الأوامر الوقائية وعتبة sigma التي تحرس الدخول. على مستخدمي الخبير الآلي الذين يريدونه أن يطلق فعلاً على شارت ذهب نموذجي أن يدركوا أن sigma الافتراضي 10.0 مُقوَّم بوحدات السعر الخام وليس بالنقاط، لذا على XAUUSD يكون مغلف ±10 مساوياً تقريباً لـ±1$ من حركة السعر، ونادراً ما يتجاوز متوسط مونت كارلو هذا. تشديد sigma إلى 0.5 أو 1.0، أو توسيع التنبؤ بضبط MonteCarloSimulations ونطاق المعامل العشوائي، هو الرافعة العملية — مربع حوار المدخلات هو المكان الوحيد لإجراء تلك التغييرات. ينبغي أن يعامل قارئ يدرس المصدر ملصق عائلة SMC-OrderBlock على أنه تاريخي، وزعم الـ12-طبقة على أنه نية تصميمية: ما يُشغَّل في Strategy Tester هو نظام عبور-عتبة مونت كارلو دون أوامر وقف على جانب الوسيط.

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

تزرع OnInit بذرة MathSrand بـTimeCurrent وتخزن آخر Bid كـP_t. يستدعي OnTick أولاً OptimizeParameters() التي تنسخ 14 سعر إغلاق، وتُعيد حساب mu كمتوسطها البسيط، وتُعيد حساب alpha كـ0.1 × iATR(14) عندما يكون ATR موجباً، وإلا تترك alpha على القيمة الافتراضية للمدخل. تستدعي PredictNextPrice() بعد ذلك SYMBOL_BID لتحديث P_t، وتستدعي SimulatePrice() لمتوسط 1000 اضطراب منتظم عشوائي على P_t داخل مغلف مرجح بـsigma، وتسلم P_t1 الناتج إلى ExecuteTrade(). تقارن ExecuteTrade() بين P_t1 وcurrentPrice وتُطلق أمر سوق واحد بحجم 0.1 لوت إذا تجاوز التنبؤ عتبة ±sigma على الجانب المناسب. دوال مكونات Sinusoidal وFractal (FFT) وSigmoid مُعرّفة في الملف لكن معلّقة من المسار المباشر، لذا النموذج الرياضي الوحيد الذي يعمل فعلاً هو متوسط مونت كارلو بالإضافة إلى اختبار عتبة ±sigma. مساعدات إعادة المحاولة الثلاث لـCTrade في أسفل الملف (TryClose_EX15022 وTryClosePartial_EX15022 وTryModify_EX15022) مُعرّفة لكن غير موصولة بمسار الدخول/الخروج المباشر، لذا تُترك إدارة الصفقة بعد التنفيذ الأولي للوسيط والمتداول.

إشارة الدخول

في كل tick يستدعي الخبير الآلي OptimizeParameters() لإعادة تثبيت mu عند متوسط 14 شريطاً وalpha عند 0.1 × ATR(14)، ثم يشغّل SimulatePrice() لمتوسط 1000 اضطراب عشوائي P_t ± منتظم[-0.5, 0.5] × sigma. تفتح ExecuteTrade() شراءً إذا تجاوز السعر المتوقع currentPrice + sigma ولا توجد صفقة مفتوحة على الرمز، أو بيعاً إذا انخفض تحت currentPrice − sigma. التنفيذ OrderSend خام بحجم 0.1 وانحراف 10 نقاط ورقم سحري 22215022، ودون SL/TP مُرفق.

إشارة الخروج

لا يوجد خروج مبرمج. تبقى الصفقة مفتوحة حتى نداء هامش من الوسيط أو حتى يغلقها المتداول يدوياً. لا تُعكّس ExecuteTrade() الصفقة ولا تُخرج منها تدريجياً؛ الحارس الوحيد على جانب الدخول هو PositionSelect(_Symbol) الذي يمنع تكديس صفقة ثانية في الاتجاه نفسه.

وقف الخسارة

لا يُرفق أي وقف خسارة. لا يملأ طلب OrderSend حقل request.sl، لذا تحمل الصفقات دون وقف وقائي على جانب الوسيط. يذكر الترويسة RISK وEXIT ضمن الـ12 طبقة، لكن لا يُنفّذ أي منهما في مسار الكود المباشر.

جني الأرباح

لا يُرفق أي جني أرباح. لا يملأ طلب OrderSend حقل request.tp أيضاً، لذا تُغلق الصفقات الرابحة فقط من الوسيط (نداء الهامش) أو بتدخل يدوي. منطق الإشارة العكسية الذي يُغلق صفقة رابحة غير موجود في هذا الإصدار.

الأنسب لـ

الحد الأدنى الموصى به للرصيد 100$، مخاطرة متوسطة (MEDIUMXAUUSD على M5 أو H1 (يقترح المصدر أن M5 يعمل من M5 إلى H1 ويذكر العملات الرئيسية والمعادن/الذهب كقابلة للنقل). لأن متوسط مونت كارلو يجلس على جزء من النقطة من آخر Bid وsigma=10.0 الافتراضي مُقوَّم بوحدات السعر الخام، ينبغي على المتداولين الذين يريدون تشغيل الخبير الآلي فعلياً خفض sigma بشكل كبير (مثلاً 0.52.0 على XAUUSD) وتشغيله على حساب ECN/RAW فروقات مع زمن استجابة منخفض. غياب أوامر الوقف على جانب الوسيط يعني أن هذا EA تعليمي/بحثي — حافظ على حجم الصفقة عند 0.1 لوت وراقب يدوياً حتى تُضاف ضوابط المخاطرة.

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

Pipsgrowth EX15022 SMC-OrderBlock — تحليل منطق الاستراتيجية (من كود .mq5)

العائلة: SMC-OrderBlock الماجيك: 22215022 الإصدار: 2.00

الوصف: Market-predictor EA using sinusoidal + fractal (FFT) price components with Monte Carlo simulations and parameter optimiza- tion to forecast next-price direction, placing buy/sell when predicted price exceeds a sigma threshold. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • CalculateSinComponent()
  • CalculateFractalComponentFFT()
  • CalculateSigmoidComponent()
  • SimulatePrice()
  • PredictNextPrice()
  • ExecuteTrade()
  • OptimizeParameters()
  • FFT()
  • TryClose_EX15022()
  • TryClosePartial_EX15022()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX15022 SMC-OrderBlock — Execution Flow (from source analysis)
// Family: SMC-OrderBlock
// Market-predictor EA using sinusoidal + fractal (FFT) price components with Monte Carlo simulations and parameter optimiza- tion to forecast next-price direction, placing buy/sell when predicted price exceeds a sigma threshold. 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
الرموز المُحسّنة:
XAUUSD
الأطر الزمنية المُحسّنة:
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اسحب الإكسبرت على رسم بياني يطابق الإطار الزمني الموصى به
  7. 7هيّء المعاملات وفقاً للجدول في هذه الصفحة
  8. 8فعّل Allow Algo Trading واضغط OK

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

المعاملالافتراضيالوصف
magicNumber22215022Magic Number
InpTradeComment"Psgrowth.com Expert_15022"Trade Comment
inputAlpha0.1Amplitude for the Sinusoidal component
inputBeta0.1Weight for the Fractal component
inputGamma0.1Damping constant for the Fractal component
inputKappa1.0Sensitivity parameter for the Sigmoid function
inputMu1.0Mean of price movements
inputSigma10.0Threshold for Buy/Sell
MonteCarloSimulations1000Number of Monte Carlo simulations
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX15022.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX15022 MarketPredictor — FFT/fractal + Monte Carlo price prediction scalper, full 12-layer stack."
#include <Trade\Trade.mqh>

// Structure to represent complex numbers
struct Complex
{
    double re; // Real part of the complex number
    double im; // Imaginary part of the complex number
};

// Input parameters that can be adjusted by the user
input group "=== Identity ==="
input int    magicNumber = 22215022;      // Magic Number
input string InpTradeComment = "Psgrowth.com Expert_15022"; // Trade Comment
input group "=== Strategy Parameters ==="
input double inputAlpha = 0.1;          // Amplitude for the Sinusoidal component
input double inputBeta = 0.1;           // Weight for the Fractal component
input double inputGamma = 0.1;          // Damping constant for the Fractal component
input double inputKappa = 1.0;          // Sensitivity parameter for the Sigmoid function
input double inputMu = 1.0;             // Mean of price movements
input double inputSigma = 10.0;         // Threshold for Buy/Sell
input int MonteCarloSimulations = 1000; // Number of Monte Carlo simulations

// Internal variables to store optimized parameters
double alpha;
double beta;
double gamma;
double kappa;
double mu;
double sigma;

// Global variable to store the current price
double P_t;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
    // Initialize internal variables with input values
    alpha = inputAlpha;
    beta = inputBeta;
    gamma = inputGamma;
    kappa = inputKappa;
    mu = inputMu;
    sigma = inputSigma;
    
    // Initialize the current price with the symbol's current Bid price
    P_t = SymbolInfoDouble(_Symbol, SYMBOL_BID);
    
    // Seed the random number generator with the current time
    MathSrand((int)TimeCurrent());
    
    // Additional initializations can be added here if necessary
    
    return(INIT_SUCCEEDED); // Return initialization status

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

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

الوسوم:ex15022smc-orderblockpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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