Events in MQL: Difference between revisions

From binaryoption
Jump to navigation Jump to search
Баннер1
(@pipegas_WP)
 
(@pipegas_WP)
 
Line 1: Line 1:
== الأحداث في لغة MQL ==
=== الأحداث في لغة MQL5 ===


'''الأحداث''' في لغة MQL4/MQL5 (MetaQuotes Language) هي وظائف خاصة يتم استدعاؤها تلقائيًا بواسطة منصة MetaTrader 4 أو MetaTrader 5 استجابةً لأحداث معينة تحدث في السوق أو داخل المنصة نفسها. فهم الأحداث ضروري لتطوير [[الخبير المستشار]] (Expert Advisor - EA) و [[المؤشرات المخصصة]] (Custom Indicators) الفعالة. هذه المقالة موجهة للمبتدئين وتهدف إلى تقديم شرح مفصل للأحداث الأكثر شيوعًا وكيفية استخدامها.
'''الأحداث في لغة MQL5''' هي آليات أساسية تسمح لبرامجك (الخوارزميات، المؤشرات، النصوص البرمجية) بالتفاعل مع بيئة التداول في منصة [[ميتاتريدر 5]].  إنها بمثابة "إشعارات" من المنصة تخبر برنامجك بوقوع شيء ما، مما يسمح له بالاستجابة وفقًا لتعليماتك. فهم الأحداث أمر بالغ الأهمية لتطوير استراتيجيات تداول آلية فعالة ومؤشرات مخصصة.


== أنواع الأحداث ==
== أنواع الأحداث ==


يمكن تصنيف الأحداث في MQL إلى عدة أنواع رئيسية:
يمكن تصنيف الأحداث في MQL5 إلى عدة أنواع رئيسية:


* '''أحداث التداول (Trade Events):''' ترتبط بتنفيذ الصفقات، مثل فتح صفقة، إغلاق صفقة، تعديل صفقة.
* '''أحداث الرسم البياني (Chart Events):''' تحدث هذه الأحداث مباشرة على الرسم البياني، مثل إضافة شمعة جديدة، تغيير السعر، أو نقرة الماوس.
* '''أحداث الرسم البياني (Chart Events):''' تحدث على الرسم البياني، مثل تغيير الفترة الزمنية، إضافة أو إزالة مؤشر، تغيير رمز العملة.
* '''أحداث التداول (Trade Events):''' تتعلق هذه الأحداث بعمليات التداول، مثل فتح صفقة، إغلاق صفقة، أو تغيير حالة صفقة.
* '''أحداث المنصة (Platform Events):''' تتعلق بأحداث على مستوى المنصة، مثل بدء تشغيل المنصة، إيقافها، استقبال بيانات تداول جديدة.
* '''أحداث الحساب (Account Events):''' تتعلق هذه الأحداث بحساب التداول، مثل تغيير الرصيد، أو إضافة/سحب الأموال.
* '''أحداث التوقيت (Timer Events):''' يتم استدعاؤها بشكل دوري بناءً على فترة زمنية محددة.
* '''أحداث النظام (System Events):''' تتعلق هذه الأحداث بنظام منصة ميتاتريدر نفسه، مثل بدء تشغيل المنصة، أو إغلاقها.
* '''أحداث التقويم (Calendar Events):''' تتعلق هذه الأحداث بأخبار اقتصادية مهمة أو أحداث أخرى يتم تحديدها في [[التقويم الاقتصادي]].


== أحداث التداول الأكثر شيوعًا ==
== أحداث الرسم البياني الأكثر شيوعًا ==


