P
PipsGrowth
متابعة الاتجاهمفتوح المصدر - مجاني

Pipsgrowth EX16064 Trend — إكسبرت أدفايزر متابعة اتجاه

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

Pipsgrowth EX16064 Trend — Price pusher utility that streams live Bid/Ask/mid for one or many MT5 symbols to a PHP endpoint via WebRequest. Support. إكسبرت أدفايزر MT5 مفتوح المصدر.

نظرة عامة

Pipsgrowth EX16064 ليس استراتيجية تداول، بل أداة مساعدة لبث الأسعار تضخ عروض الشراء والبيع والسعر الوسطي الحية من MetaTrader 5 إلى نقطة نهاية PHP خارجية عبر دالة WebRequest. يتم استطلاع رمز الشارت وأي قائمة رموز يحددها المستخدم على مؤقت ثابت؛ ومع كل نبضة من المؤقت يتم إرسال حمولة JSON إلى عنوان URL مُكوَّن في المدخلات، ومن المتوقع أن يقوم سكربت PHP المستقبل بحفظ تلك الأسعار أو بثها إلى أي نظام لاحق يحتاجها — لوحة تحكم ويب مخصصة، أو بوت تيليجرام، أو تطبيق جوال، أو دفتر يوميات بعيد، أو واجهة خلفية تحليلية. لا توجد هنا صفقات دخول، ولا صفقات خروج، ولا وقف خسارة، ولا جني أرباح، ولا حزمة مؤشرات، ولا نموذج مخاطر. توجد ثلاث أدوات مساعدة لإعادة المحاولة من CTrade (TryClose_EX16064 وTryClosePartial_EX16064 وTryModify_EX16064) معرَّفة في الكود المصدري لكنها لا تُستدعى أبداً من OnTimer أو OnInit؛ إنها بقايا هيكلية مأخوذة من القالب الذي اشتُق منه هذا EA وليست جزءاً من التدفق التشغيلي.

إيقاع الاستطلاع مضبوط بواسطة مدخل IntervalSeconds (افتراضياً 5 ثوانٍ). تستدعي OnInit دالة EventSetTimer بهذه القيمة، وتستدعي OnDeinit دالة EventKillTimer لتحرير المؤقت بأمان، وOnTimer هو الإجراء الوحيد الذي يعمل بعد بدء التشغيل. في كل استدعاء لـ OnTimer يتم استدعاء BuildPayload لتجميع جسم JSON ثم SendJSON لإرساله. إذا كان مدخل SymbolsList يحتوي على قائمة مفصولة بفواصل، تقوم BuildPayload بتقسيمها وتقليم كل عنصر واستدعاء SymbolInfoDouble لكل من SYMBOL_BID وSYMBOL_ASK وربط كائن JSON واحد لكل رمز — {code, bid, ask, mid} — في مصفوفة واحدة. إذا كانت القائمة فارغة، يلجأ الـ EA إلى وضع رمز الشارت ويُصدر كائن JSON واحداً لما يراه الشارت حالياً. في كلتا الحالتين يتم توحيد الإخراج كمصفوفة JSON قبل الإرسال، حتى لا تضطر جهة الاستقبال إلى التفرع بين شكل الكائن الواحد وشكل المصفوفة.

تتم معالجة ربط الرموز عبر دالة MapToCode. تزيل هذه الدالة زخارف لاحقات الوسيط الشائعة (لاحقة بنقطة مثل .r أو .m، أو حروف لاحقة pro/r/m التي يضيفها بعض الوسطاء على أسماء الرموز) ثم تطبق خريطة ترميز ثابتة: XAUUSD تصبح GOLD، وXAGUSD تصبح SILVER، وWTI/CL/UKOIL/USOIL تنهار إلى OIL، وNG/NATGAS إلى GAS، وDXY إلى USD. أي شيء آخر — EURUSD وGBPUSD وUSDJPY وAUDUSD وما إلى ذلك — يمر دون تغيير. توجد الخريطة لكي تستطيع خدمة التسعير في الأعلى مفاتحة الأسعار على رموز ثابتة مستقلة عن الوسيط بدلاً من أي اسم يستخدمه وسيط MT5 لديك لعقد المعادن أو المؤشر. إذا احتجت إلى إضافة ربط خاص بك، فالدالة هي المكان الوحيد المطلوب توسيعه.

