برنامه‌نویسی MQL

From binaryoption
Jump to navigation Jump to search
Баннер1

برنامه‌نویسی MQL

برنامه‌نویسی MQL (MetaQuotes Language) به معنای نوشتن برنامه‌های تجاری خودکار (Expert Advisors یا EA)، اندیکاتورهای سفارشی و اسکریپت‌ها برای پلتفرم‌های معاملاتی MetaTrader 4 و MetaTrader 5 است. MQL یک زبان برنامه‌نویسی سطح بالا است که بر اساس C++ طراحی شده و به معامله‌گران اجازه می‌دهد تا استراتژی‌های معاملاتی خود را به صورت خودکار پیاده‌سازی کنند، تحلیل‌های تکنیکال پیشرفته انجام دهند و ابزارهای معاملاتی خود را سفارشی‌سازی کنند.

مقدمه

پلتفرم MetaTrader یکی از محبوب‌ترین پلتفرم‌های معاملاتی در جهان است. قدرت اصلی این پلتفرم، امکان استفاده از برنامه‌های نوشته شده به زبان MQL است. این برنامه‌ها می‌توانند به طور خودکار معامله کنند، اندیکاتورهای سفارشی را نمایش دهند و وظایف مختلف دیگری را انجام دهند. یادگیری برنامه‌نویسی MQL به معامله‌گران این امکان را می‌دهد تا به طور کامل از پتانسیل پلتفرم MetaTrader استفاده کنند و استراتژی‌های معاملاتی خود را بهینه کنند.

تفاوت MQL4 و MQL5

دو نسخه اصلی از زبان MQL وجود دارد: MQL4 و MQL5. MQL4 برای پلتفرم MetaTrader 4 و MQL5 برای پلتفرم MetaTrader 5 طراحی شده است. تفاوت‌های کلیدی بین این دو نسخه عبارتند از:

  • سرعت اجرا: MQL5 به طور کلی سریع‌تر از MQL4 اجرا می‌شود.
  • امکانات: MQL5 امکانات بیشتری نسبت به MQL4 ارائه می‌دهد، مانند پشتیبانی از چند رشته‌ای (multithreading) و دسترسی به داده‌های بازار تاریخی بیشتر.
  • ساختار: ساختار MQL5 مدرن‌تر و سازمان‌یافته‌تر از MQL4 است.
  • سازگاری: برنامه‌های نوشته شده به MQL4 با MQL5 سازگار نیستند و نیاز به بازنویسی دارند.

در این مقاله، ما عمدتاً بر روی MQL4 تمرکز خواهیم کرد، زیرا هنوز هم پرکاربردترین نسخه است و منابع آموزشی بیشتری برای آن در دسترس است. با این حال، مفاهیم اصلی برای هر دو نسخه یکسان هستند.

ساختار یک برنامه MQL4

یک برنامه MQL4 شامل چهار بخش اصلی است:

  • تعاریف (Definitions): در این بخش، متغیرها، توابع و کلاس‌ها تعریف می‌شوند.
  • متغیرهای سراسری (Global Variables): متغیرهایی که در تمام قسمت‌های برنامه قابل دسترسی هستند.
  • توابع (Functions): بلوک‌های کد که وظایف خاصی را انجام می‌دهند.
  • توابع اصلی (Main Functions): توابعی که هنگام اجرای برنامه فراخوانی می‌شوند، مانند `OnInit()‎`، `OnDeinit()‎`، `OnTick()‎` و `OnCalculate()‎`.

توابع اصلی

  • OnInit()‎: این تابع هنگام بارگذاری برنامه در نمودار فراخوانی می‌شود. معمولاً برای انجام کارهای اولیه مانند مقداردهی اولیه متغیرها و تنظیم پارامترها استفاده می‌شود.
  • OnDeinit()‎: این تابع هنگام حذف برنامه از نمودار فراخوانی می‌شود. معمولاً برای آزاد کردن منابع و انجام کارهای پایانی استفاده می‌شود.
  • OnTick()‎: این تابع با هر تیک (تغییر قیمت) فراخوانی می‌شود. معمولاً برای انجام محاسبات معاملاتی و ارسال سفارشات استفاده می‌شود.
  • OnCalculate()‎: این تابع برای محاسبه مقادیر اندیکاتور سفارشی فراخوانی می‌شود.

عناصر اصلی زبان MQL4

MQL4 از بسیاری از عناصر زبان C++ استفاده می‌کند، اما با برخی تغییرات و افزودنی‌های خاص. برخی از عناصر اصلی زبان عبارتند از:

  • انواع داده (Data Types): شامل انواع داده‌ای مانند `int` (عدد صحیح)، `double` (عدد اعشاری)، `bool` (منطقی)، `string` (رشته) و `datetime` (تاریخ و زمان) است.
  • عملگرها (Operators): شامل عملگرهای ریاضی، منطقی، مقایسه‌ای و انتسابی است.
  • عبارات شرطی (Conditional Statements): شامل عبارات `if`، `else` و `else if` است.
  • حلقه‌ها (Loops): شامل حلقه‌های `for`، `while` و `do-while` است.
  • توابع (Functions): بلوک‌های کد که وظایف خاصی را انجام می‌دهند.
  • آرایه‌ها (Arrays): مجموعه‌ای از متغیرها با یک نوع داده یکسان.