| الحدث | الوصف | متى يتم استدعاؤه |
| الحدث | الوصف | الدالة المعالجة |
|---|---|---|
|---|---|---|
| [[OnTrade]] | يتم استدعاؤه عند كل عملية تداول جديدة. | عند فتح صفقة، إغلاق صفقة، أو تعديل صفقة. |
| ONCHARTUPDATE | يحدث بعد كل تحديث للرسم البياني. | OnChartUpdate() |
| [[OnTradeTransaction]] | يوفر معلومات مفصلة حول كل معاملة تداول. | عند تنفيذ أي معاملة تداول، مثل أوامر السوق أو المعلقات. |
| ONTIMER | يحدث بشكل دوري بناءً على فترة زمنية محددة. | OnTimer() |
| [[OnOrder]] | يتم استدعاؤه عند تغيير حالة أمر تداول. | عند فتح، تعديل، أو إغلاق أمر تداول. |
| ONCLICK | يحدث عند نقر المستخدم على الرسم البياني. | OnClick() |
| [[OnOrderSend]] | يتم استدعاؤه بعد إرسال أمر تداول. | مباشرة بعد إرسال أمر تداول عبر الخبير المستشار. |
| ONLEVEL | يحدث عند عبور السعر لمستوى معين (مثل مستوى فيبوناتشي). | OnLevel() |
| [[OnOrderUpdate]] | يتم استدعاؤه عند تحديث معلومات أمر تداول. | عند تغيير سعر التنفيذ، وقف الخسارة، أو جني الأرباح. |
| ONNEWBAR | يحدث عند تشكيل شمعة جديدة. | OnNewBar() |


'''مثال:''' استخدام حدث OnTrade لتتبع الصفقات المفتوحة:
== أحداث التداول الأكثر شيوعًا ==


```mql
| الحدث | الوصف | الدالة المعالجة |
void OnTrade()
|---|---|---|
  {
| ONTRADE | يحدث عند فتح أو إغلاق صفقة. | OnTrade() |
  Print("تم تنفيذ صفقة جديدة!");
| ONTRADE_TRANSACTION | يحدث عند كل تغيير في صفقة (مثل تعديل أمر الإيقاف). | OnTrade_Transaction() |
  // يمكن هنا إضافة كود لتسجيل الصفقة، تحليلها، أو اتخاذ إجراء بناءً عليها.
| ONORDER | يحدث عند إنشاء أو تعديل أو حذف أمر تداول. | OnOrder() |
  }
```


== أحداث الرسم البياني الأكثر شيوعًا ==
== معالجة الأحداث ==


| الحدث | الوصف | متى يتم استدعاؤه |
لكي يستجيب برنامجك لأي حدث، يجب عليك تعريف دالة معالجة لهذا الحدثيتم استدعاء هذه الدالة تلقائيًا من قبل منصة ميتاتريدر عندما يقع الحدث. على سبيل المثال، لمعالجة حدث ONNEWBAR، يجب عليك تعريف دالة باسم OnNewBar() في برنامجك.
|---|---|---|
| [[OnChartEvent]] | يسمح بالاستجابة لأحداث مختلفة على الرسم البياني. | عند النقر على الرسم البياني، تغيير الفترة الزمنية، إضافة أو إزالة مؤشر. |
| [[OnCalculate]] | يتم استدعاؤه في كل دورة حسابية للرسم البياني. | قبل رسم كل شمعة جديدة على الرسم البياني. |
| [[OnInit]] | يتم استدعاؤه عند إرفاق المؤشر أو الخبير المستشار بالرسم البياني. | عند بدء تشغيل المؤشر أو الخبير المستشار. |
| [[OnDeinit]] | يتم استدعاؤه عند إزالة المؤشر أو الخبير المستشار من الرسم البياني. | عند إيقاف تشغيل المؤشر أو الخبير المستشار. |


'''مثال:''' استخدام حدث OnChartEvent للكشف عن النقر على الرسم البياني:
'''مثال (معالجة حدث ONNEWBAR):'''