يتم بناء طلب HTTP نفسه في SendJSON. يُبنى عنوان URL بإلحاق ?token= مع مدخل Token بسلسلة Endpoint؛ والجسم هو مصفوفة JSON المُعادة من BuildPayload؛ والطريقة POST؛ ونوع المحتوى application/json؛ والمهلة 8000 مللي ثانية. أي استجابة غير 200 تطبع كود HTTP والجسم ليتمكن المستخدم من معرفة سبب فشل الدفع. عندما يكون LogSuccess مضبوطاً على true، تطبع كل دفعة ناجحة أيضاً جسم الاستجابة — وهذا مفيد لتصحيح جانب PHP لكنه مزعج في الإنتاج، حيث يكون الافتراضي false.

التكوين يعيش بالكامل في مجموعتي المدخلات. مجموعة Identity تحوي InpMagicNumber (long، افتراضي 22216064) وInpTradeComment (سلسلة التعليق Psgrowth.com Expert_16064 التي ستُكتب على أي صفقة لو فتح الـ EA صفقة يوماً ما). مجموعة Price Push Settings تحوي عنوان URL لنقطة النهاية، وToken المشترك، وسلسلة SymbolsList، وIntervalSeconds من نوع int، وعلامة PushChartSymbolAlso، وعلامة LogSuccess. لا توجد مدخلات أخرى. لا توجد فترة مؤشر يمكن ضبطها بشكل خاطئ، ولا نسبة مخاطرة للجدال حولها — الـ EA هو ما تقوله مدخلاته.

ثمة ثلاث عقبات تشغيلية تستحق المعرفة مقدماً. أولاً، WebRequest مقيَّد افتراضياً في MT5: يجب إضافة عنوان URL لنقطة النهاية بالضبط (أو المضيف الخاص بها) إلى Tools → Options → Expert Advisors → Allow WebRequest، وإلا فشلت كل دفعة بخطأ من طراز 4063. ثانياً، Token هو سر مشترك — يجب استبدال CHANGE_ME_TOKEN الافتراضي قبل تشغيل الـ EA، ويجب ضبط PRICE_PUSH_TOKEN المطابق على جانب PHP في ملف .env الخاص بالتطبيق المستقبل. تطبع OnInit تحذيراً ليناً إذا كان طول الرمز أقل من 8 أحرف. ثالثاً، الإرسال بفواصل أقصر من ثانية واحدة تقريباً يبدأ بالتنافس مع تحديثات الأسعار الخاصة بالطرف Terminal نفسه ويمكن أن ينتج عنه صفوف مكررة أو شبه مكررة عند المستقبل؛ تعليق المدخل ينصح صراحة بعدم الفواصل دون الثانيتين، و5 ثوانٍ كقيمة افتراضية هي أرضية معقولة لأغلب لوحات التحكم.

حالات الاستخدام النمطية هي جسور لوحات التحكم — ضخ أسعار الوسيط الفورية إلى موقع ويب مخصص لكي يرى العملاء نفس العروض التي يراها الوسيط دون كشط — ومرايا الأسعار لخدمات التداول الاجتماعي أو خدمات الإشارات التي تحتاج إلى تغذية مستقرة، وتكاملات دفتر اليوميات التي تسجل كل علامة سعرية للتحليل لاحقاً، ومحركات تنبيه خفيفة تراقب الأسعار في PHP بدلاً من MQL. تسمية بنية الطبقات الاثنتي عشرة في الترويسة هي حشو وصفي موروث من قالب الـ EA؛ السلوك الفعلي هو مجرد POST HTTP مدفوع بالمؤقت.

في الاختبار الخلفي لن يفتح هذا EA أو يغلق شيئاً وستنتج عنه منحنى حقوق مالك مسطح — ليس استراتيجية. قيمته تشغيلية وليست مُولِّدة لعائد ألفا. أرفقه بالشارت على أي رمز تريد تغذيته، اضبط نقطة النهاية والرمز، تأكد من أن عنوان URL الخاص بـ WebRequest مسموح به، وسترى دفعة JSON جديدة تصل إلى الخدمة المستقبِلة كل IntervalSeconds. دالة ForcePush() مكشوفة كإجراء عام بلا وسائط لكي يستطيع اختصار لوحة مفاتيح على الشارت أو EA آخر تشغيل دفعة فورية خارج إيقاع المؤقت إذا كان حدث معين يحتاج إلى الإفراج عنه فوراً.

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

