Strings in MQL
```wiki
سلاسل النصوص في لغة MQL
مقدمة
تعتبر سلاسل النصوص (Strings) جزءًا أساسيًا من أي لغة برمجة، ولغة MQL (MetaQuotes Language)، المستخدمة في منصات MetaTrader 4 و MetaTrader 5، ليست استثناءً. سلاسل النصوص تستخدم لتمثيل البيانات النصية، مثل أسماء المؤشرات، والتعليقات، ورسائل الخطأ، وأسماء المتغيرات، وحتى أجزاء من أوامر التداول. هذا المقال يهدف إلى تقديم شرح مفصل وشامل لسلاسل النصوص في MQL للمبتدئين، مع التركيز على كيفية تعريفها، معالجتها، واستخدامها في تطوير استراتيجيات التداول الآلية والخبراء المستشارين.
ما هي سلسلة النصوص؟
سلسلة النصوص هي مجموعة من الأحرف (حروف، أرقام، رموز، مسافات) محاطة بعلامات اقتباس مزدوجة (""). على سبيل المثال:
```mql string message = "مرحباً بالعالم!"; ```
في هذا المثال، `"مرحباً بالعالم!"` هي سلسلة نصية. لاحظ أن علامات الاقتباس المزدوجة ليست جزءًا من السلسلة نفسها؛ إنها مجرد محددات لبداية ونهاية السلسلة.
تعريف سلاسل النصوص
هناك عدة طرق لتعريف سلاسل النصوص في MQL:
- التعريف المباشر: كما في المثال السابق، يمكن تعريف سلسلة نصية مباشرةً عن طريق إسناد قيمة نصية إلى متغير من نوع `string`.
- التعريف الفارغ: يمكن تعريف سلسلة نصية فارغة عن طريق إسناد سلسلة فارغة ("") إلى متغير.
- التعريف باستخدام متغير آخر: يمكن إسناد قيمة سلسلة نصية من متغير آخر إلى متغير جديد.
مثال:
```mql string name = "Ali"; string greeting = "مرحباً, " + name + "!"; // Concatenation (سنشرحها لاحقاً) string emptyString = ""; ```
أنواع البيانات ذات الصلة
- char: يمثل حرفًا واحدًا. على الرغم من أن سلاسل النصوص تتكون من أحرف، إلا أن `char` هو نوع بيانات مختلف. يمكن استخدام `char` للوصول إلى أحرف معينة داخل سلسلة نصية.
- wstring: (متوفر في MQL5 فقط) تمثل سلسلة نصية Unicode واسعة، مما يسمح بتمثيل الأحرف من لغات مختلفة بشكل صحيح.
العمليات على سلاسل النصوص
MQL توفر مجموعة من العمليات لمعالجة سلاسل النصوص:
- الربط (Concatenation): ربط سلسلتين نصيتين أو أكثر معًا لإنشاء سلسلة نصية جديدة. يتم ذلك باستخدام عامل التشغيل `+`.
```mql string firstName = "Ahmed"; string lastName = "Mohamed"; string fullName = firstName + " " + lastName; // fullName ستكون "Ahmed Mohamed" ```
- الطول (Length): إرجاع عدد الأحرف في سلسلة نصية. يتم ذلك باستخدام الدالة `StringLen()`.
```mql string text = "Hello"; int length = StringLen(text); // length ستكون 5 ```
- الوصول إلى الأحرف (Accessing Characters): الوصول إلى حرف معين في سلسلة نصية باستخدام الفهرس (index). يبدأ الفهرس من 0.
```mql string text = "World"; char firstChar = text[0]; // firstChar ستكون 'W' ```
- استخراج جزء من السلسلة (Substring): استخراج جزء معين من سلسلة نصية باستخدام الدالتين `StringSubstr()` و `StringCopy()`.
```mql string text = "Trading Strategies"; string subString = StringSubstr(text, 8, 9); // subString ستكون "Strategies" (يبدأ من الفهرس 8 ويستخرج 9 أحرف) ```
- البحث (Searching): البحث عن سلسلة نصية فرعية داخل سلسلة نصية أكبر باستخدام الدوال `StringFind()` و `StringInStr()`.
```mql string text = "Binary Options Trading"; int position = StringFind(text, "Options"); // position ستكون 7 (فهرس بداية "Options") ```
- التحويل (Conversion): تحويل أنواع البيانات الأخرى إلى سلاسل نصية باستخدام الدالة `ToString()`.
```mql int number = 123; string text = ToString(number); // text ستكون "123" ```
- المقارنة (Comparison): مقارنة سلسلتين نصيتين باستخدام عوامل المقارنة (==, !=, <, >, <=, >=).
```mql string str1 = "Hello"; string str2 = "World"; bool areEqual = (str1 == str2); // areEqual ستكون false ```
- الاستبدال (Replacing): استبدال جزء من سلسلة نصية بسلسلة نصية أخرى باستخدام الدالة `StringReplace()`.
```mql string text = "Old Value"; string newText = StringReplace(text, "Old", "New"); // newText ستكون "New Value" ```
وظائف إضافية مفيدة
- `StringFormat()`: تنسيق السلاسل النصية باستخدام محددات التنسيق (format specifiers).
- `StringTrimLeft()` و `StringTrimRight()`: إزالة المسافات البيضاء من بداية أو نهاية السلسلة النصية.
- `StringToLower()` و `StringToUpper()`: تحويل السلسلة النصية إلى أحرف صغيرة أو كبيرة.
- `StringSplit()`: تقسيم السلسلة النصية إلى مصفوفة من السلاسل النصية الفرعية بناءً على فاصل محدد.
استخدامات سلاسل النصوص في MQL
- أسماء المؤشرات والمتغيرات: تستخدم سلاسل النصوص لتعريف أسماء المؤشرات والمتغيرات.
- التعليقات: تستخدم سلاسل النصوص لكتابة التعليقات في الكود، مما يجعله أكثر قابلية للقراءة والفهم.
- رسائل التنبيه والخطأ: تستخدم سلاسل النصوص لعرض رسائل التنبيه والخطأ للمستخدم.
- أوامر التداول: تستخدم سلاسل النصوص لتحديد معلمات أوامر التداول، مثل رمز الأصل (symbol) والإطار الزمني (timeframe).
- تحليل البيانات: تستخدم سلاسل النصوص لتحليل البيانات النصية، مثل أسماء الأصول وأخبار السوق.
- تسجيل الأحداث (Logging): تستخدم لإنشاء سجلات للأحداث التي تحدث في الخبير المستشار أو المؤشر.
أمثلة عملية
- عرض رسالة تنبيه:
```mql string message = "تم تنفيذ أمر تداول!"; Alert(message); ```
- إنشاء اسم ملف:
```mql string symbol = "EURUSD"; string timeframe = "H1"; string fileName = symbol + "_" + timeframe + ".txt"; // fileName ستكون "EURUSD_H1.txt" ```
- تحليل أمر تداول:
```mql string orderComment = "استراتيجية الاختراق"; if (StringFind(orderComment, "اختراق") != -1) {
// تنفيذ إجراء معين إذا كان التعليق يحتوي على كلمة "اختراق"
} ```
تجنب الأخطاء الشائعة
- عدم إغلاق علامات الاقتباس: تأكد من إغلاق جميع علامات الاقتباس المزدوجة.
- استخدام المسافات البيضاء الزائدة: تجنب استخدام المسافات البيضاء الزائدة في سلاسل النصوص، فقد تؤدي إلى أخطاء غير متوقعة.
- التعامل مع الأحرف الخاصة: إذا كانت السلسلة النصية تحتوي على أحرف خاصة، مثل علامات الاقتباس المزدوجة أو الخط المائل العكسي، يجب عليك الهروب منها باستخدام الخط المائل العكسي (\\).
خلاصة
سلاسل النصوص هي أداة قوية ومرنة في MQL. من خلال فهم كيفية تعريفها ومعالجتها واستخدامها، يمكنك تطوير استراتيجيات تداول آلية أكثر فعالية ومؤشرات فنية متطورة. تذكر أن الممارسة والتجربة هما المفتاح لإتقان استخدام سلاسل النصوص في MQL. استكشف الدوال المتاحة وجربها لتعزيز فهمك وتطوير مهاراتك.
روابط ذات صلة
- MQL4 Reference
- MQL5 Reference
- Data Types in MQL
- Variables in MQL
- Operators in MQL
- Functions in MQL
- استراتيجية التداول بالاتجاه
- استراتيجية التداول بالصدى
- تحليل حجم التداول
- مؤشر المتوسط المتحرك
- مؤشر RSI
- مؤشر MACD
- نماذج الشموع اليابانية
- التحليل الفني
- إدارة المخاطر في التداول
- الخيارات الثنائية: دليل المبتدئين
- استراتيجيات الخيارات الثنائية قصيرة الأجل
- استراتيجيات الخيارات الثنائية طويلة الأجل
- تحليل الأخبار في التداول
- التحليل الأساسي
- تداول الاختراقات
- تداول الارتدادات
- تداول التقاطعات
- تداول الأنماط
- تداول الاتجاهات
- تداول النطاقات
- التحوط في التداول
- التداول الخوارزمي
```
ابدأ التداول الآن
سجّل في IQ Option (الحد الأدنى للإيداع 10 دولار) افتح حساباً في Pocket Option (الحد الأدنى للإيداع 5 دولار)
انضم إلى مجتمعنا
اشترك في قناة Telegram الخاصة بنا @strategybin لتصلك: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات اتجاهات السوق ✓ مواد تعليمية للمبتدئين