با زبان برنامه نویسی MQL متاتریدر را دستکاری کنید!
بازار فارکس با سرعت باورنکردنی و فوقالعاده زیادی در حال پیشروی است و بههمین دلیل، معاملهگرها به تصمیمگیریهای متعدد و همزمان نیاز دارند که اینجا، زبان برنامه نویسی MQL به کمک شما خواهد آمد.
خوشبختانه، زبان برنامه نویسی MQL این امکان را برای معاملهگرها یا تریدرها فراهم کرده است.
اما MQL دقیقاً چیست و چگونه میتوان از آن در فارکس استفاده کرد؟
MQL، یک زبان برنامهنویسی است که امکان ایجاد اندیکاتورهای تکنیکال، اسکریپتها، توابع و رباتهای معاملهگر را در پلتفرم متاتریدر فراهم میکند.
بهزبان سادهتر، این زبان برنامهنویسی کمک میکند تا پلتفرم معاملاتیتان را آنطور که میخواهید، شخصیسازی کنید.
در حال حاضر، 2 نسخه MQL 4 و MQL 5 برای برنامهنویسی در پلتفرمهای متاتریدر 4 و 5 ارائه شدهاند.
همگان شدن با همه جزئیات بازار فارکس، کار آسانی نیست.
اما با این حال، داشتن یک سیستم معاملاتی الگوریتمی با کمک زبان MQL میتوانید تصمیمهای آگاهانهای بگیرید و به سود واقعی برسید.
در این مقاله از وبسایت بروکرزفا در مورد اینکه MQL چیست، چگونه کار میکند و چطور میتوان از آن در معاملات فارکس استفاده کرد، آشنا میشوید.
زبان برنامه نویسی MQL چیست؟
MQL مخفف عبارت کامل MetaQuotes Language است و نوعی زبان برنامهنویسی سطح بالا محسوب میشود که توسط شرکت MetaQuotes Software Corp ارائه شده.
این زبان کدنویسی، بهصورت اختصاصی برای پلتفرم معاملاتی محبوب متاتریدر (MetaTrader) طراحی شده است و برای انجام معاملات در بازارهای مالی مثل فارکس، بورس اوراق بهادار و CFD استفاده میشود.
از جمله کاربردهای مهم زبان کدنویسی MQL در فارکس میتوان به موارد زیر اشاره کرد:
- ایجاد اندیکاتورهای سفارشی: MQL به تریدرها اجازه میدهد تا اندیکاتورهای تکنیکال را طبق سلیقه خودشان طراحی کنند. در نهایت، تریدرها میتوانند از ابزارهای شخصیسازیشده برای تجزیهوتحلیل نمودار قیمت و شناسایی پوزیشنهای معاملاتی استفاده کنند.
- ساخت رباتهای معاملاتی (Expert Advisors): زبان MQL فرصت برنامهریزی رباتهای معاملاتی خودکار یا EA را فراهم میکنند. تریدرها با استفاده از این رباتها میتوانند معاملاتشان را بهصورت خودکار در بازار فارکس انجام دهند.
- اسکریپتها و ابزارهای معاملاتی: زبان برنامه نویسی MQL برای ایجاد اسکریپتها و ابزارهای مختلف معاملاتی مثل ابزارهای مدیریت سفارش یا order، مدیریت ریسک و غیره هم کاربرد دارد.
MQL 4 و MQL 5 چیست؟
نسخههای MQL 4 و MQL 5 بسیار شبیه بههمدیگر هستند.
بنابراین، باید بهصورت جداگانه بررسی شوند، اما در حال حاضر هر 2 نسخه را با عنوان MQL و بدون اضافه کردن شماره آنها بررسی خواهیم کرد.
اگر حداقل یکبار هم سرمایهگذاری کرده باشید، میدانید که این کار به کنترل و نظارت بیوقفه نیاز دارد.
مطمئناً شما هم بیشتر از یکبار سؤالات زیر را از خودتان پرسیدهاید.
- آیا بهترین زمان خروج از معامله یا سرمایهگذاری، وقتی است که قیمت یک دارایی در اوج قرار دارد؟
- چگونه قیمت یک دارایی را پیشبینی کنم؟ آیا افزایش قیمت دارایی ادامه خواهد داشت یا روند بازار تغییر خواهد کرد؟
- سیگنالی که دریافت کردهام درست است؟ آیا به ریسک و عجله برای باز کردن پوزیشن معاملاتیام نیاز دارم؟
همه تریدرها باید همگام با بازار مالی مورد نظرشان حرکت کنند و تصمیمهای معاملاتی خود را بهموقع بگیرند.
زبان برنامه نویسی MQL به شما این اجازه را میدهد تا هر استراتژی یا الگوریتم معاملاتی خاص را در قالب یک برنامه کامپیوتری پیادهسازی کنید.
در ادامه، این برنامه کامپیوتری راهاندازی و بهطور مداوم در پلتفرم متاتریدر اجرا میشود.
علاوهبراین، تعداد زیادی اندیکاتور، ربات معاملاتی و اسکریپت هم در اختیار تریدر قرار میگیرند تا تصمیمهای معاملاتی بهتری بگیرد.
تصور کنید یک الگوریتم معاملاتی هوشمندانه پیدا کردهاید و میخواهید از آن در انجام معاملاتتان استفاده کنید.
با استفاده از زبان برنامه نویسی MQL هیچ محدودیتی در استفاده از این الگوریتم معاملاتی وجود نخواهد داشت و میتوانید هر ایدهای را پیاده کنید.
بررسی دادههای تاریخی، رفع اشکال، بررسی استراتژیها، کامپایل کردن و غیره از جمله مزایای MQL هستند که کاملاً بیخطر و البته مفید هستند.
داستان شکلگیری MQl 4 و MQL 5
شرکت متاکوتز (MetaQuotes) زبان برنامه نویسی MQL را همراه با پلتفرم MetaTrader که قبلاً بخشی از اپلیکیشن FXCharts بود، منتشر کرد.
MQL همراه با آپدیت متاتریدر 3 به نسخه 2 ارتقا پیدا کرد.
در این زمان، شرکت متاکوتز ابزاری با عنوان MetaQuotes API منتشر کرد که بهعنوان یک لایه اضافه بین مشتریان متاتریدر و سرور این پلتفرم در اختیار کاربران قرار گرفت.
نسل چهار پلتفرم معاملاتی متاتریدر (MT4) در یکم جولای 2005 معرفی شد و همراه با آن نسخه MQL 4 هم در اختیار کاربران قرار گرفت.
همچنین، شرکت متاکوتز پشتیسبانی از API را متوقف کرد و قابلیتهای زبان برنامه نویسی MQL را گشترس داد.
این کار باعث شد تا ابزارهای کاربردی MQL بیشتر شود و ابزار API فقط برای بروکرها، مدیریت سرور و وظایف اینچنین باقی بماند.
در ژوئن 2010، بعد از انتشار نسخه 5 پلتفرم معاملاتی متاتریدر، متاکوتز هم دستبهکار شد و بیشتر محدودیتها و باگهایی که MT5 داشت را برطرف کرد.
این کار با انتشار نسخه MQL 5 انجام شد تا شرکت MetaQuotes سایهبهسایه رپلتفرم معاملاتی متاتریدر حرکت کند.
البته، متاتریدر 4 بهاندازه متاتریدر 4 محبوبیت و کارایی ندارد و بههمین دلیل، کاربرد MQL 4 هم نسبت به MQL 5 بیشتر است.
در نهایت، در فوریه سال 2014 نسخه MQL 3 همراه با قابلیت ایجاد 600 ترمینال مشتری در پلتفرم متاتریدر 4 بهروزرسانی شد.
شرکت متاکوتز زبان برنامه نویسی MQL را بهبود بخشید و بسیاری از ویژگیهای MQL 5 را آپدیت کرد.
از همان زمان تا به امروز، استفاده از نسخههای کدنویسی MQL توسط تریدرهای حرفهای متوقف نشده و این زبان برنامهنویسی همچنان محبوب است.
زبان برنامه نویسی MQL چگونه کار میکند؟
زبان برنامهنویسی MQL مخصوصاً نسخه MQL 4 بر اساس مفاهیم زبان برنامهنویسی سی پلاسپلاس یا ++C کار میکند.
به این ترتیب، از بسیاری از مفاهیم ++C مثل برنامهنویسی شیءگرا یا OOP در MQL میتوان استفاده کرد.
زبان کدنویسی MQL، برنامهها و اپلیکیشنهای مختلفی را بر اساس قوانین مشخص اجرا میکند.
بهعنوان مثال، شما میتوانید 3 نوع برنامه یا اپلیکیشن در MQL 4 ایجاد و اجرا کنید: اسکریپتها، اندیکاتورهای سفارشی و رباتهای معاملهگر.
اسکریپتها (Scripts) برای تجزیهوتحلیل اقدامات نسبتاً ساده اما کاربردی مثل بستن دستورات (closing orders) یا حذف بعضی چیزها از یک نمودار تحلیل استفاده میشوند.
اندیکاتورهای سفارشی هم قدرتمندترین ابزارهای تحلیل بازارهای مالی محسوب میشوند.
در نهایت هم با استفاده از زبان برنامه نویسی MQL میتوانید بهترین رباتهای معاملهگر خودکار را طراحی و راهاندازی کنید.
البته، بهشرط اینکه سواد برنامهنویسی، کار با پلتفرم متاتریدر و دانش معاملاتی را داشته باشید.
ربات معاملهگر یا EA در MQL چیست؟
ربات معاملهگر در MQL مخصوصاً در نسخه MQL 4، برنامهای است که با استفاده از الگوریتمهای زبان MQL روی بازار مالی و ترید کردن نظارت میکند.
یک EA، فرصتها و پوزیشنهای معاملاتی مناسب را با توجه به پارامترهایی که تریدر تعیین کرده است، شناسایی میکند.
این ربات، دقیقاً مثل یک کمکراننده در مسابقات ماشینسواری عمل میکند و با خواندن صحیح نقشه راه، مسیر درست را به راننده نشان میدهد.
وقتی که یک EA فرصت یا پوزیشن مناسبی را پیدا کند، به تریدر اطلاع میدهد یا بهصورت خودکار آن پوزیشن را باز میکند.
پلتفرمی که برای ایجاد، ویرایش و کامپایل کردن رباتهای معاملهگر، اندیکاتورها و اسکریپتها در MQL استفاده میشود، MetaEditor نام دارد.
آشنایی با ابزار متا ادیتور (MetaEditor)
برای دسترسی به ابزار MetaEditor وارد پلتفرم معاملاتی متاتریدر 4 شوید و روی گزینه MetaEditor در نوار ابزار بالای پلتفرم کلیک کنید.
همچنین، میتوانید ویرایشگر زبان متاکوتز (MetaQuotes Language Editor) را در منوی ابزارها انتخاب کنید و به MetaEditor دسترسی داشته باشید.
ابزار MetaEditor را میتوان به 5 بخش مهم تقسیمبندی کرد.
اولین بخش، نوار ابزار است که در قسمت بالای پلتفرم قرار دارد.
همچنین، پنجره Navigator به کاربر اجازه میدهد تا در به فایلهای موجود در فهرست MQL 4 دسترسی داشته باشد.
ویرایشگر برنامهنویسی یا programming-writer editor قابلیتی است که با آن میتوان برنامههای فعال را نوشتن و ویرایش کرد.
گزینه toolbox شامل گزینههای مختلفی مثل errorها، نتایج جستوجو و غیره است و به برنامههای انجمن زبان برنامه نویسی MQL دسترسی دارد.
پنجمین بخش زبان برنامه نویسی MQL هم به status bar مربوط میشود که شامل دستورات برنامه، اطلاعات مربوط به مکاننما (cursor) و نشانگر حالت ورودی متن (INS/OVR) است.
وقتی که با تنظیمات ابزار MetaEditor آشنا باشید، میتوانید برنامهنویس با MQL را در متاتریدر شروع کنید.
ویژگیهای زبانهای برنامهنویسی MAQL 4 و MQL 5
MQL برای ایجاد استراتژیهای معاملاتی خودکار استفاده میشود.
کد MQL ابتدا به زبان ++C و سپس به یک کد قابل اجرا تبدیل میشود و مثل یک کتابخانه برای برنامهنویسی در بخش ترمینال متاتریدر کار میکند.
ترمینال (terminal)، پنجرهای خاص در پلتفرم MetaTrader 4 یا 5 است که کاربردهای مختلفی مثل مشاهده و مدیریت معاملات، بررسی نمودارها، اجرای اسکریپت و EA و غیره دارد.
حالا تصور کنید که زبان برنامه نویسی MQL مثل یک کتابخانه DLL (کتابخانه کدنویسی) در برنامه اصلی معاملات خودکار قرار داده شده است.
این ویژگی باعث میشود که نوشتن کدهای معاملاتی آسانتر و شروع کار با معاملات خودکار، سادهتر شود.
با وجود اینکه زبان برنامه نویسی MQL فقط برای معاملات خودکار کاربرد دارد و به پلتفرم MetaTrader وابسته است، بهدلیل سادگی و کاربری آسان در بین تریدرها محبوب شده.
منابع برنامهنویسی MQL 4 و MQL 5 با MetaWditor به چندین زبان در قالب فایلهای HTM ارائه میشوند.
بنابراین، همیشه به یک راهنمای دقیق با مثالهای کدنویسی برای اجرای صحیح برنامهها نیاز دارید.
خوشبختانه شرکت MetaQuotes برای کاربرانش اهمیت ویژهای قائل است و همه برنامههای کاربردیاش را با راهنمای دقیق ارائه میکند.
تبدیل شدن به یک برنامهنویس MQL
جامعه بزرگی از برنامهنویسان و تریدرهای علاقهمند به زبان برنامه نویسی MQL در شبکههای اجتماعی شکل گرفته است.
این جامعه بزرگ به کاربران تازهکار کمک میکند تا از تجربه و راهنماییهای برنامهنویسان MQL استفاده کنند و برنامههای کاربردی خودشان را بسازند.
همچنین، بازاری ویژه برای تبادل برنامههای MQL بهصورت رایگان و پولی در سایت mql5.com وجود دارد که میتوانید برنامههایتان را آنجا ارائه کنید.
اگر هم قاطعانه اصرار دارید که خودتان بهتنهایی زبان برنامه نویسی MQL را یاد بگیرید و دنیای برنامههایتان را تنهایی خلق کنید، میتوانید از نکات این مقاله بهرهمند شوید.
علاوهبراین مقاله، از ویدئوها و مطالب تخصصی دیگر هم استفاده کنید تا به زبان برنامه نویسی MQL مسلط شوید.
آشنایی با بخشهای مختلف MQL4 و MQL 5
این نکته مهم را فراموش نکنید که MQL فقط یک زبان برنامهنویسی است، نه یک پلتفرم!
در نتیجه، برای اجرای کدنویسی MQL در متاتریدر باید از ابزار MQL Wizard استفاده کنید.
این ابزار به شما کمک میکند تا اندیکاتورها، رباتهای معاملهگر و اسکریپتها را با استفاده از MQL در متاتریدر 4 و 5 ایجاد یا ویرایش کنید.
ابزار MQL Wizard، 8 گزینه مختلف برای MQL 4 و 10 گزینه برای MQL 5 ارائه میدهد.
محبوبترین گزینههای موجود در MQL Wizard عبارتاند از:
- ربات معاملهگر یا Expert Advisor/Trading robot
- اندیکاتور (Indicator)
- اسکریپت (Script)
- کتابخانه کدنویسی
وقتی با استفاده از زبان MQL اندیکاتور، ربات معاملاتی و اسکریپت میسازید، هر کدام بهصورت فایل خاص در پوشه مخصوص خودش در متاتریدر قرار میگیرد.
کدنویسی ربات معاملهگر با زبان MQL
برای اینکه با استفاده از زبان برنامه نویسی MQL یک ربات معاملهگر در متاتریدر 4 اجرا کنید، در ابتدا باید یک فایل جدید بسازید.
برای این کار، موارد زیر را بهترتیب انجام دهید:
- در متاتریدر 4 وارد منوی File شوید، سپس گزینه New و در ادامه گزینه MQL4/MQL5 Program را انتخاب کنید.
- برای فایل EA، اسم انتخاب کنید (مثلاً mq4)
حالا کد MQL را بنویسید:
- در ادامه، نمونهای ساده از کدنویسی MQL برای ایجاد EA که هر 100 کندل یکبار معامله میکند، آورده شده است.
//+------------------------------------------------------------------+ //| MySimpleEA.mq4 | //| Copyright 2024 Your Name | //|------------------------------------------------------------------+ #property copyright "Your Name" #property link "" #property strict // Include necessary libraries #include <Trade\AccountInfo.mqh> // Declare global variables int MagicNumber = 12345; // Unique identifier for your EA double EntryPrice = 0.0; // Price to enter the trade // Function to initialize the EA int OnInit() { // Print a message to the console Print("MySimpleEA initialized"); // Set the magic number for the EA SetInteger(MAGIC_NUMBER, MagicNumber); // Return initialization success return(INIT_SUCCEEDED); } // Function to deinitialize the EA void OnDeinit(const int reason) { // Print a message to the console Print("MySimpleEA deinitialized"); } // Function to handle tick events void OnTick() { // Get the current symbol string Symbol = SymbolInfoDouble(Symbol()); // Get the current bid price double BidPrice = Ask(); // Check if 100 new ticks have passed since the last trade if (Bars(Symbol) >= 100 && !OrderIsOpen()) { // Enter a buy order at the current bid price OrderSend(Symbol, OP_BUY, 0.1, BidPrice, 3, 0, 0, BidPrice + 100 * Point, MagicNumber, 0, Green); // Update the entry price EntryPrice = BidPrice; } }
پس از وارد کردن این کد، موارد زیر را بهترتیب انجام دهید.
- گزینه Compile را در متاتریدر 4 انتخاب کنید. اگر خطا یا erro خاصی وجود نداشته باشد، EA با موفقیت کامپایل میشود.
- در بخش Toolbox پنل Export Advisors را پیدا و EA خود را به نمودار دلخواه اصطلاحاً drag کنید.
- گزینه Auto Trading را در نوار ابزار یا toolbox فعال کنید.
توجه : این کدنویسی فقط نمونهای ساده است و EAهای واقعی، پیچیدگیهای بیشتری دارند.
قبل از استفاده از هر EA در اکانت معاملاتی واقعی، آن را در دمو اکانت (demo account) را حساب آزمایشی تست کنید.
برای یادگیری بیشتر در مورد زبان برنامه نویسی MQL و ساخت EA از منابع آموزشی متاتریدر 4 و انجمنهای آنلاین MQL کمک بگیرید.
چگونه با MQL در متاتریدر 4 اندیکاتور بسازیم؟
کدنویسی و اجرای انواع اندیکاتور در پلتفرم معاملاتی متاتریدر 4 هم به آسانی کدنویسی EA است.
برای این کار در ابتدا با توجه به موارد زیر یک فایل جدید ایجاد کنید.
- در متاتریدر 4 وارد منوی File شوید، گزینه New و سپس گزینه MQL4/MQL5 Program را انتخاب کنید.
- برای فایل اندیکاتور خود، اسم انتخاب کنید (مثلاً mq5)
در ادامه، کد اندیکاتور مورد نظرتان را بنویسید و اجرا کنید. برای نمونه، از یک کد خیلی ساده برای ساخت اندیکاتوری که میانگین متحرک 20 دورهای را روی نمودار رسم میکند، استفاده کردهایم:
//+------------------------------------------------------------------+ //| MySimpleIndicator.mq4 | //| Copyright 2024 Your Name | //|------------------------------------------------------------------+ #property copyright "Your Name" #property link "" #property strict // Include necessary libraries #include <Trade\AccountInfo.mqh> // Declare global variables int MA_Period = 20; // Period for the moving average // Function to initialize the indicator int OnInit() { // Print a message to the console Print("MySimpleIndicator initialized"); // Set the indicator buffers IndicatorSetIndicators(this, _Symbol, INDICATOR_CALCULATIONS); // Return initialization success return(INIT_SUCCEEDED); } // Function to deinitialize the indicator void OnDeinit(const int reason) { // Print a message to the console Print("MySimpleIndicator deinitialized"); } // Function to calculate and draw the moving average void OnTick() { // Get the current symbol string Symbol = SymbolInfoDouble(Symbol()); // Calculate the moving average double MA[] = iMA(NULL, 0, MA_Period, 0, MODE_SMA, PRICE_CLOSE, 0); // Draw the moving average line on the chart iColor(Yellow); iLine(Symbol, 0, Bars(Symbol), MA, 0); }
برای اجرا یا کامپایل کردن این کد، موارد زیر را بهترتیب انجام دهید.
- برای اجرای کد روی گزینه Compile کلیک کنید.
- پس از اجرای موفقیتآمیز و کامپایل شدن کد، از بخش toolbox، وارد پنل Indicators شوید و اندیکاتورتان را به نمودار مورد نظر drag کنید.
چگونه با استفاده از MQL اسکریپت بنویسم؟
با ساختن اسکریپت پیچیده و منحصربهفرد میتوانید بازار را بهراحتی تحلیل، معاملاتتان را مدیریت و سیگنالهای معاملاتی را ارسال کنید.
با این حال، برای شروع باید بدانید که چگونه با استفاده از زبان برنامه نویسی MQL میتوان اسکریپت نوشت.
برای شروع، مثل 2 بخش قبلی وارد گزینه File شوید و فایل جدیدی برای اسکریپت بسازید.
بعد از انتخاب عنوان، کد اسکریپت را با استفاده از زبان برنامه نویسی MQL بنویسید و وارد کنید.
برای مثال، ما نمونهای خیلی ساده از اسکریپتی که تمام معاملات باز را میبندد، استفاده کردهایم.
کد این اسکریپت به زبان برنامه نویسی MQL اینگونه است:
//+------------------------------------------------------------------+ //| MySimpleScript.mq4 | //| Copyright 2024 Your Name | //|------------------------------------------------------------------+ #property copyright "Your Name" #property link "" #property strict // Include necessary libraries #include <Trade\AccountInfo.mqh> // Function to close all open orders void CloseAllOrders() { // Get the number of open orders int NumOrders = OrdersTotal(); // Loop through each order and close it for (int i = 0; i < NumOrders; i++) { OrderClose(OrderTicket(i), OrderLots(i), OrderBid(i), i, 3); } // Print a message to the console Print("All orders closed"); } // Function to start the script void OnStart() { // Close all open orders CloseAllOrders(); }
برای اجرای زبان برنامه نویسی MQL روی گزینه Compile کلیک کنید.
در ادامه، از بخش toolbox وارد پنل Scripts شوید و با دابلکلیک کردن آن را اجرا کنید.
همراه با زبان برنامه نویسی MQL در قلههای فارکس!
زبان برنامه نویسی MQL بهصورت اختصاصی برای پلتفرم معاملاتی متاتریدر طراحی شده است و برای هر نسخه این پلتفرم، یک نسخه ویژه دارد.
در این مقاله از وبسایت بروکرزفا به همه نکات مهم در مورد زبان برنامه نویسی MQL و نحوه کدنویسی مقدماتی در متاتریدر 4 اشاره کردیم.
در حال حاضر، با استفاده از این زبان کدنویسی میتوانید رباتهای معاملهگر یا EA، انواع اسکریپتها و اندیکاتورها را طبق سلیقه خودتان بسازید و اجرا کنید.
برای موفقیت در دنیای معاملات فارکس و بازارهای مالی به دانش تخصصی، تجربه و آمادگی بالا نیاز دارید.
سرمایه اولیه برای شروع تریدینگ فارکس مهم است، اما همهچیز نیست.
شما میتوانید با مطالعه مقالات وبسایت ما دانش خود را در زمینه تریدینگ فارکس ارتقا دهید و به سطوح بالاتری برسید!