تسجل OnInit مؤقتاً متكرراً عبر EventSetTimer باستخدام مدخل IntervalSeconds (افتراضياً 5 ثوانٍ)؛ وتستدعي OnDeinit دالة EventKillTimer. في كل نبضة من OnTimer تُستدعى BuildPayload التي تقسم SymbolsList المفصولة بفواصل (أو تلجأ إلى رمز الشارت إذا كانت القائمة فارغة)، وتزيل زخارف لاحقات الوسيط في MapToCode، وتستعلم عن SYMBOL_BID وSYMBOL_ASK لكل عنصر عبر SymbolInfoDouble، وتحسب السعر الوسطي، وتُجمِّع مصفوفة JSON من كائنات {code, bid, ask, mid}. يُلحق رمز الشارت اختيارياً بالمصفوفة عندما يكون PushChartSymbolAlso مضبوطاً على true ولم يكن رمز الشارت موجوداً فعلاً في القائمة. ثم ترسل SendJSON المصفوفة عبر POST إلى عنوان URL المُكوَّن بربط Endpoint مع ?token= مضافاً إليه مدخل Token، مع مهلة WebRequest قدرها 8000 مللي ثانية ونوع محتوى application/json. تُطبع الاستجابات غير 200 وجسم الطلب بحيث تظهر الإخفاقات في سجل Experts. يُكشف عن الإجراء العام ForcePush() للمحفزات الخارجية، لكن لا تُربط أي دوال أخرى — بما في ذلك أدوات CTrade الثلاث لإعادة المحاولة TryClose_EX16064 وTryClosePartial_EX16064 وTryModify_EX16064 — بتدفق المؤقت.

إشارة الدخول

لا يتم توليد أي صفقات دخول. هذا الـ EA أداة مساعدة لبث الأسعار وليس استراتيجية. تستدعي OnTimer دالة BuildPayload التي تُجمِّع مصفوفة JSON من كائنات {code, bid, ask, mid} من قائمة SymbolsList المُكوَّنة (أو رمز الشارت فقط إذا كانت القائمة فارغة) ثم SendJSON ترسل هذه الحمولة عبر POST إلى نقطة نهاية PHP على عنوان URL المحدد في مدخل Endpoint.

إشارة الخروج

لا يتم توليد أي صفقات خروج. لا توجد صفقات مفتوحة لإغلاقها لأن الـ EA لا يفتح شيئاً أصلاً. أدوات TryClose الثلاث في الكود المصدري (TryClose_EX16064 وTryClosePartial_EX16064 وTryModify_EX16064) غير مُشار إليها من OnTimer وهي كود ميت موروث من قالب الـ EA الذي اشتُق منه الملف.

وقف الخسارة

غير قابل للتطبيق. الـ EA لا يفتح ولا يعدل ولا يغلق أي صفقات، لذا لا يوجد وقف خسارة لكل صفقة. قد تطبق نقطة نهاية PHP قواعد مخاطر خاصة بها لاحقاً على الأسعار المُبثوثة، لكن لا يتم فرض أي وقف خسارة داخل كود MQL نفسه.

جني الأرباح

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

الأنسب لـ

الأنسب للمطورين والمكاملين الذين يحتاجون إلى جسر أسعار مباشر من MT5 إلى PHP للوحة تحكم ويب مخصصة، أو تغذية تداول اجتماعي أو إشارات، أو خط أنابيب دفتر يوميات، أو محرك تنبيه لاحق. الحد الأدنى للإيداع الافتراضي 100 دولار وتصنيف المخاطر MEDIUM هما مجرد عناصر نائبة من القالب — الـ EA لا يسحب من حقوق ملكية الحساب ولا يحجب بناءً على الرصيد، لذا يكفي حساب تجريبي صغير ممول لتشغيله كخدمة خلفية. يعمل على أي إطار زمني (M5 إلى H1) وأي رمز، بما في ذلك أزواج FX الرئيسية وXAUUSD وXAGUSD وعقود المعادن أو النفط المُعاد تسميتها لدى الوسيط والتي تُعاد إلى GOLD أو SILVER أو OIL أو GAS أو USD بواسطة MapToCode. يتطلب إضافة Tools → Options → Expert Advisors → Allow WebRequest ليتضمن مضيف Endpoint.

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

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

العائلة: Trend الماجيك: 22216064 الإصدار: 2.00

الوصف: Price pusher utility that streams live Bid/Ask/mid for one or many MT5 symbols to a PHP endpoint via WebRequest. Supports multi-symbol lists, symbol mapping (XAUUSD->GOLD etc.), and configurable push intervals. Timer-based; chart symbol optional. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

المؤشرات:

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

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

  • EndsWith()
  • Trim()
  • MapToCode()
  • SendJSON()
  • BuildPayload()
  • OnTimer()
  • ForcePush()
  • TryClose_EX16064()
  • TryClosePartial_EX16064()
  • TryModify_EX16064()