مثال: یک اندیکاتور ساده

در اینجا یک مثال ساده از یک اندیکاتور سفارشی که میانگین متحرک (Moving Average) را محاسبه می‌کند، آورده شده است:

```mql4

  1. property indicator_separate_window
  2. property indicator_buffers 1
  3. property indicator_plots 1

double MA[];

int OnInit()

 {
  SetIndexBuffer(0, MA, INDICATOR_DATA);
  IndicatorDigits(4);
  return(INIT_SUCCEEDED);
 }

int OnCalculate(int rates_total,

               int prev_calculated,
               int begin,
               double &buffer[])
 {
  int i;
  double sum = 0.0;
  for(i = 0; i < rates_total; i++)
    {
     sum += Close[i];
    }
  double ma = sum / rates_total;
  for(i = 0; i < rates_total; i++)
    {
     buffer[i] = ma;
    }
  return(rates_total);
 }

```

این کد یک اندیکاتور را تعریف می‌کند که میانگین متحرک قیمت بسته شدن (Close) را محاسبه می‌کند و آن را در یک پنجره جداگانه نمایش می‌دهد.

کار با داده‌های بازار

MQL4 دسترسی به داده‌های بازار را از طریق متغیرهای سراسری فراهم می‌کند. برخی از متغیرهای مهم عبارتند از:

  • Open[i]: قیمت باز شدن شمع i-ام.
  • High[i]: قیمت بالاترین شمع i-ام.
  • Low[i]: قیمت پایین‌ترین شمع i-ام.
  • Close[i]: قیمت بسته شدن شمع i-ام.
  • Volume[i]: حجم معاملات شمع i-ام.
  • Time[i]: زمان شمع i-ام.

مدیریت سفارشات

MQL4 توابعی را برای ارسال، اصلاح و بستن سفارشات ارائه می‌دهد. برخی از توابع مهم عبارتند از:

  • OrderSend(): برای ارسال یک سفارش جدید.
  • OrderModify(): برای اصلاح یک سفارش موجود.
  • OrderClose(): برای بستن یک سفارش موجود.
  • OrdersTotal(): برای شمارش تعداد سفارشات باز.
  • OrderSelect(): برای انتخاب یک سفارش خاص.

دیباگینگ و تست

دیباگینگ و تست برنامه‌های MQL4 بسیار مهم است. MetaEditor یک دیباگر داخلی دارد که به شما امکان می‌دهد کد خود را خط به خط اجرا کنید و مقادیر متغیرها را بررسی کنید. همچنین، MetaTrader یک استراتژی تستر (Strategy Tester) دارد که به شما امکان می‌دهد برنامه‌های خود را بر روی داده‌های تاریخی تست کنید و عملکرد آنها را ارزیابی کنید.

منابع آموزشی

  • MetaQuotes Language Reference: [[1]]
  • MQL4 Documentation: [[2]]
  • MQL5 Community: [[3]]

استراتژی‌های معاملاتی مرتبط

تحلیل تکنیکال مرتبط

تحلیل حجم معاملات مرتبط

نتیجه‌گیری

برنامه‌نویسی MQL یک ابزار قدرتمند برای معامله‌گران است که به آنها امکان می‌دهد تا استراتژی‌های معاملاتی خود را به صورت خودکار پیاده‌سازی کنند و ابزارهای معاملاتی خود را سفارشی‌سازی کنند. با یادگیری MQL، می‌توانید کنترل بیشتری بر معاملات خود داشته باشید و پتانسیل سودآوری خود را افزایش دهید.

    • توضیح:** این دسته‌بندی به دلیل تمرکز مقاله بر برنامه‌نویسی MQL و مثال‌های ارائه شده، مناسب‌ترین گزینه است. این دسته‌بندی به کاربران کمک می‌کند تا به راحتی مقالات مرتبط با MQL4 و MQL5 را پیدا کنند.

شروع معاملات الآن

ثبت‌نام در IQ Option (حداقل واریز $10) باز کردن حساب در Pocket Option (حداقل واریز $5)

به جامعه ما بپیوندید

در کانال تلگرام ما عضو شوید @strategybin و دسترسی پیدا کنید به: ✓ سیگنال‌های معاملاتی روزانه ✓ تحلیل‌های استراتژیک انحصاری ✓ هشدارهای مربوط به روند بازار ✓ مواد آموزشی برای مبتدیان

Баннер