```mql
```mql5
void OnChartEvent(const int id,
void OnNewBar()
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
   {
   {
   if(id == CHARTEVENT_OBJECT_CLICK)
   // كود يتم تنفيذه عند تشكيل شمعة جديدة
    {
  Print("شمعة جديدة تم تشكيلها!");
      Print("تم النقر على كائن!");
  // يمكنك هنا تنفيذ استراتيجية تداول، أو تحديث مؤشر، إلخ.
    }
   }
   }
```
```


== أحداث المنصة ==
== استخدام الأحداث في استراتيجيات التداول ==
 
| الحدث | الوصف | متى يتم استدعاؤه |
|---|---|---|
| [[OnStart]] | يتم استدعاؤه عند بدء تشغيل المنصة. | عند فتح MetaTrader. |
| [[OnStop]] | يتم استدعاؤه عند إيقاف تشغيل المنصة. | عند إغلاق MetaTrader. |
| [[OnAccount]] | يتم استدعاؤه عند تغيير معلومات الحساب. | عند تغيير الرصيد، الهامش، أو الربح/الخسارة. |
 
== أحداث التوقيت ==
 
| الحدث | الوصف | متى يتم استدعاؤه |
|---|---|---|
| [[OnTimer]] | يتم استدعاؤه بشكل دوري بناءً على فترة زمنية محددة. | كل عدد محدد من الثواني أو الدقائق. |


'''مثال:''' استخدام حدث OnTimer لتنفيذ عملية حسابية كل دقيقة:
الأحداث هي أساس العديد من استراتيجيات التداول الآلية.  على سبيل المثال:


```mql
* '''التداول بناءً على الأخبار (News Trading):''' يمكنك استخدام أحداث التقويم لمعرفة متى يتم إصدار أخبار اقتصادية مهمة، ثم تنفيذ صفقات بناءً على هذه الأخبار.  هذه الاستراتيجية تتطلب [[تحليل الأخبار]] الدقيق.
int timerHandle = 0;
* '''التداول بناءً على الاختراقات (Breakout Trading):''' يمكنك استخدام حدث ONLEVEL لمعرفة متى يكسر السعر مستوى دعم أو مقاومة، ثم تنفيذ صفقة بناءً على هذا الاختراق.  هذه الاستراتيجية تعتمد على [[مستويات الدعم والمقاومة]].
* '''التداول بناءً على المؤشرات الفنية (Technical Indicator Trading):''' يمكنك استخدام حدث ONCHARTUPDATE لتحديث قيم المؤشرات الفنية، ثم تنفيذ صفقات بناءً على إشارات هذه المؤشرات.  هذه الاستراتيجية تتطلب [[التحليل الفني]].


void OnStart()
== استخدام الأحداث في المؤشرات المخصصة ==
  {
  timerHandle = EventSetTimer(60); // قم بتعيين مؤقت للتشغيل كل 60 ثانية
  }


void OnTimer()
يمكنك أيضًا استخدام الأحداث لتخصيص سلوك المؤشرات الفنية. على سبيل المثال، يمكنك استخدام حدث ONCHARTUPDATE لإعادة رسم المؤشر في كل مرة يتم فيها تحديث الرسم البياني.
  {
  Print("تم استدعاء المؤقت!");
  // يمكن هنا إضافة كود لتنفيذ عملية حسابية أو تحليلية.
  }


void OnStop()
== اعتبارات مهمة ==
  {
  EventKillTimer(timerHandle); // إيقاف المؤقت عند إيقاف الخبير المستشار
  }
```


== أهمية الأحداث في التداول الآلي ==
* '''الأداء (Performance):''' معالجة الأحداث بشكل متكرر يمكن أن يؤثر على أداء برنامجك.  حاول تحسين الكود الخاص بك لتجنب العمليات الحسابية غير الضرورية.
* '''الأخطاء (Errors):''' تأكد من التعامل مع الأخطاء بشكل صحيح في دوال معالجة الأحداث.  يمكن أن يؤدي حدوث خطأ غير معالج إلى توقف برنامجك.
* '''التزامن (Synchronization):''' إذا كان برنامجك يستخدم سلاسل رسائل متعددة، فتأكد من مزامنة الوصول إلى البيانات المشتركة لتجنب حدوث تعارضات.


الأحداث هي أساس [[التداول الآلي]] (Automated Trading) باستخدام الخبراء المستشارين. تسمح للأكواد بالاستجابة للتغيرات في السوق وتنفيذ الصفقات تلقائيًا بناءً على شروط محددة. من خلال فهم الأحداث المختلفة وكيفية استخدامها، يمكن للمطورين إنشاء أنظمة تداول قوية وفعالة.
== روابط ذات صلة ==


== روابط لمواضيع ذات صلة ==
* [[MQL5 Reference]]
 
* [[مؤشرات ميتاتريدر 5]]
* [[MQL4]]
* [[الخوارزميات في ميتاتريدر 5]]
* [[MQL5]]
* [[التحليل الأساسي]]
* [[الخبير المستشار]]
* [[إدارة المخاطر]]
* [[المؤشرات المخصصة]]
* [[الرافعة المالية]]
* [[التقلبات]]
* [[السيولة]]
* [[أوامر التداول]]
* [[أوامر التداول]]
* [[إدارة المخاطر]]
* [[أنواع الحسابات]]
* [[تحليل البيانات]]
* [[التحليل الموجي]]
* [[التحليل الفني]]
* [[التحليل الأساسي]]
* [[استراتيجيات التداول]]
* [[تداول الأخبار]]
* [[تداول الاتجاه]]
* [[تداول الاختراق]]
* [[تداول الارتداد]]
* [[تداول النطاق]]
* [[مؤشر المتوسط المتحرك]]
* [[مؤشر القوة النسبية]]
* [[مؤشر الماكد]]
* [[مؤشر الماكد]]
* [[مؤشر البولينجر باند]]
* [[مؤشر RSI]]
* [[حجم التداول]]
* [[مؤشر ستوكاستيك]]
* [[أنماط الشموع اليابانية]]
* [[خطوط بولينجر]]
* [[Fibonacci Retracements]]
* [[استراتيجية المتوسطات المتحركة]]
* [[Elliott Wave Theory]]
* [[استراتيجية الاختراق]]
* [[Ichimoku Cloud]]
* [[استراتيجية التصحيح]]
* [[Volume Profile]]
* [[استراتيجية التداول المتأرجح]]
* [[استراتيجية التداول اليومي]]
* [[تحليل حجم التداول]]
* [[مفهوم السبريد]]
* [[التحليل الفني المتقدم]]
* [[استراتيجيات التداول بناءً على أنماط الشموع]]
* [[استراتيجية التداول بناءً على تصحيح فيبوناتشي]]


[[Category:الفئة:MQL4/MQL5]]
[[Category:الفئة:ميتاتريدر]]


== ابدأ التداول الآن ==
== ابدأ التداول الآن ==

Latest revision as of 00:11, 27 March 2025

الأحداث في لغة MQL5

الأحداث في لغة MQL5 هي آليات أساسية تسمح لبرامجك (الخوارزميات، المؤشرات، النصوص البرمجية) بالتفاعل مع بيئة التداول في منصة ميتاتريدر 5. إنها بمثابة "إشعارات" من المنصة تخبر برنامجك بوقوع شيء ما، مما يسمح له بالاستجابة وفقًا لتعليماتك. فهم الأحداث أمر بالغ الأهمية لتطوير استراتيجيات تداول آلية فعالة ومؤشرات مخصصة.

أنواع الأحداث

يمكن تصنيف الأحداث في MQL5 إلى عدة أنواع رئيسية:

  • أحداث الرسم البياني (Chart Events): تحدث هذه الأحداث مباشرة على الرسم البياني، مثل إضافة شمعة جديدة، تغيير السعر، أو نقرة الماوس.
  • أحداث التداول (Trade Events): تتعلق هذه الأحداث بعمليات التداول، مثل فتح صفقة، إغلاق صفقة، أو تغيير حالة صفقة.
  • أحداث الحساب (Account Events): تتعلق هذه الأحداث بحساب التداول، مثل تغيير الرصيد، أو إضافة/سحب الأموال.
  • أحداث النظام (System Events): تتعلق هذه الأحداث بنظام منصة ميتاتريدر نفسه، مثل بدء تشغيل المنصة، أو إغلاقها.
  • أحداث التقويم (Calendar Events): تتعلق هذه الأحداث بأخبار اقتصادية مهمة أو أحداث أخرى يتم تحديدها في التقويم الاقتصادي.

أحداث الرسم البياني الأكثر شيوعًا

| الحدث | الوصف | الدالة المعالجة | |---|---|---| | ONCHARTUPDATE | يحدث بعد كل تحديث للرسم البياني. | OnChartUpdate() | | ONTIMER | يحدث بشكل دوري بناءً على فترة زمنية محددة. | OnTimer() | | ONCLICK | يحدث عند نقر المستخدم على الرسم البياني. | OnClick() | | ONLEVEL | يحدث عند عبور السعر لمستوى معين (مثل مستوى فيبوناتشي). | OnLevel() | | ONNEWBAR | يحدث عند تشكيل شمعة جديدة. | OnNewBar() |

أحداث التداول الأكثر شيوعًا

| الحدث | الوصف | الدالة المعالجة | |---|---|---| | ONTRADE | يحدث عند فتح أو إغلاق صفقة. | OnTrade() | | ONTRADE_TRANSACTION | يحدث عند كل تغيير في صفقة (مثل تعديل أمر الإيقاف). | OnTrade_Transaction() | | ONORDER | يحدث عند إنشاء أو تعديل أو حذف أمر تداول. | OnOrder() |

معالجة الأحداث

لكي يستجيب برنامجك لأي حدث، يجب عليك تعريف دالة معالجة لهذا الحدث. يتم استدعاء هذه الدالة تلقائيًا من قبل منصة ميتاتريدر عندما يقع الحدث. على سبيل المثال، لمعالجة حدث ONNEWBAR، يجب عليك تعريف دالة باسم OnNewBar() في برنامجك.

مثال (معالجة حدث ONNEWBAR):

```mql5 void OnNewBar()

 {
  // كود يتم تنفيذه عند تشكيل شمعة جديدة
  Print("شمعة جديدة تم تشكيلها!");
  // يمكنك هنا تنفيذ استراتيجية تداول، أو تحديث مؤشر، إلخ.
 }

```

استخدام الأحداث في استراتيجيات التداول

الأحداث هي أساس العديد من استراتيجيات التداول الآلية. على سبيل المثال:

  • التداول بناءً على الأخبار (News Trading): يمكنك استخدام أحداث التقويم لمعرفة متى يتم إصدار أخبار اقتصادية مهمة، ثم تنفيذ صفقات بناءً على هذه الأخبار. هذه الاستراتيجية تتطلب تحليل الأخبار الدقيق.
  • التداول بناءً على الاختراقات (Breakout Trading): يمكنك استخدام حدث ONLEVEL لمعرفة متى يكسر السعر مستوى دعم أو مقاومة، ثم تنفيذ صفقة بناءً على هذا الاختراق. هذه الاستراتيجية تعتمد على مستويات الدعم والمقاومة.
  • التداول بناءً على المؤشرات الفنية (Technical Indicator Trading): يمكنك استخدام حدث ONCHARTUPDATE لتحديث قيم المؤشرات الفنية، ثم تنفيذ صفقات بناءً على إشارات هذه المؤشرات. هذه الاستراتيجية تتطلب التحليل الفني.

استخدام الأحداث في المؤشرات المخصصة

يمكنك أيضًا استخدام الأحداث لتخصيص سلوك المؤشرات الفنية. على سبيل المثال، يمكنك استخدام حدث ONCHARTUPDATE لإعادة رسم المؤشر في كل مرة يتم فيها تحديث الرسم البياني.

اعتبارات مهمة

  • الأداء (Performance): معالجة الأحداث بشكل متكرر يمكن أن يؤثر على أداء برنامجك. حاول تحسين الكود الخاص بك لتجنب العمليات الحسابية غير الضرورية.
  • الأخطاء (Errors): تأكد من التعامل مع الأخطاء بشكل صحيح في دوال معالجة الأحداث. يمكن أن يؤدي حدوث خطأ غير معالج إلى توقف برنامجك.
  • التزامن (Synchronization): إذا كان برنامجك يستخدم سلاسل رسائل متعددة، فتأكد من مزامنة الوصول إلى البيانات المشتركة لتجنب حدوث تعارضات.

روابط ذات صلة

ابدأ التداول الآن

سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер