Arrays in MQL4
- المصفوفات في 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);
اعتبارات الأداء
استخدام المصفوفات بشكل غير فعال يمكن أن يؤثر سلبًا على أداء برنامجك. تجنب:
- **إنشاء مصفوفات كبيرة جدًا:** استخدم فقط الحجم الذي تحتاجه.
- **إعادة تهيئة المصفوفات بشكل متكرر:** حاول إعادة استخدام المصفوفات بدلاً من إنشائها وإعادة تهيئتها في كل تكرار.
- **الوصول إلى عناصر المصفوفة داخل حلقات متداخلة:** يمكن أن يؤدي ذلك إلى تباطؤ كبير.
روابط ذات صلة
- MQL4 Language
- Variables in MQL4
- Data Types in MQL4
- Loops in MQL4
- Functions in MQL4
- Expert Advisors (EAs)
- Indicators in MQL4
- Scripting in MQL4
استراتيجيات التداول ذات الصلة
- 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
التحليل الفني وتحليل حجم التداول
ابدأ التداول الآن
سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)
انضم إلى مجتمعنا
اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين