Functions in MQL: Difference between revisions

From binaryoption
Jump to navigation Jump to search
Баннер1
(@pipegas_WP)
 
(@CategoryBot: Обновлена категория)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
# الدوال في لغة MQL
=== الدوال في لغة MQL ===


## مقدمة
'''مقدمة'''


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


## ما هي الدوال؟
== ما هي الدوال؟ ==


الدالة هي مجموعة من التعليمات البرمجية التي تنفذ مهمة محددة. يمكن استدعاء هذه المجموعة من التعليمات البرمجية عدة مرات من داخل البرنامجتتميز الدالة بما يلي:
الدالة هي كتلة من التعليمات البرمجية التي تؤدي مهمة محددة. يمكن للدالة استقبال '''المعاملات''' (Parameters) و إرجاع '''قيمة''' (Return Value)تخيل الدالة كآلة صغيرة: تدخل إليها بيانات (المعاملات)، تقوم بمعالجتها، ثم تخرج نتيجة (قيمة الإرجاع).


* **اسم:**  معرف فريد للدالة.
'''فوائد استخدام الدوال:'''
* **المعاملات (Parameters):**  قيم يتم تمريرها إلى الدالة لتنفيذ مهمتها.  الدالة قد لا تحتاج إلى أي معاملات.
* **نوع الإرجاع (Return Type):**  نوع البيانات التي ترجعها الدالة بعد الانتهاء من التنفيذ.  الدالة قد لا ترجع أي قيمة (void).
* **جسم الدالة (Function Body):**  مجموعة التعليمات البرمجية التي تنفذ المهمة المحددة.


## أنواع الدوال في MQL
*  '''إعادة الاستخدام:''' يمكنك كتابة الدالة مرة واحدة واستخدامها عدة مرات في البرنامج الخاص بك.
*  '''التنظيم:''' تجعل الدوال الكود أكثر تنظيمًا ويسهل فهمه.
*  '''التبسيط:''' تساعد على تقسيم المهام المعقدة إلى أجزاء أصغر وأكثر قابلية للإدارة.
*  '''القراءة:''' الكود الذي يستخدم الدوال يكون أسهل في القراءة والصيانة.


توجد أنواع مختلفة من الدوال في MQL:
== أنواع الدوال في MQL ==


* **الدوال المدمجة (Built-in Functions):**  دوال توفرها منصة MetaTrader بشكل افتراضي، مثل `iMA()` لحساب المتوسط المتحرك، أو `OrderSend()` لإرسال الأوامر.  راجع [[قائمة الدوال المدمجة]].
هناك نوعان رئيسيان من الدوال في MQL:
* **الدوال المعرفة من قبل المستخدم (User-Defined Functions):**  دوال يتم إنشاؤها بواسطة المبرمج لتنفيذ مهام محددة لا تتوفر في الدوال المدمجة.


## تعريف الدوال المعرفة من قبل المستخدم
*  '''الدوال المضمنة:'''  هذه الدوال تأتي مع MQL بشكل افتراضي، مثل  [[iMA]] (لحساب المتوسط المتحرك)،  [[iRSI]] (لحساب مؤشر القوة النسبية)، [[OrderSend]] (لإرسال الأوامر) وغيرها.  يمكنك العثور على قائمة كاملة بالدوال المضمنة في '''توثيق MQL'''.
*  '''الدوال المعرفة من قبل المستخدم:'''  هذه الدوال هي التي تكتبها بنفسك لتنفيذ مهام محددة.


يتم تعريف دالة معرفة من قبل المستخدم باستخدام الصيغة التالية:
== تعريف الدوال في MQL ==
 
لتعريف دالة في MQL، يجب عليك تحديد:
 
*  '''نوع الإرجاع:'''  نوع البيانات التي ستعيدها الدالة (مثل  [[int]]،  [[double]]،  [[bool]]،  [[string]]، إلخ). إذا كانت الدالة لا تعيد أي قيمة، استخدم  [[void]].
*  '''اسم الدالة:'''  اسم فريد للدالة (يجب أن يتبع قواعد تسمية المتغيرات).
*  '''المعاملات:'''  قائمة المعاملات التي تستقبلها الدالة (اختياري).
*  '''جسم الدالة:'''  التعليمات البرمجية التي تنفذها الدالة.
 