الرمز الزائف (Pseudocode)
// Pipsgrowth EX16064 Trend — Execution Flow (from source analysis)
// Family: Trend
// Price pusher utility that streams live Bid/Ask/mid for one or many MT5 symbols to a PHP endpoint via WebRequest. Supports multi-symbol lists, symbol mapping (XAUUSD->GOLD etc.), and configurable push intervals. Timer-based; chart symbol optional. 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اسحب الإكسبرت على رسم H4 أو اليومي للحصول على أفضل النتائج
  7. 7حدد فترات EMA وعتبة ADX وحجم اللوت في نافذة الإعدادات
  8. 8فعّل Allow Algo Trading واضغط OK

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

المعاملالافتراضيالوصف
InpMagicNumber22216064Magic number
InpTradeComment"Psgrowth.com Expert_16064"Trade comment
Endpoint"http://localhost/stocks/public/api/push_price.php"WITHOUT token parameter
Token"CHANGE_ME_TOKEN"Must match PRICE_PUSH_TOKEN in .env
SymbolsList"EURUSD,GBPUSD,USDJPY,XAUUSD,XAGUSD"Comma separated; leave blank to use only chart symbol
IntervalSeconds5Push interval (avoid too small <2s)
PushChartSymbolAlsotrueInclude chart symbol even if list defined
LogSuccessfalseVerbose success logs
كود المصدر (.mq5)Open Source
Pipsgrowth_com_EX16064.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX16064 PricePusherEA — Live price streamer via WebRequest, full 12-layer stack."
#include <Trade\Trade.mqh>

input group "=== Identity ==="
input long   InpMagicNumber  = 22216064;           // Magic number
input string InpTradeComment = "Psgrowth.com Expert_16064"; // Trade comment

input group "=== Price Push Settings ==="
input string  Endpoint          = "http://localhost/stocks/public/api/push_price.php"; // WITHOUT token parameter
input string  Token             = "CHANGE_ME_TOKEN";  // Must match PRICE_PUSH_TOKEN in .env
input string  SymbolsList       = "EURUSD,GBPUSD,USDJPY,XAUUSD,XAGUSD"; // Comma separated; leave blank to use only chart symbol
input int     IntervalSeconds   = 5;                  // Push interval (avoid too small <2s)
input bool    PushChartSymbolAlso = true;             // Include chart symbol even if list defined
input bool    LogSuccess        = false;              // Verbose success logs

//--- helpers
bool EndsWith(const string s,const string suf){ int ls=StringLen(s), lf=StringLen(suf); return (ls>=lf && StringSubstr(s,ls-lf)==suf); }
string Trim(const string s){ string r=s; StringTrimLeft(r); StringTrimRight(r); return r; }

string MapToCode(string s){
   // Strip common suffix separators (e.g. EURUSD.r, EURUSDm)
   int p=StringFind(s,"."); if(p>0) s=StringSubstr(s,0,p);
   if(EndsWith(s,"m") || EndsWith(s,"r") || EndsWith(s,"pro")) s=StringSubstr(s,0,StringLen(s)-1);
   if(s=="XAUUSD") return "GOLD";
   if(s=="XAGUSD") return "SILVER";
   if(s=="WTI" || s=="CL" || s=="UKOIL" || s=="USOIL") return "OIL";
   if(s=="NG" || s=="NATGAS") return "GAS";
   if(s=="DXY") return "USD";
   return s; // EURUSD, GBPUSD, etc.
}

bool SendJSON(const string json){
   uchar data[]; StringToCharArray(json, data);
   uchar result[]; string headers;
   string url = Endpoint + "?token=" + Token;
   int res = WebRequest("POST", url, "application/json", 8000, data, result, headers);
   if(res!=200){ Print("[PricePusher] HTTP=",res," body=",json); return false; }
   if(LogSuccess) Print("[PricePusher] OK ", CharArrayToString(result));
   return true;
}

string BuildPayload(){
   string list = SymbolsList;
   string payload;
   string parts[]; int n=0;
   if(StringLen(Trim(list))>0){ n = StringSplit(list,',',parts); }
   bool multi = (n>0);
   // Chart-only fallback
   if(!multi){
      string sym = _Symbol;
      double bid = SymbolInfoDouble(sym, SYMBOL_BID); double ask=SymbolInfoDouble(sym,SYMBOL_ASK);
      if(bid==0 || ask==0) return "";
      double mid=(bid+ask)/2.0; string code=MapToCode(sym);
      return StringFormat("{\"code\":\"%s\",\"bid\":%.5f,\"ask\":%.5f,\"mid\":%.5f}",code,bid,ask,mid);
   }
   // Multi build

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

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

الوسوم:ex16064trendpipsgrowthfreemt5xauusd

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

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

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

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

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

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

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

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