Arrays in MQL4: Difference between revisions

From binaryoption
Jump to navigation Jump to search
Баннер1
(@pipegas_WP)
 
(@pipegas_WP)
 
Line 1: Line 1:
=== المصفوفات في لغة MQL4 ===
## المصفوفات في MQL4 للمبتدئين


المصفوفات هي هياكل بيانات أساسية في أي لغة برمجة، ولغة [[MQL4]] ليست استثناءً. فهم المصفوفات أمر بالغ الأهمية لكتابة برامج تداول فعالة وفعالة في [[MetaTrader 4]]. هذه المقالة موجهة للمبتدئين وتهدف إلى تقديم شرح شامل للمصفوفات في MQL4، بدءًا من الأساسيات وصولًا إلى الاستخدامات الأكثر تقدمًا.
المصفوفات هي هياكل بيانات أساسية في برمجة MQL4، وهي تستخدم لتخزين مجموعة من القيم من نفس النوع تحت اسم واحد. فهم المصفوفات ضروري لتطوير [[الخوارزميات]] المعقدة، ومعالجة البيانات التاريخية، وتنفيذ [[استراتيجيات التداول]] المتقدمة في منصة MetaTrader 4. هذه المقالة موجهة للمبتدئين وتهدف إلى شرح مفهوم المصفوفات في MQL4 بالتفصيل.


== ما هي المصفوفة؟ ==
=== ما هي المصفوفة؟ ===


ببساطة، المصفوفة هي مجموعة من العناصر من نفس النوع (مثل الأرقام أو النصوص) يتم تخزينها في مواقع ذاكرة متجاورة. تخيلها كقائمة مرقمة حيث يمكنك الوصول إلى كل عنصر باستخدام رقمه (يُعرف بالفهرس).  في MQL4، تبدأ فهرسة المصفوفات من الصفر.  على سبيل المثال، إذا كانت لديك مصفوفة تحتوي على خمسة عناصر، فإن الفهارس ستكون 0 و 1 و 2 و 3 و 4.
تخيل أنك تريد تخزين أسعار إغلاق الأسهم لآخر 30 يومًا. بدلاً من تعريف 30 متغيرًا منفصلاً (price1, price2, price3, … price30)، يمكنك استخدام مصفوفة واحدة لتخزين هذه القيم. المصفوفة هي ببساطة قائمة مرتبة من العناصر. كل عنصر في المصفوفة له فهرس (index) خاص به، يبدأ عادةً من الصفر.


== أنواع المصفوفات في MQL4 ==
=== تعريف المصفوفات في MQL4 ===


MQL4 تدعم أنواعًا مختلفة من المصفوفات:
لتعريف مصفوفة في MQL4، يجب تحديد نوع البيانات التي ستحتويها المصفوفة وحجمها. الصيغة العامة لتعريف مصفوفة هي:


<b>مصفوفات ثابتة:</b> يتم تحديد حجمها في وقت التصريح ولا يمكن تغييره لاحقًا.
<nowiki>
*  <b>مصفوفات ديناميكية:</b> يمكن تغيير حجمها أثناء تنفيذ البرنامج.
type array_name[array_size];
</nowiki>


== التصريح عن المصفوفات ==
*  `type`: نوع البيانات التي ستحتويها المصفوفة (مثل `int`, `double`, `string`, `bool`).
*  `array_name`: اسم المصفوفة الذي تختاره.
*  `array_size`: عدد العناصر التي يمكن أن تحتويها المصفوفة.


'''التصريح عن مصفوفة ثابتة:'''
أمثلة:


```mql4
*  <nowiki>int prices[100];</nowiki>  (مصفوفة من الأعداد الصحيحة يمكنها تخزين 100 قيمة)
double MyArray[10]; // تصريح عن مصفوفة من النوع double بحجم 10
*  <nowiki>double bid_prices[50];</nowiki> (مصفوفة من الأرقام العشرية يمكنها تخزين 50 قيمة)
int    IndexArray[5]; // تصريح عن مصفوفة من النوع int بحجم 5
*  <nowiki>string news_headlines[20];</nowiki> (مصفوفة من النصوص يمكنها تخزين 20 قيمة)
string SymbolNames[3]; // تصريح عن مصفوفة من النوع string بحجم 3
```


'''التصريح عن مصفوفة ديناميكية:'''
=== تهيئة المصفوفات ===


```mql4
بعد تعريف المصفوفة، يمكنك تهيئة عناصرها بقيم. هناك عدة طرق لتهيئة المصفوفات:
double MyDynamicArray[]; // تصريح عن مصفوفة ديناميكية من النوع double
```


بعد التصريح عن مصفوفة ديناميكية، يجب عليك استخدام الدالة `ArrayResize()` لتحديد حجمها.
*  **التهيئة أثناء التعريف:**


== تهيئة المصفوفات ==
    <nowiki>int values[5] = {10, 20, 30, 40, 50};</nowiki>


يمكن تهيئة المصفوفات عند التصريح عنها أو لاحقًا في الكود.
*  **التهيئة بعد التعريف:**


'''التهيئة عند التصريح:'''
    <nowiki>int my_array[3];
    my_array[0] = 1;
    my_array[1] = 2;
    my_array[2] = 3;
    </nowiki>


```mql4
*  **استخدام حلقة تكرارية:**  هذه الطريقة مفيدة لتهيئة المصفوفات الكبيرة.
double Prices[] = {1.1000, 1.1010, 1.1020, 1.1030}; // تهيئة مصفوفة double بأربعة قيم
```


'''التهيئة لاحقًا:'''
    <nowiki>for (int i = 0; i < 10; i++) {
        my_array[i] = i * 2;
    }</nowiki>


```mql4
=== الوصول إلى عناصر المصفوفة ===
int Values[3];
Values[0] = 10;
Values[1] = 20;
Values[2] = 30;
```


== الوصول إلى عناصر المصفوفة ==
للوصول إلى عنصر معين في المصفوفة، استخدم اسم المصفوفة متبوعًا بالفهرس الخاص بالعنصر داخل أقواس مربعة. تذكر أن الفهرس يبدأ من الصفر.


للوصول إلى عنصر في المصفوفة، استخدم اسم المصفوفة متبوعًا بالفهرس بين أقواس مربعة.
<nowiki>int first_element = my_array[0];</nowiki>


```mql4
<nowiki>int third_element = my_array[2];</nowiki>
double price = Prices[2]; // الوصول إلى العنصر الثالث في مصفوفة Prices
```


== دوال المصفوفات المدمجة في MQL4 ==
=== المصفوفات متعددة الأبعاد ===


MQL4 توفر عددًا من الدوال المدمجة للعمل مع المصفوفات. بعض الدوال الأكثر شيوعًا تشمل:
MQL4 يدعم المصفوفات متعددة الأبعاد. المصفوفة ثنائية الأبعاد تشبه جدولًا، مع صفوف وأعمدة. لتعريف مصفوفة ثنائية الأبعاد:


*  `ArraySize()`: إرجاع حجم المصفوفة.
<nowiki>type array_name[row_size][column_size];</nowiki>
*  `ArrayInitialize()`: تهيئة جميع عناصر المصفوفة بقيمة محددة.
*  `ArraySort()`: فرز عناصر المصفوفة بترتيب تصاعدي أو تنازلي.
*  `ArrayReverse()`: عكس ترتيب عناصر المصفوفة.
*  `ArrayCopy()`: نسخ عناصر من مصفوفة إلى أخرى.
*  `ArrayResize()`: تغيير حجم المصفوفة الديناميكية.
*  `ArrayShift()`: تحريك عناصر المصفوفة.
*  `ArrayFind()`: البحث عن قيمة في المصفوفة.


== استخدامات المصفوفات في تداول الفوركس ==
مثال:


المصفوفات مفيدة جدًا في العديد من تطبيقات تداول الفوركس، بما في ذلك:
<nowiki>double price_data[10][5];</nowiki>  (مصفوفة ثنائية الأبعاد تحتوي على 10 صفوف و 5 أعمدة)


*  <b>تخزين بيانات الأسعار التاريخية:</b> يمكنك استخدام مصفوفة لتخزين سلسلة زمنية من أسعار الإغلاق، أو الأسعار المرتفعة، أو الأسعار المنخفضة. هذا مفيد لتطبيق [[التحليل الفني]].
للوصول إلى عنصر في مصفوفة ثنائية الأبعاد، استخدم اسم المصفوفة متبوعًا بفهرس الصف ثم فهرس العمود داخل أقواس مربعة.
*  <b>تخزين قيم المؤشرات الفنية:</b> يمكنك تخزين قيم المؤشرات الفنية مثل [[المتوسطات المتحركة]]، و[[مؤشر القوة النسبية]] (RSI)، و[[الماكد]] (MACD) في مصفوفات.
*  <b>إدارة الصفقات:</b> يمكنك استخدام مصفوفة لتتبع معلومات حول صفقاتك المفتوحة، مثل أزواج العملات، وأحجام الصفقات، وأسعار الدخول، وأسعار جني الأرباح، وأسعار وقف الخسارة.
*  <b>تنفيذ [[استراتيجيات التداول]] المعقدة:</b> يمكن استخدام المصفوفات لتمثيل هياكل البيانات المعقدة اللازمة لتنفيذ استراتيجيات تداول متطورة.
*  <b>تحليل [[حجم التداول]]**: يمكن تخزين أحجام التداول في مصفوفات للتحليل.


== مثال عملي: حساب متوسط متحرك بسيط ==
<nowiki>double value = price_data[2][3];</nowiki>


```mql4
=== دوال المصفوفات المدمجة في MQL4 ===
double prices[] = {1.1000, 1.1010, 1.1020, 1.1030, 1.1040};
int period = 3;
double sum = 0.0;


for(int i = 0; i < period; i++) {
MQL4 يوفر العديد من الدوال المدمجة للتعامل مع المصفوفات:
  sum += prices[i];
 
*  `ArrayInitialize()`: لتهيئة المصفوفة.
*  `ArrayResize()`: لتغيير حجم المصفوفة.
*  `ArraySetAsSeries()`: لتحويل سلسلة زمنية إلى مصفوفة.
*  `ArraySort()`: لترتيب عناصر المصفوفة.
*  `ArrayReverse()`: لعكس ترتيب عناصر المصفوفة.
*  `ArrayFind()`: للبحث عن قيمة معينة داخل المصفوفة.
 
=== استخدامات المصفوفات في تداول الفوركس ===
 
*  **تخزين البيانات التاريخية:** يمكن استخدام المصفوفات لتخزين أسعار الفتح والإغلاق والارتفاع والانخفاض والحجم لفترة زمنية محددة.  هذا مفيد لـ [[التحليل الفني]].
*  **حساب المؤشرات الفنية:** يمكن استخدام المصفوفات لتخزين القيم الوسيطة أثناء حساب [[المؤشرات الفنية]] مثل المتوسطات المتحركة و RSI و MACD.
*  **تنفيذ [[استراتيجيات التداول]] القائمة على البيانات:** يمكن استخدام المصفوفات لتخزين بيانات التداول مثل الأوامر المفتوحة والأرباح والخسائر.
*  **تحليل حجم التداول:**  تخزين بيانات حجم التداول لتقييم قوة الاتجاهات.
*  **تخزين نتائج [[تحليل فيبوناتشي]].**
 
=== أمثلة عملية ===
 
مثال بسيط لحساب متوسط سعر الإغلاق لآخر 10 فترات:
 
<nowiki>
int start = 0;
int period = 10;
double close_prices[period];
 
for (int i = 0; i < period; i++) {
    close_prices[i] = iClose(NULL, 0, i);
}
}


double movingAverage = sum / period;
double sum = 0;
Print("Moving Average: ", movingAverage);
for (int i = 0; i < period; i++) {
```
    sum += close_prices[i];
}
 
double average = sum / period;
Print("Average Close Price: ", average);
</nowiki>
 
=== اعتبارات الأداء ===


== نصائح للمصفوفات في MQL4 ==
استخدام المصفوفات بشكل غير فعال يمكن أن يؤثر سلبًا على أداء برنامجك. تجنب:


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


== استراتيجيات تداول تعتمد على المصفوفات ==
=== روابط ذات صلة ===


