مبانی زبان MQL5 _ بخش 1

 

مبانی زبان MetaQuotes Language 5 (MQL5)
مبانی زبان MetaQuotes Language 5 (MQL5)

 

در نخستین مقاله‌ی آموزش زبان mql از سری مقالات مرتبط با برنامه نویسی در بازار‌ها‌ی مالی به شرح و  بررسی «مبانی زبان MQL5» می‌پردازیم.

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

– – –

مبانی زبان MQL5
مبانی زبان MQL5

در نخستین بخش آموزش زبان ام کیو ال مختصری به شرح کلی این زبان می‌پردازیم.:  MetaQuotes Language 5 (MQL5) یک زبان سطح بالا است که برای توسعه اندیکاتورهای فنی، ربات‌های معاملاتی و برنامه‌های کاربردی سودمند طراحی شده است که معاملات مالی را خودکار می‌کند. زبان MQL5 توسط MetaQuotes برای پلتفرم معاملاتی آن توسعه داده شده است. ساختار کلی زبان MQL5 بسیار نزدیک به زبان ++C است و برنامه‌نویسان را قادر می‌سازد تا برنامه‌هایی را در سبک برنامه‌نویسی شی‌گرا (OOP) توسعه دهند.

علاوه بر زبان MQL5، پکیج پلتفرم معاملاتی Meta همچنین شامل MetaEditor IDE با ابزارهای کدنویسی بسیار پیشرفته، مانند قالب‌ها(templates)، قطعه‌ها(snippets)، اشکال‌زدایی(debugging)، پروفایل‌سازی(profiling) و ابزارهای تکمیل خودکار(auto completion tools)، و همچنین MQL5 Storage داخلی است که امکان نسخه‌سازی فایل (File Versioning) را فراهم می‌کند.

یکی از موارد مهم در یادگیری هر زبانی کاربرد داکیومنت‌ها و موارد پشتیبانی آن زبان است. برای کمک به فرایند آموزش زبان mql نیز می‌توان پشتیبانی این زبان را که در وب سایت MQL5 community موجود است استفاده کرد که شامل یک CodeBase رایگان و تعداد زیادی مقاله است.

این مقالات تمام جنبه‌های تجارت مدرن(modern trading)، از جمله شبکه‌های عصبی(neural networks)، آمار و تجزیه و تحلیل(statistics and analysis)، تجارت با فرکانس بالا(high-frequency trading)، آربیتراژ(arbitrage)، تست و بهینه سازی استراتژی‌های معاملاتی(testing and optimization)، استفاده از ربات‌های اتوماسیون معاملاتی و غیره را پوشش می‌دهند.

معامله‌گران و توسعه‌دهندگان برنامه MQL5 می‌توانند از طریق صفحه‌ی تماس با ما جهان بورس ارتباط برقرار کنند، سفارش دهند و برنامه‌های کاربردی را با استفاده از سرویس سفارش کد توسعه دهند.

زبان MQL5 توابع معاملاتی تخصصی و کنترل‌کننده‌های رویداد از پیش تعریف‌شده را برای کمک به برنامه‌نویسان در توسعه اکسپرت‌ها یا ربات‌های معاملاتی (EAs) فراهم می‌کند که به‌طور خودکار فرآیندهای معاملاتی را با پیروی از قوانین تجاری خاص کنترل می‌کنند. علاوه بر EA ،MQL5 امکان توسعه اندیکاتور‌های فنی سفارشی، اسکریپت‌ها و کتابخانه‌ها را نیز فراهم می‌کند.

این مرجع زبان MQL5 شامل توابع (functions)، عملیات (operations)، کلمات رزرو شده (reserved words) و سایر ساختارهای زبانی است که به دسته‌ها تقسیم می‌شوند. این مرجع همچنین توضیحاتی در مورد کلاس‌های کتابخانه استاندارد(Standard Library) ارائه می‌دهد که برای توسعه استراتژی‌های معاملاتی(trading strategies)، کنترل پنل‌ها(control panels)، گرافیک‌های سفارشی(custom graphics) و فعال کردن دسترسی به فایل(enabling file access) استفاده می‌شود.

علاوه بر این، CodeBase حاوی کتابخانه تحلیل عددی ALGLIB است که می‌تواند برای حل مسائل مختلف ریاضی استفاده شود.

مبانی زبان MQL و سفارش کد

نکته ی قابل توجه دیگر این است که هر طراح برای تعامل مناسب‌تر با برنامه نویس و سفارش کد mql (سفارش کد ام کیو ال) بهتر است با انواع فایل‌های اجرایی زبان برنامه‌نویسی mql5 و کاربرد هر یک آشنایی نسبی‌ای داشته باشند.

انواع فایل‌های اجرایی و Reserved Words
انواع فایل‌های اجرایی و Reserved Words

 

انواع برنامه های کاربردی زبان MQL5

