اگر با «متاتریدر» در بازار فارکس کار کرده باشید، احتمالاً با اکسپرتها، اندیکاتورهای سفارشی و اسکریپتهایی روبهرو شدهاید که بخشی از کار معاملهگر را خودکار میکنند؛ شناخت «زبان برنامه نویسی متاتریدر» یکی از پایههای اصلی ورود به دنیای «الگوتریدینگ» است.
متاتریدر 4 که نسخه رسمی آن در “سال 2005” منتشر شد، از [MQL4] استفاده میکند و متاتریدر 5 نیز با [MQL5] امکان توسعه ابزارهای معاملاتی پیشرفته را فراهم کرده است؛ بنابراین معاملهگران در اکوسیستم متاتریدر با 2 زبان اصلی برای “ساخت ربات، اندیکاتور و اسکریپت” روبهرو هستند.
در پاسخ به این پرسش که زبان برنامه نویسی متاتریدر چیست؟ باید گفت [MQL] خانوادهای از زبانهای برنامهنویسی سطحبالاست که میتواند قوانین یک “استراتژی فارکس“ را به دستورهای قابل اجرا تبدیل کند.
با “زبان برنامه نویسی متاتریدر 4” میتوان اکسپرتها و ابزارهای مخصوص MT4 را توسعه داد، درحالیکه “زبان برنامه نویسی متاتریدر 5” امکانات گستردهتری برای تست، بهینهسازی و توسعه سیستمهای معاملاتی در MT5 ارائه میدهد.

این قابلیتها در بازار 24 ساعته و 5 روزه فارکس، امکان پایش منظم بازار و اجرای دقیقتر قوانین معاملاتی را فراهم میکنند. در ادامه، تفاوت MQL4 و MQL5، کاربرد هرکدام و نقش آنها در ساخت «ربات معاملاتی فارکس» را بررسی خواهیم کرد.
زبان برنامه نویسی متاتریدر با نام MetaQuotes Language یا MQL شناخته میشود و توسط MetaQuotes برای توسعه برنامههای معاملاتی در محیط MetaTrader ایجاد شده است.
نسخه متاتریدر 4 با MQL4 و نسخه متاتریدر 5 با MQL5 کار میکند. مستندات رسمی هر دو زبان را زبانهای سطحبالا و شیءگرا معرفی میکنند که سینتکس آنها به C++ نزدیک است.
نکته مهم این است که MQL زبان ساخت خود نرمافزار متاتریدر نیست؛ بلکه برای توسعه برنامههایی استفاده میشود که در محیط ترمینال معاملاتی اجرا میشوند. بنابراین معاملهگر میتواند منطق ورود، خروج، مدیریت معامله، محاسبات اندیکاتوری یا واکنش به رویدادهای بازار را به کد تبدیل کند.
برنامههای MQL معمولاً رویدادمحور هستند. برای مثال در یک Expert Advisor، تابع OnInit() هنگام راهاندازی برنامه اجرا میشود و OnTick() با دریافت تیک جدید قیمت فراخوانی میشود. برنامهنویس میتواند در این رویدادها شروط استراتژی، کنترل ریسک و دستورات معاملاتی را تعریف کند.
مهمترین برنامههایی که با MQL توسعه داده میشوند عبارتاند از:

زبان برنامه نویسی متاتریدر ۴ یا MQL4 برای توسعه ابزارهای قابل اجرا در MT4 استفاده میشود. این زبان هنوز برای بسیاری از کاربران فارکس مهم است؛ زیرا تعداد زیادی اکسپرت و اندیکاتور قدیمی و اختصاصی برای اکوسیستم MT4 نوشته شدهاند.
کد منبع در MQL4 با پسوند .mq4 ذخیره میشود و پس از کامپایل، فایل اجرایی .ex4 ایجاد میشود. MetaEditor نیز برای نوشتن، بررسی و کامپایل این کدها به کار میرود.
زبان برنامه نویسی متاتریدر 5 یا MQL5 زبان توسعه برنامهها در MT5 است. از آن برای ساخت سیستمهای معاملاتی خودکار، اندیکاتورها، اسکریپتها، سرویسها و کتابخانهها استفاده میشود و امکانات گستردهای برای مدیریت رویدادها و پروژههای الگوریتمی دارد.
فایل کد منبع MQL5 با پسوند .mq5 ذخیره میشود و پس از کامپایل، خروجی .ex5 تولید خواهد شد. MQL5 همچنین با Strategy Tester متاتریدر 5 یکپارچه است؛ محیطی که امکان تست استراتژی، تست چندنمادی و بهینهسازی پارامترها را فراهم میکند.
برای توسعهدهندهای که قصد ساخت ربات پیچیده یا اجرای بهینهسازیهای گسترده را دارد، امکانات تست MT5 اهمیت زیادی دارد. Strategy Tester متاتریدر 5 از پردازش چندرشتهای و عاملهای محاسباتی برای تست و بهینهسازی استفاده میکند و امکان ارزیابی استراتژیهای چندنمادی را نیز دارد.
اگرچه سینتکس دو زبان شباهت زیادی دارد، MQL5 یک نسخه کاملاً سازگار با MQL4 نیست. مدل مدیریت معاملات، برخی توابع، ساختار دادهها و APIها متفاوتاند؛ بنابراین هر فایل MQL4 را نمیتوان بدون تغییر در MT5 کامپایل و اجرا کرد.
| ویژگی | MQL4 | MQL5 |
|---|---|---|
| پلتفرم اصلی | MetaTrader 4 | MetaTrader 5 |
| فایل کد منبع | MQ4 | MQ5 |
| فایل کامپایلشده | EX4 | EX5 |
| کاربردها | اکسپرت، اندیکاتور، اسکریپت و کتابخانه | اکسپرت، اندیکاتور، اسکریپت، سرویس و کتابخانه |
| رویکرد برنامهنویسی | سطحبالا و شیءگرا | سطحبالا و شیءگرا با امکانات گستردهتر |
| تست و بهینهسازی | مناسب اکوسیستم MT4 | پیشرفتهتر، چندنمادی و چندرشتهای |
| انتقال کد | مخصوص MT4 | کد MQL4 معمولاً نیازمند سازگارسازی است |
در سطح مقدماتی، مفاهیمی مانند متغیر، شرط، حلقه و تابع در هر دو زبان مشابهاند. پیچیدگی MQL5 بیشتر در مدیریت سفارشها، پوزیشنها و رویدادهای متعدد دیده میشود، اما برای پروژههای بزرگتر انعطاف بیشتری ایجاد میکند.

MetaEditor محیط توسعه همراه متاتریدر برای نوشتن و کامپایل کدهای MQL است. در MT5 امکاناتی مانند تکمیل خودکار کد، قالبها، دیباگ و پروفایلینگ نیز در اختیار توسعهدهنده قرار دارد. پس از نوشتن فایل، با Compile یا کلید F7 کد بررسی و به فایل اجرایی تبدیل میشود.
چرخه معمول توسعه چنین است:
یک اکسپرت معمولاً از ورودیها، توابع کمکی و Event Handlerها تشکیل میشود.
پارامترهایی مانند حجم معامله، درصد ریسک، دوره اندیکاتور یا فاصله حد ضرر میتوانند بهصورت ورودی تعریف شوند تا بدون تغییر کد قابل تنظیم باشند.
در این بخش میتوان هندل اندیکاتورها، متغیرها یا منابع موردنیاز برنامه را آماده کرد و در صورت بروز خطا، راهاندازی را مدیریت کرد.
در اکسپرت، OnTick() هنگام دریافت تیک جدید اجرا میشود. بررسی سیگنال ورود، مدیریت پوزیشن یا تغییر حد ضرر میتواند از این رویداد آغاز شود.
منطق ریسک باید بخشی از خود سیستم باشد. تعیین حجم بر اساس موجودی، محدودیت تعداد معاملات، حداکثر زیان روزانه و کنترل اسپرد از قواعدی هستند که میتوان پیش از ارسال سفارش بررسی کرد.
برای یادگیری MQL لازم نیست از ابتدا برنامهنویس حرفهای باشید، اما شناخت منطق برنامهنویسی سرعت پیشرفت را بیشتر میکند. مسیر پیشنهادی عبارت است از:

زبان های برنامه نویسی متاتریدر MQL4 و MQL5 هستند. MQL4 برای MetaTrader 4 و MQL5 برای MetaTrader 5 استفاده میشود و امکان ساخت اکسپرت، اندیکاتور، اسکریپت و ابزارهای معاملاتی را فراهم میکنند.
زبان برنامه نویسی متاتریدر 5، MQL5 نام دارد. این زبان برای توسعه رباتهای معاملاتی، اندیکاتورهای اختصاصی، اسکریپتها، سرویسها و برنامههای الگوریتمی در MT5 طراحی شده است.
MetaTrader 4 از زبان MQL4 استفاده میکند. این زبان برای ساخت Expert Advisor، اندیکاتور سفارشی، Script و سایر ابزارهای قابل اجرا در اکوسیستم MT4 کاربرد دارد.
MQL4 مخصوص MT4 و MQL5 مخصوص MT5 است. ساختار کلی دو زبان شباهت دارد، اما API معاملات، برخی توابع و امکانات تست و توسعه آنها متفاوت است؛ بنابراین کدهای MQL4 معمولاً مستقیماً در MQL5 اجرا نمیشوند.
الزامی نیست، اما آشنایی با مفاهیمی مانند متغیر، شرط، حلقه و تابع یادگیری MQL را بسیار سادهتر میکند. معاملهگران مبتدی بهتر است کار را با پروژههای کوچک و اسکریپتهای ساده شروع کنند.