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 و دسترسی پیدا کنید به: ✓ سیگنالهای معاملاتی روزانه ✓ تحلیلهای استراتژیک انحصاری ✓ هشدارهای مربوط به روند بازار ✓ مواد آموزشی برای مبتدیان
- برنامهنویسی معاملات
- MetaTrader 4
- MetaTrader 5
- رباتهای معاملاتی
- اندیکاتورهای تحلیل تکنیکال
- زبانهای برنامهنویسی
- بازارهای مالی
- فارکس
- بازار سهام
- آتی
- CFD
- تحلیل تکنیکال
- تحلیل حجم معاملات
- برنامهنویسی
- MQL4/5
- خودکارسازی معاملات
- تست استراتژی
- بازارهای مالی جهانی
- نرمافزارهای معاملاتی
- یادگیری ماشین در معاملات
- هوش مصنوعی در معاملات
- الگوریتمهای معاملاتی
- مدیریت ریسک در معاملات
- سرمایهگذاری
- بازارهای سرمایه
- تحلیل بنیادی
- اقتصاد
- بازاریابی مالی
- معاملات الگوریتمی
- ابزارهای معاملاتی
- پلتفرمهای معاملاتی
- توسعه نرمافزار
- برنامهنویسی سیستم
- امنیت مالی
- قوانین معاملات
- مالیات بر معاملات
- جلوگیری از کلاهبرداری در معاملات
- اخبار و تحلیلهای بازار
- آموزش معاملات
- راهنمای معاملات
- اصطلاحات معاملات
- استراتژیهای معاملاتی پیشرفته
- مدیریت سرمایه
- روانشناسی معاملات
- معاملات روزانه
- معاملات نوسانی
- معاملات بلندمدت
- تحلیل بنیادی شرکتها
- شاخصهای اقتصادی
- سیاستهای پولی
- نرخ بهره
- تورم
- بورس
- ارزهای دیجیتال
- بلاکچین
- هوش مصنوعی
- یادگیری عمیق
- دادهکاوی
- پردازش زبان طبیعی
- بینایی کامپیوتر
- رباتیک
- اتوماسیون
- شبکههای عصبی
- الگوریتمهای بهینهسازی
- تحلیل دادهها
- تصمیمگیری خودکار
- سیستمهای خبره
- هوش تجاری
- دادهسازی
- مدلسازی پیشبینی
- آمار
- ریاضیات مالی
- احتمالات
- حساب دیفرانسیل و انتگرال
- جبر خطی
- بهینهسازی ریاضی
- شبیهسازی
- مدیریت پروژه
- توسعه نرمافزار چابک
- کنترل نسخه
- تست نرمافزار
- کیفیت نرمافزار
- امنیت نرمافزار
- مهندسی نرمافزار
- معماری نرمافزار
- پایگاه داده
- شبکههای کامپیوتری
- سیستم عامل
- سختافزار کامپیوتر
- اینترنت
- وب
- اپلیکیشنهای موبایل
- امنیت سایبری
- حریم خصوصی
- قانون فناوری اطلاعات
- تجارت الکترونیک
- بازاریابی دیجیتال
- رسانههای اجتماعی
- تبلیغات آنلاین
- سئو (SEO)
- تجربه کاربری (UX)
- طراحی رابط کاربری (UI)
- بازاریابی محتوا
- تحلیل وب
- آمار وب
- ابزارهای بازاریابی دیجیتال
- تحلیل رقبا
- تحلیل بازار
- تحلیل مشتری
- مدیریت ارتباط با مشتری (CRM)
- بازاریابی ایمیلی
- بازاریابی ویدیویی
- بازاریابی شبکههای اجتماعی
- تبلیغات گوگل
- تبلیغات فیسبوک
- تبلیغات اینستاگرام
- تبلیغات لینکدین
- تبلیغات توییتر
- تبلیغات پینترست
- تبلیغات اسنپچت
- تبلیغات تیکتاک
- بازاریابی تأثیرگذار
- بازاریابی وابسته
- بازاریابی ویروسی
- بازاریابی دهان به دهان
- بازاریابی رویدادی
- بازاریابی مستقیم
- بازاریابی تلفنی
- بازاریابی پستی
- بازاریابی پیامکی
- بازاریابی آفلاین
- بازاریابی سنتی
- بازاریابی تلویزیونی
- بازاریابی رادیویی
- بازاریابی چاپی
- بازاریابی بیرونی
- تبلیغات محیطی
- تبلیغات خیابانی
- تبلیغات بیلبوردی
- تبلیغات فلکسی
- تبلیغات بنری
- تبلیغات پوستر
- تبلیغات تراکت
- تبلیغات کارت ویزیت
- تبلیغات کاتالوگ
- تبلیغات بروشور
- تبلیغات مجله
- تبلیغات روزنامه
- تبلیغات کتاب
- تبلیغات رادیویی
- تبلیغات تلویزیونی
- بازاریابی سیاسی
- تبلیغات سیاسی
- انتخابات
- سیاست
- دولت
- اقتصاد سیاسی
- مطالعات رسانه
- ارتباطات
- روابط عمومی
- مدیریت بحران
- مسئولیت اجتماعی
- اخلاق کسب و کار
- پایداری
- مدیریت زنجیره تأمین
- تولید
- خدمات
- تجارت بینالملل
- بازرگانی
- صادرات
- واردات
- گمرک
- بیمه
- حمل و نقل
- فناوریهای نوین
- تحول دیجیتال
- اینترنت اشیا (IoT)
- هوش مصنوعی (AI)
- یادگیری ماشین (ML)
- پردازش زبان طبیعی (NLP)
- بینایی کامپیوتر (CV)
- رباتیک (Robotics)
- واقعیت مجازی (VR)
- واقعیت افزوده (AR)
- بلاکچین (Blockchain)
- ارزهای دیجیتال (Cryptocurrencies)
- هوش تجاری (BI)
- دادهکاوی (Data Mining)
- کلان داده (Big Data)
- امنیت سایبری (Cybersecurity)
- حریم خصوصی (Privacy)
- مهندسی داده (Data Engineering)
- علم داده (Data Science)
- تجزیه و تحلیل دادهها (Data Analytics)
- تصویرسازی دادهها (Data Visualization)
- مدیریت دادهها (Data Management)
- معماری دادهها (Data Architecture)
- انبار داده (Data Warehouse)
- دریاچه داده (Data Lake)
- تحلیل پیشبینیکننده (Predictive Analytics)
- تحلیل توصیفی (Descriptive Analytics)
- تحلیل تشخیصی (Diagnostic Analytics)
- تحلیل تجویزی (Prescriptive Analytics)
- یادگیری تقویتی (Reinforcement Learning)
- شبکههای عصبی عمیق (Deep Neural Networks)
- یادگیری انتقالی (Transfer Learning)
- پردازش تصویر (Image Processing)
- پردازش صدا (Audio Processing)
- پردازش ویدئو (Video Processing)
- پردازش متن (Text Processing)
- تشخیص الگو (Pattern Recognition)
- بینایی ماشین (Machine Vision)
- رباتیک صنعتی (Industrial Robotics)
- رباتیک خدماتی (Service Robotics)
- رباتیک پزشکی (Medical Robotics)
- رباتیک نظامی (Military Robotics)
- رباتیک فضایی (Space Robotics)
- خودروهای خودران (Self-Driving Cars)
- هوش مصنوعی در پزشکی (AI in Healthcare)
- هوش مصنوعی در آموزش (AI in Education)
- هوش مصنوعی در مالی (AI in Finance)
- هوش مصنوعی در بازاریابی (AI in Marketing)
- هوش مصنوعی در تولید (AI in Manufacturing)
- هوش مصنوعی در کشاورزی (AI in Agriculture)
- هوش مصنوعی در حمل و نقل (AI in Transportation)
- هوش مصنوعی در انرژی (AI in Energy)
- هوش مصنوعی در محیط زیست (AI in Environment)
- هوش مصنوعی در امنیت (AI in Security)
- هوش مصنوعی در دفاع (AI in Defense)
- هوش مصنوعی در حقوق (AI in Law)
- هوش مصنوعی در دولت (AI in Government)
- هوش مصنوعی در هنر (AI in Art)
- هوش مصنوعی در موسیقی (AI in Music)
- هوش مصنوعی در فیلمسازی (AI in Filmmaking)
- هوش مصنوعی در بازیسازی (AI in Gaming)
- هوش مصنوعی در روزنامهنگاری (AI in Journalism)
- هوش مصنوعی در علوم (AI in Science)
- هوش مصنوعی در مهندسی (AI in Engineering)
- هوش مصنوعی در ریاضیات (AI in Mathematics)