برنامه های MQL5 بر اساس وظایف اتوماسیون معاملاتی که اجرا می‌کنند به چهار نوع تخصصی تقسیم می‌شوند:

 

اکسپرت‌ Expert Advisor

  • یک سیستم معاملاتی خودکار است.
  • نیاز به نمودار(chart) برای اجرا.
  • یک ربات معاملاتی شامل کنترل‌کننده‌های رویداد (event handlers) برای مدیریت رویدادهای از پیش تعریف شده است که اجرای عناصر استراتژی معاملاتی مناسب را فعال می‌کند. به عنوان مثال، یک رویداد از مقداردهی اولیه(initialization) و مقداردهی پایانی (deinitialization) برنامه، تیک‌های جدید(new ticks)، رویدادهای تایمر(timer events)، تغییرات در عمق بازار (changes in the Depth of Market)، نمودار(chart) و رویدادهای سفارشی(custom events).
  • ربات‌های معاملاتی علاوه بر محاسبه سیگنال‌های معاملاتی بر اساس قوانین اجرا شده، می‌تواند معاملات را به صورت خودکار انجام داده و مستقیماً به سرور معاملاتی ارسال کند.
  • اکسپرت‌ها در \MQL5\Experts ذخیره می‌شوند.

 

اندیکاتور سفارشی Custom Indicator

  • یک اندیکاتور فنی است که توسط کاربر علاوه بر اندیکاتورهای استاندارد ادغام شده در پلتفرم معاملاتی توسعه یافته است.
  • نیاز به نمودار(chart) برای اجرا.
  • اندیکاتورهای سفارشی و همچنین استاندارد نمی‌توانند به طور خودکار معامله کنند، بلکه فقط توابع تحلیلی را پیاده‌سازی می‌کنند.
  • اندیکاتورهای سفارشی می‌توانند از مقادیر اندیکاتورهای دیگر برای محاسبات استفاده کنند و می‌توانند به وسیله‌ی ربات‌های معاملاتی فراخوانی شوند.
  • اندیکاتور‌های سفارشی در \MQL5\Indicators ذخیره می شوند.

اسکریپت Script

  • اسکریپت برنامه‌ای است برای اجرای تکی یک عمل. برخلاف Expert Advisors، اسکریپت‌ها هیچ رویدادی را به جز اجرای اولیه کنترل نمی‌کنند.
  • نیاز به نمودار(chart) برای اجرا.
  • یک کد اسکریپت باید حاوی تابع کنترل کننده OnStart باشد. (مانند سرویس ها)
  • اسکریپت‌ها در \MQL5\Scripts ذخیره می‌شوند.

سرویس Service

  • عدم نیاز به نمودار(chart) برای اجرا (بر خلاف اندیکاتورها، اکسپرت‌ها و اسکریپت‌ها)
  • مانند اسکریپت‌ها، سرویس‌ها هیچ رویدادی را به جز اجرای اولیه کنترل نمی‌کنند.
  • برای راه‌اندازی یک سرویس، کد آن باید حاوی تابع کنترل کننده OnStart باشد. (مانند اسکریپت‌ها)
  • سرویس‌ها هیچ رویداد دیگری را به جز Start نمی‌پذیرند، اما می‌توانند رویدادهای سفارشی را با استفاده از EventChartCustom به نمودارها ارسال کنند.
  • سرویس‌ها در \MQL5\Services ذخیره می شوند.

کتابخانه Library

  • مجموعه‌ای از توابع سفارشی است.
  • کتابخانه‌ها برای ذخیره و توزیع الگوریتم‌های رایج برنامه‌های سفارشی در نظر گرفته شده‌اند.
  • کتابخانه‌ها در \MQL5\Libraries ذخیره می‌شوند.

فایل اینکلود Include File

یک متن منبع از بلوک های پرکاربرد برنامه های سفارشی است. چنین فایل هایی را می‌توان در کد‌های اکسپرت‌ها، اسکریپت‌ها، اندیکاتور‌های سفارشی و کتابخانه ها در مرحله کامپایل گنجاند.

استفاده از فایل‌های گنجانده شده به دلیل بار اضافی که در فراخوانی توابع کتابخانه رخ می‌دهد، ارجح تر از استفاده از کتابخانه ها است.

