Functions in MQL4
```wiki
الدوال في لغة MQL4
مقدمة
لغة MQL4 (MetaQuotes Language 4) هي لغة برمجة خاصة تستخدم لتطوير برامج تداول آلية، ومؤشرات فنية، وسكربتات، وخبراء مستشارين (Expert Advisors) لمنصة MetaTrader 4، وهي منصة تداول شهيرة في أسواق الفوركس والخيارات الثنائية. تعتبر الدوال (Functions) جزءًا أساسيًا من MQL4، لأنها تسمح للمبرمجين بتنظيم الكود، وإعادة استخدامه، وتبسيط العمليات المعقدة. يهدف هذا المقال إلى تقديم شرح مفصل للدوال في MQL4 للمبتدئين، مع التركيز على كيفية تعريفها، واستدعائها، وأنواعها المختلفة، وكيفية استخدامها في تطوير استراتيجيات التداول الآلية. سنغطي أيضاً بعض الدوال المدمجة (Built-in Functions) الهامة في MQL4.
ما هي الدوال؟
الدالة هي مجموعة من التعليمات البرمجية التي تقوم بمهمة محددة. تأخذ الدالة مدخلات (Parameters) وتعيد مخرجات (Return Values). تساعد الدوال على تقسيم البرنامج إلى أجزاء أصغر وأكثر قابلية للإدارة، مما يسهل فهم الكود وصيانته وتعديله. كما أنها تعزز إعادة استخدام الكود، حيث يمكن استدعاء الدالة من أماكن مختلفة في البرنامج دون الحاجة إلى إعادة كتابة نفس التعليمات البرمجية.
تعريف الدوال في MQL4
يتم تعريف الدالة في MQL4 باستخدام الكلمات الرئيسية `int` أو `double` أو `bool` أو `string` لتحديد نوع البيانات التي ستعيدها الدالة، متبوعة باسم الدالة، ثم قائمة بالمعاملات (Parameters) بين قوسين، وأخيراً جسم الدالة بين أقواس معقوفة `{}`.
الصيغة العامة لتعريف الدالة:
```mql4 <نوع البيانات> <اسم الدالة> ( <قائمة المعاملات> ) {
// تعليمات الدالة return <القيمة التي تعيدها الدالة>;
} ```
- نوع البيانات (Data Type): يحدد نوع البيانات التي ستعيدها الدالة. تشمل الأنواع الشائعة:
* `int`: أعداد صحيحة. * `double`: أعداد عشرية. * `bool`: قيم منطقية (true أو false). * `string`: سلاسل نصية. * `void`: لا تعيد الدالة أي قيمة.
- اسم الدالة (Function Name): يجب أن يكون الاسم فريدًا ومعبرًا عن وظيفة الدالة.
- قائمة المعاملات (Parameters List): تحدد المعاملات التي تأخذها الدالة. يتم تحديد كل معامل بنوع البيانات الخاص به واسمه. يمكن أن تكون الدالة بدون معاملات.
- جسم الدالة (Function Body): يحتوي على التعليمات البرمجية التي تنفذ المهمة التي تقوم بها الدالة.
- عبارة return: تستخدم لإعادة قيمة من الدالة. يجب أن يكون نوع القيمة التي يتم إرجاعها مطابقًا لنوع البيانات المحدد للدالة.
مثال على تعريف دالة:
```mql4 int AddNumbers(int a, int b) {
int sum = a + b; return sum;
} ```
هذه الدالة تأخذ معاملين من النوع `int` (a و b) وتعيد مجموعهما كقيمة من النوع `int`.
استدعاء الدوال في MQL4
يتم استدعاء الدالة عن طريق كتابة اسم الدالة متبوعًا بقائمة المعاملات بين قوسين. إذا كانت الدالة تعيد قيمة، فيمكن تخزين هذه القيمة في متغير.
مثال على استدعاء الدالة AddNumbers:
```mql4 int result = AddNumbers(5, 3); // استدعاء الدالة وتخزين النتيجة في المتغير result Print("The sum is: ", result); // طباعة النتيجة ```
أنواع الدوال في MQL4
- الدوال المعرفة من قبل المستخدم (User-defined Functions): هي الدوال التي يتم تعريفها بواسطة المبرمج لتنفيذ مهام محددة. المثال السابق للدالة `AddNumbers` هو مثال على دالة معرفة من قبل المستخدم.
- الدوال المدمجة (Built-in Functions): هي الدوال التي تأتي مع MQL4 وتوفر وظائف أساسية مثل العمليات الرياضية، والوصول إلى بيانات السوق، وإدارة الأوامر، وغيرها. سنستعرض بعض الدوال المدمجة الهامة لاحقًا.
- الدوال المخصصة (Custom Functions): تستخدم في ملفات `.mqh` ويمكن استدعاؤها من ملفات أخرى.
نطاق المتغيرات في الدوال
المتغيرات التي يتم تعريفها داخل الدالة لها نطاق محلي (Local Scope)، مما يعني أنها لا يمكن الوصول إليها من خارج الدالة. المتغيرات التي يتم تعريفها خارج أي دالة لها نطاق عام (Global Scope)، مما يعني أنه يمكن الوصول إليها من أي مكان في البرنامج.
تمرير المعاملات إلى الدوال
يمكن تمرير المعاملات إلى الدوال بطريقتين رئيسيتين:
- التمرير بالقيمة (Pass by Value): يتم إنشاء نسخة من قيمة المعامل وإرسالها إلى الدالة. أي تغييرات يتم إجراؤها على المعامل داخل الدالة لا تؤثر على القيمة الأصلية.
- التمرير بالمرجع (Pass by Reference): يتم إرسال عنوان المعامل الأصلي إلى الدالة. أي تغييرات يتم إجراؤها على المعامل داخل الدالة تؤثر على القيمة الأصلية. يتم استخدام الكلمة الرئيسية `&` لتمرير المعامل بالمرجع.
الدوال المدمجة الهامة في MQL4
MQL4 توفر مجموعة واسعة من الدوال المدمجة التي تسهل تطوير برامج التداول. إليك بعض الدوال الهامة:
- `iClose(Symbol(), Period(), Shift)`: إرجاع سعر الإغلاق لشمعة معينة.
- `iHigh(Symbol(), Period(), Shift)`: إرجاع أعلى سعر لشمعة معينة.
- `iLow(Symbol(), Period(), Shift)`: إرجاع أقل سعر لشمعة معينة.
- `iOpen(Symbol(), Period(), Shift)`: إرجاع سعر الفتح لشمعة معينة.
- `iVolume(Symbol(), Period(), Shift)`: إرجاع حجم التداول لشمعة معينة.
- `TimeCurrent()`: إرجاع الوقت الحالي للخادم.
- `Symbol()`: إرجاع اسم الرمز الحالي.
- `Period()`: إرجاع الإطار الزمني الحالي.
- `OrderSend(Symbol(), OP_BUY, LotSize, Ask, Slippage, StopLoss, TakeProfit, Comment, MagicNumber, Expiration, ArrowColor)`: إرسال أمر تداول.
- `OrderClose(OrderTicket, LotSize, Bid, Slippage, StopLoss, TakeProfit, Comment, MagicNumber, Color)`: إغلاق أمر تداول.
- `NormalizeDouble(DoubleValue, Digits)`: تقريب قيمة double إلى عدد معين من المنازل العشرية.
- `StringFormat(FormatString, Argument1, Argument2, ...)`: تنسيق سلسلة نصية.
- `MathAbs(Value)`: إرجاع القيمة المطلقة لعدد.
- `MathRound(Value)`: تقريب عدد إلى أقرب عدد صحيح.
استخدام الدوال في استراتيجيات التداول الآلية
يمكن استخدام الدوال في MQL4 لتطوير استراتيجيات تداول آلية معقدة. على سبيل المثال، يمكن استخدام الدوال لتحليل بيانات السوق، وتحديد نقاط الدخول والخروج، وإدارة المخاطر، وتنفيذ الأوامر تلقائيًا.
مثال على استخدام الدوال في استراتيجية تداول:
لنفترض أننا نريد تطوير استراتيجية تداول بسيطة تعتمد على المتوسط المتحرك (Moving Average). يمكننا تعريف دالة لحساب المتوسط المتحرك:
```mql4 double CalculateMovingAverage(string Symbol, int Period, int MA_Period) {
double sum = 0.0; for (int i = 0; i < MA_Period; i++) { sum += iClose(Symbol, Period, i); } return sum / MA_Period;
} ```
ثم يمكننا استخدام هذه الدالة في خبير مستشار (Expert Advisor) لتحديد نقاط الدخول والخروج بناءً على تقاطع السعر مع المتوسط المتحرك.
الخلاصة
الدوال هي أداة قوية في MQL4 تسمح للمبرمجين بتنظيم الكود، وإعادة استخدامه، وتبسيط العمليات المعقدة. من خلال فهم كيفية تعريف الدوال، واستدعائها، وأنواعها المختلفة، وكيفية استخدامها في تطوير استراتيجيات التداول الآلية، يمكن للمبرمجين إنشاء برامج تداول فعالة وموثوقة. إتقان استخدام الدوال هو خطوة أساسية نحو إتقان لغة MQL4 وتطوير أنظمة تداول آلية ناجحة.
المصادر والمزيد من المعلومات
- MQL4 Documentation
- Expert Advisors
- Indicators
- Scripts
- MetaTrader 4
- Technical Analysis
- Fundamental Analysis
- Risk Management
- Money Management
- Trading Psychology
- Fibonacci Retracement
- Bollinger Bands
- MACD
- RSI
- Stochastic Oscillator
- Ichimoku Cloud
- Elliott Wave Theory
- Head and Shoulders Pattern
- Double Top Pattern
- Double Bottom Pattern
- Triangle Pattern
- Flag Pattern
- Pennant Pattern
- Gap Analysis
- Volume Analysis
- Candlestick Patterns
- Binary Options Strategies
- High-Frequency Trading
- Algorithmic Trading
- Scalping
- Day Trading
- Swing Trading
- Position Trading
- Martingale Strategy
- Anti-Martingale Strategy
- Grid Trading Strategy
- Breakout Strategy
- Reversal Strategy
- Trend Following Strategy
- News Trading Strategy
- Correlation Trading
```
ابدأ التداول الآن
سجّل في IQ Option (الحد الأدنى للإيداع 10 دولار) افتح حساباً في Pocket Option (الحد الأدنى للإيداع 5 دولار)
انضم إلى مجتمعنا
اشترك في قناة Telegram الخاصة بنا @strategybin لتصلك: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات اتجاهات السوق ✓ مواد تعليمية للمبتدئين