*  [[استراتيجية المتوسطات المتحركة المتقاطعة]]: تستخدم مصفوفات لتخزين قيم المتوسطات المتحركة المختلفة.
*  [[MQL4 Language]]
*  [[استراتيجية الاختراق]]: تستخدم مصفوفات لتخزين مستويات الدعم والمقاومة.
*  [[Variables in MQL4]]
*  [[استراتيجية الماكد]]: تستخدم مصفوفات لتخزين قيم خطوط الماكد والإشارة.
*  [[Data Types in MQL4]]
*  [[استراتيجية بولينجر باندز]]: تستخدم مصفوفات لتخزين قيم النطاق العلوي والسفلي.
*  [[Loops in MQL4]]
*  [[استراتيجية RSI]]: تستخدم مصفوفات لتخزين قيم مؤشر القوة النسبية.
*  [[Functions in MQL4]]
*  [[استراتيجية Ichimoku Cloud]]: تستخدم مصفوفات لتخزين مكونات Ichimoku Cloud.
*  [[Expert Advisors (EAs)]]
*  [[استراتيجية Fibonacci Retracement]]: تستخدم مصفوفات لتخزين مستويات Fibonacci.
*  [[Indicators in MQL4]]
*  [[استراتيجية Price Action]]: تستخدم مصفوفات لتخزين أنماط الشموع اليابانية.
*  [[Scripting in MQL4]]
*  [[استراتيجية Point and Figure]]: تستخدم مصفوفات لتخزين البيانات في مخطط Point and Figure.
*  [[استراتيجية Elliott Wave]]: تستخدم مصفوفات لتخزين مستويات الموجات.
*  [[استراتيجية Gann Analysis]]: تستستخدم مصفوفات لتخزين مستويات Gann.
*  [[استراتيجية Momentum Trading]]: تستخدم مصفوفات لتحليل الزخم.
*  [[استراتيجية Scalping]]: تستخدم مصفوفات لتحديد فرص التداول قصيرة الأجل.
*  [[استراتيجية Swing Trading]]: تستخدم مصفوفات لتحديد نقاط الدخول والخروج للصفقات المتأرجحة.
*  [[استراتيجية Position Trading]]: تستخدم مصفوفات لتحديد الاتجاهات طويلة الأجل.


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


*  [[التحليل الفني]] يعتمد بشكل كبير على المصفوفات لتخزين ومعالجة بيانات الأسعار.
*  [[Moving Average Crossover]]
*  [[حجم التداول]] يمكن تمثيله وتحليله باستخدام المصفوفات.
*  [[RSI Divergence]]
*  [[نماذج الشموع اليابانية]] يمكن تخزينها وتحليلها باستخدام المصفوفات.
*  [[MACD Strategy]]
*  [[مستويات الدعم والمقاومة]] يمكن تخزينها في مصفوفات.
*  [[Breakout Trading]]
*  [[خطوط الاتجاه]] يمكن تمثيلها باستخدام المصفوفات.
*  [[Scalping]]
*  [[Swing Trading]]
*  [[Day Trading]]
*  [[Position Trading]]
*  [[Arbitrage]]
*  [[Trend Following]]
*  [[Mean Reversion]]
*  [[News Trading]]
*  [[Fibonacci Retracement]]
*  [[Elliott Wave Theory]]
*  [[Bollinger Bands]]


== الخلاصة ==
=== التحليل الفني وتحليل حجم التداول ===


المصفوفات هي أداة قوية في MQL4 تسمح لك بتخزين ومعالجة كميات كبيرة من البيانات بكفاءة.  من خلال فهم أنواع المصفوفات، وكيفية التصريح عنها، وتهيئتها، والوصول إلى عناصرها، يمكنك كتابة برامج تداول أكثر تعقيدًا وقوة.  تدرب على استخدام المصفوفات في مشاريعك الخاصة لتطوير مهاراتك في البرمجة.
*  [[Candlestick Patterns]]
*  [[Chart Patterns]]
*  [[Support and Resistance]]
*  [[Volume Spread Analysis]]
*  [[Order Flow]]


[[Category:الفئة:MQL4]]
[[Category:**الفئة:MQL4**]]


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

Latest revision as of 16:34, 22 April 2025

    1. المصفوفات في MQL4 للمبتدئين

المصفوفات هي هياكل بيانات أساسية في برمجة MQL4، وهي تستخدم لتخزين مجموعة من القيم من نفس النوع تحت اسم واحد. فهم المصفوفات ضروري لتطوير الخوارزميات المعقدة، ومعالجة البيانات التاريخية، وتنفيذ استراتيجيات التداول المتقدمة في منصة MetaTrader 4. هذه المقالة موجهة للمبتدئين وتهدف إلى شرح مفهوم المصفوفات في MQL4 بالتفصيل.

ما هي المصفوفة؟

تخيل أنك تريد تخزين أسعار إغلاق الأسهم لآخر 30 يومًا. بدلاً من تعريف 30 متغيرًا منفصلاً (price1, price2, price3, … price30)، يمكنك استخدام مصفوفة واحدة لتخزين هذه القيم. المصفوفة هي ببساطة قائمة مرتبة من العناصر. كل عنصر في المصفوفة له فهرس (index) خاص به، يبدأ عادةً من الصفر.

تعريف المصفوفات في MQL4

لتعريف مصفوفة في MQL4، يجب تحديد نوع البيانات التي ستحتويها المصفوفة وحجمها. الصيغة العامة لتعريف مصفوفة هي:

type array_name[array_size];

  • `type`: نوع البيانات التي ستحتويها المصفوفة (مثل `int`, `double`, `string`, `bool`).
  • `array_name`: اسم المصفوفة الذي تختاره.
  • `array_size`: عدد العناصر التي يمكن أن تحتويها المصفوفة.

أمثلة:

  • int prices[100]; (مصفوفة من الأعداد الصحيحة يمكنها تخزين 100 قيمة)
  • double bid_prices[50]; (مصفوفة من الأرقام العشرية يمكنها تخزين 50 قيمة)
  • string news_headlines[20]; (مصفوفة من النصوص يمكنها تخزين 20 قيمة)

تهيئة المصفوفات

بعد تعريف المصفوفة، يمكنك تهيئة عناصرها بقيم. هناك عدة طرق لتهيئة المصفوفات:

  • **التهيئة أثناء التعريف:**
   int values[5] = {10, 20, 30, 40, 50};
  • **التهيئة بعد التعريف:**
   int my_array[3];
    my_array[0] = 1;
    my_array[1] = 2;
    my_array[2] = 3;
    
  • **استخدام حلقة تكرارية:** هذه الطريقة مفيدة لتهيئة المصفوفات الكبيرة.
   for (int i = 0; i < 10; i++) {
        my_array[i] = i * 2;
    }

الوصول إلى عناصر المصفوفة

للوصول إلى عنصر معين في المصفوفة، استخدم اسم المصفوفة متبوعًا بالفهرس الخاص بالعنصر داخل أقواس مربعة. تذكر أن الفهرس يبدأ من الصفر.

int first_element = my_array[0];

int third_element = my_array[2];

المصفوفات متعددة الأبعاد

MQL4 يدعم المصفوفات متعددة الأبعاد. المصفوفة ثنائية الأبعاد تشبه جدولًا، مع صفوف وأعمدة. لتعريف مصفوفة ثنائية الأبعاد:

type array_name[row_size][column_size];

مثال:

double price_data[10][5]; (مصفوفة ثنائية الأبعاد تحتوي على 10 صفوف و 5 أعمدة)

للوصول إلى عنصر في مصفوفة ثنائية الأبعاد، استخدم اسم المصفوفة متبوعًا بفهرس الصف ثم فهرس العمود داخل أقواس مربعة.

double value = price_data[2][3];

دوال المصفوفات المدمجة في MQL4

MQL4 يوفر العديد من الدوال المدمجة للتعامل مع المصفوفات:

  • `ArrayInitialize()`: لتهيئة المصفوفة.
  • `ArrayResize()`: لتغيير حجم المصفوفة.
  • `ArraySetAsSeries()`: لتحويل سلسلة زمنية إلى مصفوفة.
  • `ArraySort()`: لترتيب عناصر المصفوفة.
  • `ArrayReverse()`: لعكس ترتيب عناصر المصفوفة.
  • `ArrayFind()`: للبحث عن قيمة معينة داخل المصفوفة.

استخدامات المصفوفات في تداول الفوركس

  • **تخزين البيانات التاريخية:** يمكن استخدام المصفوفات لتخزين أسعار الفتح والإغلاق والارتفاع والانخفاض والحجم لفترة زمنية محددة. هذا مفيد لـ التحليل الفني.
  • **حساب المؤشرات الفنية:** يمكن استخدام المصفوفات لتخزين القيم الوسيطة أثناء حساب المؤشرات الفنية مثل المتوسطات المتحركة و RSI و MACD.
  • **تنفيذ استراتيجيات التداول القائمة على البيانات:** يمكن استخدام المصفوفات لتخزين بيانات التداول مثل الأوامر المفتوحة والأرباح والخسائر.
  • **تحليل حجم التداول:** تخزين بيانات حجم التداول لتقييم قوة الاتجاهات.
  • **تخزين نتائج تحليل فيبوناتشي.**

أمثلة عملية

مثال بسيط لحساب متوسط سعر الإغلاق لآخر 10 فترات:

int start = 0; int period = 10; double close_prices[period]; for (int i = 0; i < period; i++) { close_prices[i] = iClose(NULL, 0, i); } double sum = 0; for (int i = 0; i < period; i++) { sum += close_prices[i]; } double average = sum / period; Print("Average Close Price: ", average);

اعتبارات الأداء

استخدام المصفوفات بشكل غير فعال يمكن أن يؤثر سلبًا على أداء برنامجك. تجنب:

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

روابط ذات صلة

استراتيجيات التداول ذات الصلة

التحليل الفني وتحليل حجم التداول

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

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

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

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

Баннер