محل ذخیره سازی فایل های Include
  1. در همان فهرستی که فایل اصلی در آن قرار دارد. (؛ در این مورد از دستور #include با دو ” ساده استفاده می شود.)
  2. در آدرس \MQL5\Include . (؛ در این حالت باید از #include with زاویه براکت استفاده شود.)

 

MetaQuotes Language 5 (MQL5) یک زبان برنامه‌نویسی سطح بالا شی‌گرا است

کاربرد‌های زبان برنامه‌نویسی MQL5 عبارتند از:

  1. نوشتن ربات‌های معامله‌گر (برای خودکار کردن استراتژی‌های معاملاتی)
  2. نوشتن اندیکاتور‌های سفارشی تحلیل تکنیکال (برای تجزیه و تحلیل بازارهای مالی مختلف)

به طور کلی این زبان اجازه می‌دهد تا نه تنها ربات‌های معاملاتی مختلف که برای کار در زمان واقعی (real time) طراحی شده‌اند، را بنویسید، بلکه ابزارهای گرافیکی خود را نیز برای کمک به شما در تصمیم‌گیری‌های تجاری ایجاد کنید.

MQL5 بر اساس ساختار کل زبان برنامه نویسی محبوب ++C است. در مقایسه با MQL4، زبان جدید اکنون دارای enumerations و structures و classes و event handling است. اکنون با افزایش تعداد انواع اصلی تعریف شده در زبان MQL، تعامل برنامه‌های اجرایی در MQL5 با سایر برنامه‌ها از طریق dll تا حد قابل‌ توجه‌ای آسان‌تر شده است.

ساختار(syntax) کلی MQL5 شبیه ساختار کلی ++C است. و این باعث می‌شود که به راحتی بتوان برنامه‌ها را از زبان‌های برنامه نویسی مدرن به آن ترجمه کرد.

برای کمک به مطالعه زبان MQL5، همه مباحث آن در بخش‌های زیر دسته‌بندی می‌شوند.:

  • Syntax (ساختار کلی)
  • Data Types (انواع داده‌ها)
  • Operations and Expressions (عملیات‌ها و عبارات)
  • Operators (عملگر‌ها)
  • Functions (توابع)
  • Variables (متغیرها)
  • Preprocessor (پیش‌پردازنده)
  • Object-Oriented Programming (برنامه‌نویسی شی‌گرا)
  • Namespaces (فضای نام!)

 

Syntax (ساختار کلی)

مبانی زبان MQL و ساختار کلی آن برای برنامه‌نویسی استراتژی‌های معاملاتی بسیار شبیه به ساختار کلی زبان برنامه نویسی ++C است.، به جز برخی ویژگی‌ها‌:

  1. فاقد آدرس حسابی ؛(address arithmetic)
  2. فاقد اپراتور goto ؛(goto operator)
  3. عدم امکان تعریف enum ناشناس ؛(anonymous enumeration)
  4. فاقد ارث‌‌بری چندگانه ؛(multiple inheritance)

 

Comments (کامنت ها)

کامنت چند خطی با جفت علامت */ شروع می شود. و با /* پایان می یابد. ؛ چنین کامنت‌هایی را نمی توانند nested یا تودرتو باشند.

کامنت تک خطی با جفت علامت // شروع می شوند. و با کاراکتر خط جدید خاتمه می یابند. ؛ آنها را می توان در کامنت چند خطی دیگر nested یا تودرتو استفاده کرد.

 

//--- Single-line comment
/* Multi-
line // Nested single-line comment
comment
*/

 

  • کامنت‌ها در هر جایی که فضاهای مجاز هستند می‌توانند استفاده شوند.، آن‌ها می‌توانند هر تعداد فاصله(space) در خود داشته باشند.

 

Identifiers (شناسه ها)

شناسه‌ها به عنوان نام متغیرها و توابع استفاده می‌شوند.

  • طول شناسه نمی‌تواند بیش از 63 کاراکتر باشد.

کاراکترهایی که مجاز به کاربرد در یک شناسه هستند، عبارتند از:

  1. اعداد 0-9
  2. حروف بزرگ و کوچک لاتین (a-z و A-Z) که به عنوان کاراکترهای متفاوتی از یک‌دیگر شناخته می شوند.
  3. کاراکتر underscore (_)
  • کاراکتر اول نمی‌تواند عدد باشد.
  • شناسه نباید با کلمه‌ای از کلمات رزرو شده مطابقت داشته باشد.

 

کلمات رزرو شده (Reserved Words)

شناسه‌های زیر به‌عنوان کلمات رزرو شده ثبت شده‌اند.، هر کدام از آن‌ها مربوط به عمل خاصی هستند و نمی‌توان برای منظور دیگری از آن‌ها استفاده کرد.

00-کلمات رزرو شده (Reserved Words)
00-کلمات رزرو شده (Reserved Words)
01-کلمات رزرو شده (Reserved Words)
01-کلمات رزرو شده (Reserved Words)
02-کلمات رزرو شده (Reserved Words)
02-کلمات رزرو شده (Reserved Words)
03-کلمات رزرو شده (Reserved Words)
03-کلمات رزرو شده (Reserved Words)

 

 

در مقالات بعدی آموزش ام کیو ال، مطالب را پی گرفته و دیگر مباحث پایه را شرح خواهیم داد.

همچنین می‌توانید از سسله مقالات آموزش مبانی زبان Python سایت جهان بورس استفاده نمایید.

3.8 4 رای ها
امتیازدهی به مقاله
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
سبد خرید
هیچ محصولی در سبد خرید وجود ندارد!
خرید را ادامه دهید