MQL4/5
- MQL4 / MQL5: راهنمای جامع برای مبتدیان
MQL4 و MQL5 زبانهای برنامهنویسی هستند که به طور خاص برای توسعه رباتهای معاملهگر (Expert Advisors یا EA)، اندیکاتورهای تحلیل تکنیکال و اسکریپتها در پلتفرمهای معاملاتی MetaTrader 4 و MetaTrader 5 استفاده میشوند. این زبانها امکان خودکارسازی استراتژیهای معاملاتی و تحلیل بازار را فراهم میکنند. در این مقاله، ما به بررسی عمیق MQL4 و MQL5، تفاوتهای کلیدی آنها، ساختار، مفاهیم اساسی و نحوه شروع برنامهنویسی با این زبانها خواهیم پرداخت.
MQL4 در مقابل MQL5: نگاهی سریع
| ویژگی | MQL4 | MQL5 | |---|---|---| | پلتفرم | MetaTrader 4 | MetaTrader 5 | | سال معرفی | 2000 | 2010 | | نوع داده | محدودتر | گستردهتر و دقیقتر | | سرعت اجرا | معمولاً کندتر | معمولاً سریعتر | | امکانات برنامهنویسی | سادهتر | پیچیدهتر و قویتر | | پشتیبانی از رویدادها | محدود | گستردهتر | | تست استراتژی | محدودتر | پیشرفتهتر (استراتژی تستر) | | بازارها | عمدتاً فارکس | فارکس، سهام، آتی، CFD |
MQL4 زبان قدیمیتری است و به دلیل سادگی، برای مبتدیان مناسبتر به نظر میرسد. با این حال، MQL5 امکانات بسیار بیشتری را ارائه میدهد و برای توسعه استراتژیهای معاملاتی پیچیدهتر و بهینهتر مناسب است.
ساختار یک برنامه MQL4/5
هر برنامه MQL4/5 از بخشهای زیر تشکیل شده است:
- **شرح (Description):** اطلاعاتی در مورد برنامه، نویسنده و تاریخ ایجاد.
- **ورودیها (Inputs):** متغیرهایی که کاربر میتواند آنها را تغییر دهد و بر عملکرد برنامه تأثیر بگذارد.
- **متغیرهای سراسری (Global Variables):** متغیرهایی که در کل برنامه قابل دسترسی هستند.
- **توابع (Functions):** بلوکهای کد که وظیفهای خاص را انجام میدهند.
- **توابع اصلی (Main Functions):**
* `OnInit()`: این تابع در هنگام شروع برنامه (بارگذاری یا راهاندازی) اجرا میشود. * `OnDeinit()`: این تابع در هنگام توقف یا حذف برنامه اجرا میشود. * `OnTick()`: این تابع در هر تیک (تغییر قیمت) اجرا میشود و قلب تپنده رباتهای معاملاتی است. * `OnTrade()`: این تابع در هنگام انجام یک معامله (باز شدن، بسته شدن، اصلاح) اجرا میشود. * `OnTimer()`: این تابع در فواصل زمانی مشخص (تعیین شده توسط کاربر) اجرا میشود.
مفاهیم اساسی برنامهنویسی MQL4/5
- **انواع داده (Data Types):** MQL4/5 از انواع دادههای مختلفی مانند `int` (عدد صحیح)، `double` (عدد اعشاری)، `bool` (منطقی)، `string` (رشته) و `datetime` (تاریخ و زمان) پشتیبانی میکند.
- **عملگرها (Operators):** عملگرهای ریاضی (+، -، *، /)، عملگرهای مقایسهای (==، !=، <، >، <=، >=) و عملگرهای منطقی (&&، ||، !) برای انجام عملیات مختلف در برنامه استفاده میشوند.
- **دستورات شرطی (Conditional Statements):** دستورات `if`، `else if` و `else` برای اجرای کد بر اساس شرایط خاص استفاده میشوند.
- **حلقهها (Loops):** حلقههای `for`، `while` و `do-while` برای تکرار اجرای یک بلوک کد استفاده میشوند.
- **آرایهها (Arrays):** آرایهها برای ذخیره مجموعهای از دادههای همنوع استفاده میشوند.
- **توابع (Functions):** توابع برای سازماندهی کد و استفاده مجدد از آن استفاده میشوند.
- **متغیرها (Variables):** متغیرها برای ذخیره دادهها در حافظه استفاده میشوند.
شروع برنامهنویسی با MQL4/5
1. **دانلود و نصب MetaEditor:** MetaEditor محیط توسعه یکپارچه (IDE) برای برنامهنویسی MQL4/5 است. این برنامه به همراه پلتفرم MetaTrader 4 یا MetaTrader 5 نصب میشود. 2. **ایجاد یک فایل جدید:** در MetaEditor، یک فایل جدید از نوع Expert Advisor، Indicator یا Script ایجاد کنید. 3. **نوشتن کد:** کد خود را با استفاده از دستورات و مفاهیم MQL4/5 بنویسید. 4. **کامپایل کردن کد:** کد خود را کامپایل کنید تا به یک فایل اجرایی (ex4 برای MQL4 و ex5 برای MQL5) تبدیل شود. 5. **تست کردن کد:** کد خود را در پلتفرم MetaTrader 4 یا MetaTrader 5 تست کنید.
مثال: یک ربات معاملاتی ساده MQL4
```mql4 //+------------------------------------------------------------------+ //| SimpleEA.mq4 | //| Copyright 2023, Your Name | //| https://yourwebsite.com | //+------------------------------------------------------------------+
- property copyright "Copyright 2023, Your Name"
- property link "https://yourwebsite.com"
- property version "1.00"
extern double Lots = 0.1; extern int TakeProfit = 50; extern int StopLoss = 25;
int OnInit() {
return(INIT_SUCCEEDED);
}
void OnTick() {
double Ask = MarketInfo(Symbol(), MODE_ASK); double Bid = MarketInfo(Symbol(), MODE_BID);
// خرید در صورت بریک اوت از مقاومت if(Ask > 1.1000) { OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, Ask - StopLoss * Point, Ask + TakeProfit * Point, "Simple EA", 12345, 0, Green); }
// فروش در صورت بریک داون از حمایت if(Bid < 1.0800) { OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, Bid + StopLoss * Point, Bid - TakeProfit * Point, "Simple EA", 12345, 0, Red); }
} ```
این ربات معاملاتی ساده در صورت بریک اوت قیمت از مقاومت (1.1000) یک سفارش خرید و در صورت بریک داون قیمت از حمایت (1.0800) یک سفارش فروش باز میکند.
مثال: یک اندیکاتور سفارشی ساده MQL5
```mql5 //+------------------------------------------------------------------+ //| SimpleMA.mq5 | //| Copyright 2023, Your Name | //| https://yourwebsite.com | //+------------------------------------------------------------------+
- property copyright "Copyright 2023, Your Name"
- property link "https://yourwebsite.com"
- property version "1.00"
- property indicator_chart_window
input int MAPeriod = 20;
double MA[];
int OnInit() {
ArraySetAsSeries(MA, true); return(INIT_SUCCEEDED);
}
int OnCalculate(const int ratesTotal,
const int prevCalculated, const int begin, const double &price[]) {
for(int i = begin; i < ratesTotal; i++) { MA[i] = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, i); }
return(ratesTotal);
} ```
این اندیکاتور سفارشی یک میانگین متحرک ساده (SMA) را با دوره زمانی مشخص شده توسط کاربر محاسبه و نمایش میدهد.
منابع یادگیری بیشتر
- MQL4 Documentation: [1](https://www.mql4.com/docs/basis/language)
- MQL5 Documentation: [2](https://www.mql5.com/en/docs)
- MQL5 Community: [3](https://www.mql5.com/en/forum)
- Babypips MQL4/5 Tutorial: [4](https://www.babypips.com/learn/forex/mql4)
استراتژیهای مرتبط
تحلیل تکنیکال
تحلیل حجم معاملات
- حجم معاملات
- On Balance Volume (OBV)
- Accumulation/Distribution Line
- Money Flow Index (MFI)
- Volume Price Trend (VPT)
نتیجهگیری
MQL4 و MQL5 ابزارهای قدرتمندی برای توسعه رباتهای معاملاتی، اندیکاتورهای سفارشی و اسکریپتها هستند. با یادگیری این زبانها، میتوانید استراتژیهای معاملاتی خود را به صورت خودکار پیادهسازی کنید و از فرصتهای معاملاتی در بازار بهرهمند شوید. با تمرین و مطالعه مستمر، میتوانید به یک برنامهنویس MQL4/5 ماهر تبدیل شوید.
شروع معاملات الآن
ثبتنام در IQ Option (حداقل واریز $10) باز کردن حساب در Pocket Option (حداقل واریز $5)
به جامعه ما بپیوندید
در کانال تلگرام ما عضو شوید @strategybin و دسترسی پیدا کنید به: ✓ سیگنالهای معاملاتی روزانه ✓ تحلیلهای استراتژیک انحصاری ✓ هشدارهای مربوط به روند بازار ✓ مواد آموزشی برای مبتدیان