'''صيغة تعريف الدالة:'''


```mql
```mql
<نوع الإرجاع> <اسم الدالة>(<قائمة المعاملات>)
<نوع الإرجاع> <اسم الدالة>(<قائمة المعاملات>) {
{
   // جسم الدالة
   // جسم الدالة
   return <القيمة المراد إرجاعها>;
   return <القيمة>; // إذا كان نوع الإرجاع ليس void
}
}
```
```


مثال:
'''مثال:'''


```mql
```mql
int CalculateSum(int a, int b)
int CalculateSum(int a, int b) {
{
   int sum = a + b;
   int sum = a + b;
   return sum;
   return sum;
Line 43: Line 50:
```
```


في هذا المثال:
هذه الدالة تأخذ معاملين من نوع عدد صحيح (int) وتُرجع مجموعهما.
 
* `int`: نوع الإرجاع (عدد صحيح).
* `CalculateSum`: اسم الدالة.
* `int a, int b`: قائمة المعاملات (عددين صحيحين).
* `int sum = a + b;`: جسم الدالة (يقوم بحساب مجموع المعاملين).
* `return sum;`:  إرجاع قيمة المجموع.


## استدعاء الدوال
== استدعاء الدوال في MQL ==


يتم استدعاء الدالة عن طريق كتابة اسمها متبوعًا بقائمة المعاملات (إذا كانت الدالة تتطلب معاملات) بين قوسين.
لاستدعاء دالة، استخدم اسم الدالة متبوعًا بقائمة المعاملات (إذا كانت الدالة تتطلب معاملات).


مثال:
'''مثال:'''


```mql
```mql
int result = CalculateSum(5, 3); // استدعاء الدالة CalculateSum مع المعاملين 5 و 3
int main() {
Print("The sum is: ", result); // طباعة النتيجة (8)
  int result = CalculateSum(5, 3);
  Print("The sum is: ", result); // سيطبع: The sum is: 8
  return 0;
}
```
```


## نطاق المتغيرات (Variable Scope)
== الدوال المضمنة الأكثر استخدامًا ==


يحدد نطاق المتغير مكان إمكانية الوصول إليه في البرنامج. هناك نوعان رئيسيان من النطاق:
| الدالة      | الوصف                                      |
| ----------- | ----------------------------------------- |
| [[iMA]]    | حساب المتوسط المتحرك.                     |
| [[iRSI]]    | حساب مؤشر القوة النسبية.                  |
| [[iMACD]]  | حساب مؤشر الماكد.                        |
| [[iATR]]    | حساب متوسط المدى الحقيقي.                  |
| [[OrderSend]]| إرسال أمر تداول.                        |
| [[OrderClose]]| إغلاق أمر تداول.                        |
| [[MarketInfo]]| الحصول على معلومات السوق.                  |
| [[TimeCurrent]]| الحصول على الوقت الحالي.                  |
| [[AccountInfo]]| الحصول على معلومات الحساب.                |
| [[NormalizeDouble]]| تقريب قيمة عشرية.                      |


* **المتغيرات المحلية (Local Variables):**  يتم تعريفها داخل الدالة، ولا يمكن الوصول إليها إلا من داخل تلك الدالة.
== أمثلة عملية ==
* **المتغيرات العامة (Global Variables):**  يتم تعريفها خارج أي دالة، ويمكن الوصول إليها من أي مكان في البرنامج.  استخدام المتغيرات العامة يجب أن يكون محدودًا لتجنب حدوث أخطاء.  راجع [[نطاق المتغيرات بالتفصيل]].


## الدوال والمؤشرات الفنية
*  '''حساب نسبة المخاطرة إلى العائد:'''


يمكن استخدام الدوال لإنشاء [[مؤشرات فنية]] مخصصة.  يمكن للدالة حساب قيم المؤشر بناءً على بيانات الأسعار، ثم إرجاع هذه القيم لعرضها على الرسم البياني.  مثال: دالة لحساب مؤشر [[مؤشر القوة النسبية (RSI)]].
```mql
double CalculateRiskRewardRatio(double takeProfit, double stopLoss) {
  if (stopLoss == 0) {
    return 0.0; // تجنب القسمة على صفر
  }
  return takeProfit / stopLoss;
}
```


## الدوال والخبراء المستشارين (EAs)
*  '''التحقق من شروط الدخول في صفقة:'''


تستخدم الدوال بشكل مكثف في بناء [[الخبراء المستشارين]] لتنفيذ استراتيجيات التداول الآلية.  يمكن للدوال التعامل مع إدارة الأوامر، وتحليل السوق، واتخاذ قرارات التداول.  راجع [[بناء خبير مستشار بسيط]].
```mql
 
bool CheckEntryConditions(double currentPrice, double resistanceLevel) {
## أمثلة عملية
  return currentPrice <= resistanceLevel;
}
```


* **دالة لحساب نسبة المخاطرة إلى العائد:**  يمكن استخدام هذه الدالة لتحديد حجم الصفقة بناءً على مستوى المخاطرة المقبول.
== نصائح لاستخدام الدوال بفعالية ==
* **دالة للتحقق من شروط الدخول في صفقة:**  يمكن استخدام هذه الدالة لتحديد ما إذا كانت شروط استراتيجية التداول قد تحققت.
* **دالة لإرسال أوامر التداول:**  يمكن استخدام هذه الدالة لإرسال أوامر الشراء والبيع إلى السوق.


## نصائح لكتابة دوال فعالة
*  '''استخدم أسماء وصفية للدوال:'''  اجعل اسم الدالة يعكس بوضوح المهمة التي تؤديها.
*  '''حافظ على الدوال قصيرة وبسيطة:'''  إذا كانت الدالة طويلة جدًا أو معقدة جدًا، فقم بتقسيمها إلى دوال أصغر.
*  '''استخدم التعليقات:'''  اشرح ما تفعله الدالة وكيفية استخدامها.
*  '''اختبر الدوال جيدًا:'''  تأكد من أن الدالة تعمل بشكل صحيح قبل استخدامها في برنامجك.


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


## استراتيجيات تداول ذات صلة
*  [[توثيق MQL4]]: [[https://www.mql4.com/docs/basis/functions]]
*  [[توثيق MQL5]]: [[https://www.mql5.com/en/docs/basis/functions]]
*  [[منتدى MQL4]]: [[https://www.mql4.com/forum]]
*  [[منتدى MQL5]]: [[https://www.mql5.com/en/forum]]


* [[استراتيجية المتوسطات المتحركة المتقاطعة]]
== استراتيجيات ذات صلة وتحليل فني ==
* [[استراتيجية اختراق النطاق]]
* [[استراتيجية بولينجر باندز]]
* [[استراتيجية MACD]]
* [[استراتيجية RSI]]
* [[استراتيجية فيبوناتشي]]
* [[استراتيجية Ichimoku]]
* [[استراتيجية التداول بناءً على الأخبار]]
* [[استراتيجية التداول المتأرجح]]
* [[استراتيجية Scalping]]
* [[استراتيجية التداول الليلي]]
* [[استراتيجية مارتينجال]]
* [[استراتيجية Anti-Martingale]]
* [[استراتيجية التداول باستخدام أنماط الشموع]]
* [[استراتيجية التداول باستخدام الخطوط]]


## تحليل فني وتحليل حجم التداول
*  [[استراتيجية المتوسطات المتحركة المتقاطعة]]
*  [[استراتيجية الاختراق]]
*  [[استراتيجية التداول باستخدام مؤشر القوة النسبية]]
*  [[استراتيجية تداول الماكد]]
*  [[تحليل فيبوناتشي]]
*  [[نماذج الشموع اليابانية]]
*  [[تحليل حجم التداول]]
*  [[مؤشر ستوكاستيك]]
*  [[مؤشر بولينجر باندز]]
*  [[التحليل الفني الشامل]]
*  [[استراتيجية سكالبينج]]
*  [[استراتيجية التداول المتأرجح]]
*  [[استراتيجية التداول اليومي]]
*  [[استراتيجية مارتينجال]]
*  [[استراتيجية المضاعفة]]


* [[الشموع اليابانية]]
=== روابط ذات صلة ===
* [[الخطوط]]
[[المتغيرات في MQL]]، [[أنواع البيانات في MQL]]، [[الحلقات في MQL]]، [[الشروط في MQL]]، [[المصفوفات في MQL]]، [[الصفوف في MQL]]، [[التعليقات في MQL]]، [[الأخطاء في MQL]]، [[تصحيح الأخطاء في MQL]]، [[الروبوتات (Expert Advisors)]]، [[المؤشرات الفنية]]، [[الخوارزميات التداول]]، [[تداول الخيارات الثنائية]]، [[تحليل البيانات المالية]]، [[إدارة المخاطر في التداول]].
* [[المتوسطات المتحركة]]
* [[مؤشر القوة النسبية (RSI)]]
* [[MACD]]
* [[بولينجر باندز]]
* [[مؤشر ستوكاستيك]]
* [[مؤشر ADX]]
* [[تحليل حجم التداول]]
* [[تحليل أوامر الدعم والمقاومة]]
* [[نظرية الموجات الإيلوت]]
* [[تحليل الفجوات السعرية]]
* [[أنماط الرسوم البيانية]]
* [[تصحيحات فيبوناتشي]]
* [[مستويات فيبوناتشي]]


[[MQL4]] | [[MQL5]] | [[البرمجة في MQL]] | [[أنواع البيانات في MQL]] | [[المتغيرات في MQL]] | [[عوامل التشغيل في MQL]] | [[التحكم في التدفق في MQL]] | [[الحلقات في MQL]] | [[الصفوف في MQL]] | [[الكائنات في MQL]] | [[الأحداث في MQL]] | [[الأخطاء في MQL]] | [[التصحيح في MQL]] | [[التعليقات في MQL]] | [[المكتبات في MQL]] | [[الاستيراد في MQL]] | [[التضمين في MQL]] | [[المصفوفات في MQL]] | [[السلاسل النصية في MQL]] | [[التعامل مع الملفات في MQL]]
[[Category:الفئة:MQL4/MQL5]]


== ابدأ التداول الآن ==
== ابدأ التداول الآن ==
Line 138: Line 147:
✓ تنبيهات باتجاهات السوق
✓ تنبيهات باتجاهات السوق
✓ مواد تعليمية للمبتدئين
✓ مواد تعليمية للمبتدئين
[[Category:MQL4/MQL5]]

Latest revision as of 14:43, 6 May 2025

الدوال في لغة MQL

مقدمة

لغة MQL (MetaQuotes Language) هي لغة البرمجة المستخدمة لتطوير الخوارزميات التداول، المؤشرات الفنية، والروبوتات (Expert Advisors) لمنصات MetaTrader 4 (MQL4) و MetaTrader 5 (MQL5). تعتبر الدوال (Functions) جزءًا أساسيًا من أي لغة برمجة، و MQL ليست استثناءً. تسمح الدوال بتنظيم الكود، إعادة استخدامه، وتبسيط المهام المعقدة. هذه المقالة موجهة للمبتدئين في MQL وتهدف إلى شرح مفهوم الدوال وكيفية استخدامها في سياق تداول العملات المشفرة و الأسواق المالية.

ما هي الدوال؟

الدالة هي كتلة من التعليمات البرمجية التي تؤدي مهمة محددة. يمكن للدالة استقبال المعاملات (Parameters) و إرجاع قيمة (Return Value). تخيل الدالة كآلة صغيرة: تدخل إليها بيانات (المعاملات)، تقوم بمعالجتها، ثم تخرج نتيجة (قيمة الإرجاع).

فوائد استخدام الدوال:

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

أنواع الدوال في MQL

هناك نوعان رئيسيان من الدوال في MQL:

  • الدوال المضمنة: هذه الدوال تأتي مع MQL بشكل افتراضي، مثل iMA (لحساب المتوسط المتحرك)، iRSI (لحساب مؤشر القوة النسبية)، OrderSend (لإرسال الأوامر) وغيرها. يمكنك العثور على قائمة كاملة بالدوال المضمنة في توثيق MQL.
  • الدوال المعرفة من قبل المستخدم: هذه الدوال هي التي تكتبها بنفسك لتنفيذ مهام محددة.

تعريف الدوال في MQL

لتعريف دالة في MQL، يجب عليك تحديد:

  • نوع الإرجاع: نوع البيانات التي ستعيدها الدالة (مثل int، double، bool، string، إلخ). إذا كانت الدالة لا تعيد أي قيمة، استخدم void.
  • اسم الدالة: اسم فريد للدالة (يجب أن يتبع قواعد تسمية المتغيرات).
  • المعاملات: قائمة المعاملات التي تستقبلها الدالة (اختياري).
  • جسم الدالة: التعليمات البرمجية التي تنفذها الدالة.

صيغة تعريف الدالة:

```mql <نوع الإرجاع> <اسم الدالة>(<قائمة المعاملات>) {

 // جسم الدالة
 return <القيمة>; // إذا كان نوع الإرجاع ليس void

} ```

مثال:

```mql int CalculateSum(int a, int b) {

 int sum = a + b;
 return sum;

} ```

هذه الدالة تأخذ معاملين من نوع عدد صحيح (int) وتُرجع مجموعهما.

استدعاء الدوال في MQL

لاستدعاء دالة، استخدم اسم الدالة متبوعًا بقائمة المعاملات (إذا كانت الدالة تتطلب معاملات).

مثال:

```mql int main() {

 int result = CalculateSum(5, 3);
 Print("The sum is: ", result); // سيطبع: The sum is: 8
 return 0;

} ```

الدوال المضمنة الأكثر استخدامًا

| الدالة | الوصف | | ----------- | ----------------------------------------- | | iMA | حساب المتوسط المتحرك. | | iRSI | حساب مؤشر القوة النسبية. | | iMACD | حساب مؤشر الماكد. | | iATR | حساب متوسط المدى الحقيقي. | | OrderSend| إرسال أمر تداول. | | OrderClose| إغلاق أمر تداول. | | MarketInfo| الحصول على معلومات السوق. | | TimeCurrent| الحصول على الوقت الحالي. | | AccountInfo| الحصول على معلومات الحساب. | | NormalizeDouble| تقريب قيمة عشرية. |

أمثلة عملية

  • حساب نسبة المخاطرة إلى العائد:

```mql double CalculateRiskRewardRatio(double takeProfit, double stopLoss) {

 if (stopLoss == 0) {
   return 0.0; // تجنب القسمة على صفر
 }
 return takeProfit / stopLoss;

} ```

  • التحقق من شروط الدخول في صفقة:

```mql bool CheckEntryConditions(double currentPrice, double resistanceLevel) {

 return currentPrice <= resistanceLevel;

} ```

نصائح لاستخدام الدوال بفعالية

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

الموارد الإضافية

استراتيجيات ذات صلة وتحليل فني

روابط ذات صلة

المتغيرات في MQL، أنواع البيانات في MQL، الحلقات في MQL، الشروط في MQL، المصفوفات في MQL، الصفوف في MQL، التعليقات في MQL، الأخطاء في MQL، تصحيح الأخطاء في MQL، الروبوتات (Expert Advisors)، المؤشرات الفنية، الخوارزميات التداول، تداول الخيارات الثنائية، تحليل البيانات المالية، إدارة المخاطر في التداول.


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

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

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

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

Баннер