شروع آموزش زبان MQL5(بخش اول)
- بهدست: Admingfars
- دستهبندی: اخبار ایران تکنولوژی, برنامه نویسی, شبکه و امنیت, عمومی خبری, لینوکس, موبایل, ویندوز
- Tags: شروع آموزش زبان MQL5
دلایل زیادی برای شروع آموزش زبان MQL5 یا همان زبان برنامه نویسی استراتژیهای معاملاتی مدرن (ام کیو ال ۵) وجود دارد. کاربران با تجربه میتوانند به راحتی و با مراجعه به مستندات این زبان و همچنین انواع مقالات و کتابها، این زبان را فرا بگیرند. اما اگر شما تازه با متاتریدر آشنا شدهاید، در ابتدا بسیاری از موارد غیرعادی و گیج کننده به نظر میرسند.
ممکن است این سوال برای شما پیش بیاید که آموزش زبان MQL5 چه مزایایی دارد؟ شاید شما تصمیم به یادگیری یک زبان برنامه نویسی OOP امروزی داشته باشید. پس از آموزش زبان MQL5 ، شما میتوانید به راحتی در دیگر زبانهای سطح بالا مانند CPP، سیشارپ، جاوا و غیره چیره دست شوید. البته این بدان معنا نیست که آنها شبیه به هم هستند، اما اساس آنها بسیار مشترک است.
یا شاید، شما ایدهای برای ایجاد رباتهای معاملاتی خود یا سیستم تحلیلی اطلاعات برای کار در بازارهای مالی دارید. در این مورد، شما با آموزش زبان MQL5 که به طور خاص برای این منظور ایجاد شده، به راحتی میتوانید به هدف خود برسید.
یا شاید، شما از قبل با MQL4 که برای ساخت رباتهای مختلف معاملاتی و اندیکاتورها که برای سکوی معاملاتی معروف متاتریدر ۴ استفاده میشود آشنایی دارید. پس، شما فقط باید کمی برای دیدن تمام قدرت زبان جدید MQL5 و تمام مزایای جدید محیط Meta Editor 5 تلاش کنید.
ممکن است دلایل فراوانی برای آموزش زبان MQL5 وجود داشته باشد. ما میخواهیم برخی نکات را در مورد اینکه از کجا باید شروع کنیم و به چه چیزی توجه کنیم، ارائه دهیم. بنابراین، بدون معطلی شروع میکنیم.
امکانات و ویژگیهای زبان MQL5
MQL5 مخفف (MetaQuotes Language 5) است که توسط شرکت MetaQuotes Software Corp ایجاد شده است. این شرکت بر اساس تجربه طولانی خود در ایجاد پلتفرمهای معاملاتی آنلاین که در چندین نسل توسعه داده، این زبان را ایجاد کرده است. مزایای اصلی این زبان را در زیر مشاهده میکنید:
- قواعد این زبان تا حد امکان به ++C نزدیک است که اجازه میدهد تا به راحتی برنامههای نوشته شده به زبانهای دیگر را بپذیرد.
- سرعت عملیات برنامههای ام کیو ال ۵ تقریباً همانند برنامههای ++C است.
- از ویژگیهای توکار برای ایجاد اندیکاتورهای تکنیکال، اشیاء گرافیکی و رابط کاربر غنی شده است.
- از OpenCL به صورت توکار پشتیبانی میکند.
- یک کتابخانه استاندارد بزرگ به همراه مثالهای بسیاری در پایگاه کد دارد.
- موازیسازی وظایف بهینهسازی ریاضی برای دهها و هزاران موضوعات منحصر به فرد بدون نیاز به نوشتن یک کد خاص.
برای تازه کاران در برنامه نویسی
اگر شما تجربه برنامه نویسی در زبانهای سطح بالا را ندارید، میتوانید از هر راهنمای ++C دستورالعمل بگیرید و آن را در هنگام مطالعه مبانی زبان MQL5 (قواعد، انواع دادهها، متغیرها، عملگرها، توابع، OOP و غیره) استفاده کنید.
توسعه دهندگان MQL5 در پی تضمین حداکثر سازگاری ویژگیهای ام کیو ال ۵ با زبان بسیار محبوب ++C هستند. تجربه نشان میدهد که میتوان آموزش MQL5 را در سطح ابتدایی در طی چند ماه فرا گرفت،
و برای برخی از کاربران مطالعه و شناخت تمام ویژگیهای آن کمتر از یک سال زمان کافی میباشد. با متاتریدر ۵ و ام کیو ال ۵ فرصتهای نامحدودی ایجاد میشود، که شاید الهام بخش شما باشد و یک سیستم معاملاتی واقعاً عالی ایجاد کنید.
برای کاربران MQL4
در ابتدا، ممکن است روش جدید ایجاد اندیکاتورها (approach to creating indicators) برای شما سخت و دشوار باشد. بسیاری از توابع کنترل وقایع (event handling functions) جدید ممکن است شما را سر در گم کند،
و انواع داده جدید و قواعدی همانند قواعد زبان C ممکن است در ابتدا غیرمعمول به نظر برسند. اما، پس از چند لحظه، شما تمام مزایای MQL5 را بیش از MQL4 است را خواهید دید. در MQL5 امکانات فراوان برای کار با نمودارها و اشیای گرافیکی (the rich possibilities for working with charts and graphic objects) و توانایی رسم هر تصویر بر روی صفحه مجازی وجود دارد. بعد از اینکه با MQL5 آشنا شدید، میتوانید همه چیز را امتحان کنید.
برای برنامه نویسان حرفهای
اگر شما در هر یک از زبانهای امروزی کد نویسی کنید، کارتان برای اینکه سریع در MQL5 چیره دست شوید آسان خواهد بود. شما از قبل ООP و مدل رویداد را میدانید. اکنون، شما فقط باید به یادگیری توابع خاص زیر که در مفاهیم معاملات الگوریتمی است تمرکز کنید.
- عملیات روی نمودار (Chart Operations)
- توابع معاملات (Trade Functions)
- گرفتن اطلاعات بازار (Getting Market Information)
- اندیکاتورهای سفارشی (Custom Indicators)
- توابع ابزارهای ترسیمی (Object Functions)
- و سایرین.
همچنین تفاوتهای کمی در قواعد پیادهسازی شده زبان به دلیل امنیت نوشتن کد و زمان اجرای بهینه برنامه وجود دارد.
- بدون اشارهگر ریاضی. اشارهگر های ام کیو ال ۵ در واقع توصیفگرها هستند.
- فاقد استثناء. (exceptions)
- آرایهها از هر نوع، همیشه توسط مرجع منتقل میشوند. (passed by reference)
- آرایهها (Arrays) نمیتوانند بیش از چهار بعد داشته باشند.
- آرایهها و اشیا نمیتوانند از توابع بازگردانده شوند، اما ممکن است یک اشارهگر شی را بازگرداند.
- بدون عملگر goto
اگر قبلاً سابقه انجام عملیات معاملاتی را ندارید، هنگام نوشتن ربات معاملاتی خود، ممکن است برخی از سؤالات مربوط به شرایط معاملاتی و تستر استراتژی داشته باشید. بخش مقالات شامل نشریات مفید برای کمک به شما در این زمینه است، مانند نشریات زیر:
- مبانی آزمایش در متاتریدر ۵
- دستورات، پوزیشنها و معاملات در متاتریدر ۵
- وقایع معاملات در متاتریدر ۵
- سرعت بخشیدن به محاسبات با MQL5 Cloud Networ
بنابراین، زبان MQL5 برای یک برنامه نویس حرفهای مشکل نیست. موضوع اصلی آشنایی با معامله و مفاهیم مرتبط با آن است.
نصب ترمینال متاتریدر ۵
برنامه نویسی MQL
از طریق وب سایت رسمی دانلود کنید.
برای بازار ایران میتوانید از برنامهی مفید تریدر که همان متاتریدر ۵ است با این تفاوت که برای بازار ایران مناسبسازی شده است را از کارگزاری مفید دریافت کنید.
میتوانید نصب کننده تحت وب متاتریدر ۵ را دانلود کنید. نصب متاتریدر ۵ آسان است. همه چیز با چند کلیک انجام میشود. اما توصیه میکنیم برنامه را بر روی درایوی نصب کنید، که در آن سیستم عامل ویندوز نصب نشده است. بنابراین، اگر شما در مدیریت سیستم تجربه ندارید یا دوست ندارید در بین بسیاری از پوشههای پنهان پیمایش کنید، اجازه تا برنامه در همان دایرکتوری مشابه مسیر پیش فرض متاتریدر ۵ اما در درایوی دیگر ذخیره شود.
به عنوان مثال، اگر سیستم عامل بر روی درایو /:C نصب شده است، برنامه را در درایو /:D و همان مسیر نصب کنید. اطلاعات بیشتر در مورد تفاوتهای موجود در حالتهای عملیات متاتریدر ۵ که به مسیر نصب و راه اندازی بستگی دارد را میتوانید در Getting started → For Advanced User → Platform Start که در راهنمای کاربر موجود است پیدا کنید.
اندیکاتورها، اسکریپتها و اکسپرت ادوایزرها در MQL
برنامه نویسی MQL با سه نوع برنامه اساسی کار میکند. هر نوع برای انجام امور خاص خود مناسب است، مانند موارد زیر:
اسکریپت
یک برنامه است که برای یکبار اجرا شدن در یک نمودار قیمت طراحی شده. هنگامی که اجرا به پایان بخش از پیش تعریف شده در تابع on start برسد، اسکریپت کامل میشود و از حالت لود روی نمودار خارج میشود. تابع OnStart فقط برای اسکریپتها طراحی شده است. و تنها نقطه راه اندازی است که در آن کد اجرایی قرار داده میشود. یک اسکریپت ممکن است یک حلقه نامتناهی با توقفهای کوتاه بین تکرارها داشته باشد و در نتیجه بر روی یک نمودار عمل کند تا زمانی که به اجبار متوقف شود. در هر زمان فقط یک اسکریپت میتواند در نمودار اجرا شود.
اندیکاتور
برنامهای برای محاسبه آرایه مقادیر بر اساس دادههای قیمت است. آرایههای ویژه برای ذخیرهسازی مقادیر اندیکاتور، بافرهای اندیکاتور (indicator buffers) نامیده میشوند. تعداد بافرهای مجاز در یک اندیکاتور عملاً نامحدود است. هر نمودار میتواند به طور همزمان دارای چندین اندیکاتور شامل چند نسخه از همان اندیکاتور باشد. توابعی که برای کار با ویژگیهای اندیکاتور به کار میروند فقط از اندیکاتورها قابل دسترسی هستند. و از اسکریپتها یا اکسپرت ادوایزرها در دسترس نیستند. اگر کنترل کننده OnCalculate در برنامه یافت شده باشد، این برنامه به عنوان یک اندیکاتور محسوب میشود. طول عمر اندیکاتور نامحدود است. و تا زمانی که از نمودار حذف نشود در حال اجرا باقی میماند. تابع OnCalculate تنها میتواند در اندیکاتورها فراخوانی شود.
اکسپرت ادوایزر
نوع دیگری از یک برنامه با طول عمر نامحدود است. همچنین میتوان آن را برای مدت زمان لازم در یک نمودار قرار داد. اکسپرت ادوایزرها معمولاً دارای کنترل کننده رویداد OnTick هستند، که نشان میدهد ما با کد منبع یک اکسپرت ادوایزر سر و کار داریم. در هر زمان فقط یک اکسپرت ادوایزر میتواند بر روی نمودار قرار گیرد و اجرا شود. هدف اصلی اکسپرت ادوایزر، اتوماتیک نمودن سیستمهای معاملاتی است. آنها همچنین میتوانند توابع منحصراً خدماتی داشته باشند مانند پیادهسازی یک رابط گرافیکی برای معاملات دستی و یا تجزیه و تحلیل وضعیت فعلی بازار و نمایش تصویری و غیره.
بهتر است یادگیری اصول MQL5 را از نوشتن اسکریپتها، با استفاده از مثالهایی از مستندات برنامه نویسی MQL یا Code Base شروع کنید. سپس، میتوانید کار را با توابع هدف (object functions) و آزمایش عملیات معاملاتی (trade operations) در یک حساب آزمایشی شروع کنید. مرحله بعدی نوشتن اندیکاتورهای سفارشی (custom indicators) خودتان و تجزیه و تحلیل نمونههایی از case code و مقالات است.
زمانی که شما در اندیکاتورها چیره دست شدید، آماده یادگیری توابع کنترل رویداد (event-handling functions) خواهید بود. هدف نهایی ایجاد اکسپرت ادوایزرهای ساده و تایید آنها با استفاده از تستر استراتژی و دادههای گذشته بازار در ترمینال متاتریدر ۵ است. مقالات بسیاری در رابطه با اکسپرتها (Experts)، تستر (Tester) و سیستمهای معاملاتی (Trading Systems) وجود دارند که به این موضوع اختصاص یافته است.
و البته، ما باید ویژگیهای هیجانانگیز در مورد برنامه نویسی MQL5، توسعه ماژولهای سفارشی برای اکسپرت ادوایزر از طریق MQL5 Wizard را ذکر کنیم. شما میتوانید مقالات بسیاری در این موضوع پیدا کنید، همچنین پایگاه کد شامل انواع مختلفی از MQL5 Wizard modules آماده شده است.
مدل روید (events) در برنامه نویسی MQL
یک برنامه نویسی MQL تنها زمانی کار میکند که رویدادی (events) رخ دهد. رویدادها ممکن است نمایانگر دانلود و راه اندازی یک برنامه نویسی MQL ورود تیک جدید (تغییر قیمت نماد)، تغییر ویژگیهای نمودار، تغییر یک نماد یا یک قاب زمانی در یک نمودار، بکار انداختن دستور در حال انتظار و غیره باشند.
بنابراین، مدل رویداد به شما اجازه میدهد تا برنامههای تعاملی را به سادهترین راه بنویسید. امکانات عالی برای نوشتن پانلهای گرافیکی سفارشی و ایجاد رابط کاربری مناسب وجود دارد که میتواند با نیازهای شما منطبق باشد. تابعهای موجود در برنامه برای کار با گرافیکها اجازه ساخت برنامههای کاربردی کامل و با طراحی خوب را میدهد.
توانایی تولید رویدادهای سفارشی با استفاده از تابع EventChartCustom برای هر نمودار فعال در متاتریدر ۵ اجازه ایجاد سیستمهای پیچیده تعاملی را میدهد. به دام انداختن و کنترل رویداد توسط تابع OnChartEvent انجام میشود.
اشکال زدایی و راهنمای کاربر
ترمینال متاتریدر ۵ و MetaEditor 5 حاوی راهنمای کاربر موجود در برنامه هستند که بخوبی مستند شدهاند و با فشار دادن کلید F1 نمایش داده میشود. تمام مستندات به صورت خودکار از طریق LiveUpdate به روز میشود. همچنین، این راهنمای کاربر بصورت آنلاین در چندین زبان در سایت رسمی پلتفرم معاملاتی متاتریدر۵ در دسترس است.
Trading Platform — User Manual
Welcome to algorithmic trading!
متاتریدر ۵ و MetaEditor 5 با یکدیگر یکپارچه هستند. شما همیشه میتوانید با فشار دادن کلید F4 به برنامه دیگری سوئیچ کنید. این یک ویژگی بسیار مناسب در هنگام ویرایش کد است، به خصوص اگر شما همزمان با چندین ترمینال کار میکنید.
هر برنامه نویسی MQL را میتوان با استفاده از کلید F5 در ترمینال از طریق ویرایشگر، اشکال زدایی (debugged) کرد. نمودار به طور خودکار باز میشود و برنامه شما (یک اسکریپت، اندیکاتور یا اکسپرت ادوایزر) روی آن اجرا میشود. هنگامی که اسکریپتها را اشکال زدایی میکنید،
باید در نظر بگیرید که آنها بعد از اتمام عملیات OnStart خودشان آپلود میشوند. بنابراین، فرآیند اشکال زدایی به طور خودکار در آن مرحله کامل میشود و نمودار «اشکال زدایی» (“debug” chart) بدون ذخیره کردن تمام اشیاء گرافیکی که توسط اسکریپت ساخته شده بسته میشود.
بنابراین، یک نقطه انفصال یا Sleep با مقدار بسیار زیاد قبل از عملگر return در انتهای یک اسکریپت قرار دهید.
حالت اشکال زدایی برای تشخیص خطاها در برنامه شما و برای مطالعه و یادگیری برنامه نویسی MQL ضروری است. علاوه بر استفاده از نقطههای انفصال در کد شما، یک تابع خاص DebugBreak وجود دارد که تنها در صورتی اجرا میشود که یک برنامه در حالت اشکال زدایی باشد.
باید به موتور جستجو قدرتمند ویکپارچه که به متاتریدر ۵ متصل است، اشاره کنیم که امکان جستجو در انواع اطلاعات لازم در یک فایل منبع یا پوشه و حتی در وب سایت MQL5.community (مقالات، انجمن و پایگاه کد) را میدهد.
نتایج به دست آمده میتواند توسط دستههای مورد نیاز فیلتر شود. بنابراین، برنامه نه تنها راهنمای کاربر در ویرایشگر و زبان ام کیو ال ۵ فراهم میکند بلکه توانایی پیدا کردن مواد مفید در وب سایت mql5.com را فراهم میکند.
پروفایل کد در متاتریدر
محیط توسعه متاتریدر ۵ بسیاری از ویژگیها را برای سادهسازی نوشتن کد و اشکال زدایی آن را، به برنامه نویسان ارائه میدهد. برنامه نویسان به جز ویژگی اشکال زدایی به چه چیز دیگری نیاز دارند؟ صد البته به پروفایل کد (Code profiling).
پروفایلها ویژگیهای برنامه، از جمله زمان اجرا قطعات منحصر به خودش (توابع، خطوط) در یک فرم مناسب را جمع آوری میکنند. پروفایل به شما اجازه میدهد تا به سرعت، وقت گیرترین قسمتهای برنامهتان را شناسایی کنید. شما میتوانید تغییرات اعمال شده را از لحاظ سرعت عمل برای انتخاب الگوریتمهای موثرتر ارزیابی کنید.
توسعه دهندگان حرفهای از آنچه که میتوانند با استفاده از این ویژگی انجام دهند به خوبی آگاه هستند، در حالی که تازه واردان میتوانند برنامههای خود را در سبک جدیدی امتحان کنند.
تصویر بالا پروفایل کد نمایش داده شده در انجمن سایت mql5 را نشان میدهد. با دانلود کد از موضوع انجمن ذکر شده، پروفایل کد را امتحان کنید.
ذخیره سازی و مدیریت کار در MQL5
یکی دیگر از ویژگیهای جالب و مناسب برای برنامه نویسی MQL5 محل ذخیره کدهای منبع MQL5 شخصی شما است. با استفاده از آن، همیشه از طریق MetaEditor 5 از هر نقطه از جهان دسترسی مستقیم به فایلهای خود داشته باشید. شما نه تنها میتوانید برنامههای ام کیو ال ۵ بلکه منابع ++C و همچنین فایلهای منبع BMP و WAV را ذخیره کنید.
شما میتوانید کدهای خود را اضافه کنید، استخراج کنید و تغییرات را بازگردانید – به طور خلاصه، میتوانید هر کاری را که سیستمهای SVN مدرن ارائه میدهند، انجام دهید. علاوه بر کار با ذخیرهساز برنامه نویسی MQL به طور مستقیم از طریق متاتریدر ۵، شما میتوانید هر سرویس دهنده خارجی که از Subversion 1.7 پشتیبانی میکند، مانند Tortoise SVN استفاده کنید.
اندیکاتورها، نمودارها و اشیای گرافیکی در MQL5
زبان برنامهنویسی MQL5 – در هنگام توسعه متاتریدر ۵ از تمام تجربه قبلی استفاده شده است. بنابراین ممکن است بعضی از ویژگیها در ابتدا غیرعادی به نظر برسند. به عنوان مثال، برای محاسبه اندیکاتور (indicator calculation) از مدل کار آمدی استفاده میشود. به اینگونه عمل میکند؛
زمانی شما چندین نمودار باز میکنید که از اکسپرت ادوایزرها، اسکریپتها و همچنین اندیکاتورهای مختلفی استفاده میکند که تمام آنها نیاز به نتایج یک اندیکاتور خاص بر روی یک نماد و قاب زمانی مشخصی دارند، این محاسبه نتیجه اندیکاتور تنها یک مرتبه انجام میشود. این عمل با اجتناب از محاسبات تکراری باعث صرفه جویی در وقت و حافظه میشود.
همچنین، مقادیر یک اندیکاتور را میتوان با استفاده از مقادیر یکی دیگر یا با استفاده از مقادیر آرایهها در زبان برنامهنویسی MQL5 محاسبه کرد. این مورد اجازه میدهد تا محاسبات اندیکاتور پیچیده را به صورت یکپارچه و ساده به دست بیاوریم. همانطور که قبلاً ذکر شد، امکان نمایش مقادیر گرافیکی اندیکاتور (indicator values graphical representation) در زبان برنامهنویسی MQL5 بسیار زیاد است.
تمام عملیات مربوط به ویژگیهای نمودار و مدیریت اشیاء گرافیکی، غیر همزمان هستند. این مانع از اتلاف وقت کاربران هنگام انتظار برای سیستم ویدیویی ترمینال برای نمایش تغییرات در رنگ، اندازه و غیره است.
اگر میخواهید نتایج فوری اجرای توابع از توابع هدف (Object functions) یا عملگرهای نمودار (Chart operations) را دریافت کنید، ChartRedraw را برای از نو ترسیم کردن اجباری نمودار فراخوانی کنید. در غیر اینصورت، نمودار در اولین فرصت به صورت اتوماتیک توسط ترمینال از نو ترسیم خواهد شد.
عملیات معاملاتی
معامله در زبان برنامهنویسی MQL5 با ارسال درخواست با استفاده از تابع OrderSend انجام میشود. یک درخواست یک ساختار MqlTradeRequest ویژه است که با مقادیر لازم وابسته به یک کنش معاملاتی لازم پر شده است.
شما میتوانید بخرید یا بفروشید، دستورات در حال انتظار خرید یا فروش را تحت شرایط خاصی قرار دهید یا یک دستور در حال انتظار موجود را حذف کنید. اگر OrderSend با موفقیت اجرا شد، نتیجه اجرای درخواست معامله در ساختار MqlTradeResult ثابت میشود.
در ابتدا، هنگام بررسی زبان برنامهنویسی MQL5 ، نیازی به بررسی صحت پر کردن ساختار MqlTradeRequest نیست. کتابخانه استاندارد دارای کلاس خاص CTrade برای انجام عملیات معاملاتی است. این کلاس برای سادهسازی کار برنامه نویسان MQL5 طراحی شده است.
کار با دستورات در زبان برنامهنویسی MQL5
OrderOpen | قرار دادن دستور در حال انتظار با پارامترهای تنظیم شده |
OrderModify | اصلاح پارامترهای دستور در حال انتظار |
OrderDelete | حذف کردن دستور در حال انتظار |
کار با موقعیتهای معاملاتی
PositionOpen | باز کردن پوزیشن با پارامترهای تنظیم شده |
PositionModify | اصلاح پارامترهای پوزیشن |
PositionClose | بستن پوزیشن |
روشهای اضافی
Buy | باز کردن پوزیشن خرید با پارامترهای مشخص |
Sell | باز کردن پوزیشن فروش با پارامترهای مشخص |
BuyLimit | قرار دادن دستور در حال انتظار از نوع Buy Limit (خرید در قیمت پایینتر از قیمت فعلی بازار) با پارامترهای مشخص شده |
BuyStop | قرار دادن دستور در حال انتظار از نوع Buy Stop (خرید در قیمت بالاتر از قیمت فعلی بازار) با پارامترهای مشخص شده |
SellLimit | قرار دادن دستور در حال انتظار از نوع Sell Limit (فروش در قیمت بالاتر از قیمت فعلی بازار) با پارامترهای مشخص شده |
SellStop | قرار دادن دستور در حال انتظار از نوع Sell Stop (فروش در قیمت پایینتر از قیمت فعلی بازار) با پارامترهای مشخص شده |
یک نمونه از برنامه کاربردی کلاس CTrade را میتوانید در MACD Sample training Expert Advisor از تحویل استاندارد ترمینال پیدا کنید. اکسپرت ادوایزر میتواند در MQL5ExpertsExamplesMACD یافت شود. برخی از کلاسهای مفید دیگر برای کار با دستورات، پوزیشنها، معاملات و غیره را میتوانید در بخش کلاسهای معامله (Trade classes) همراه با CTrade پیدا کنید.
تستر استراتژی متاتریدر ۵
تستر استراتژی متاتریدر ۵ نه تنها اجازه معامله در بازارهای مختلف مالی را با استفاده از روباتهای معاملاتی میدهد بلکه توانایی بررسی سودآوری و ثبات آنها را در بخشهای مختلف تاریخچه فراهم میکند. برای رسیدن به این هدف، تستر استراتژی (Strategy Tester) در برنامه پیادهسازی شده است.
لازم به ذکر است که برنامه مانند یک مدیر اجرایی عمل میکند، وظایف را به خدمات منحصر به فرد به نام عوامل (agents) زمانی که تست/ بهینهسازی یک اکسپرت ادوایزر در حال انجام است توزیع میکند. بنابراین، آزمایشها به صورت جلسات ارتباطی بین ترمینال و عوامل انجام میشود. تستر وظایف را به عوامل ارسال میکند و در بازگشت نتایج اجرایی را به دست میآورد.
پیامهای تستر و عوامل در دفتر وقایع (journal) قرار میگیرد. هنگام تست، عوامل میتوانند پیامهای بسیار زیادی را که در یک اکسپرت ادوایزر و توسط توابع Print و Alert تولید شدهاند را ارسال کنند. بنابراین، تمام پیامهای عاملها در دفتر وقایع نمایش داده نمیشود، برخی از آنها میتوانند از قلم بیفتند. این کار برای جلوگیری از کاهش سرعت تست به دلیل ضرورت نمایش تمام پیامها انجام میشود.
بنابراین، دفتر وقایع به طور جداگانه در terminal_folder> tester logs> ذخیره میشود، در حالی که گزارشهای دقیق با تمام پیامها در پوشههای مناسب عوامل تستر ذخیره میشوند. در هنگام جستجوی گزارشهای دقیق برای تجزیه و تحلیل تست این نکته را در ذهن خود نگه دارید. خوشبختانه تستر دارای یک logs viewer خاص است که در آن شما میتوانید گزارشهای مربوط را برای یک بازه زمانی مشخص پیدا کنید.
به غیر از تست، حالت بهینهسازی (optimization mode) پارامترهای ورودی اکسپرت ادوایزر وجود دارد که در آن، تستر میتواند از دهها، صدها یا حتی هزاران عامل تستر استفاده کند (به عنوان مثال از MQL5 Cloud Network).
در این حالت، پیامهای ارسال و نمایش توسط توابع Print و Alert به طور کامل متوقوف میشوند تا حجم ترافیک خروجی در جهت تستر افزایش نیابد و در فضای دیسک سخت روی کامپیوتر که در آن عوامل تستر قرار گرفتهاند، ذخیره میشوند.
تنها استثنا برای تابع OnInit ساخته شده است. این تابع میتواند از طریق Print برای ارسال پیام استفاده کند که میتواند دلیلی برای ناموفق بودن مقدار دهی اولیه یا امتناع از انجام تست با استفاده از تابع ExpertRemove به دلایل فنی را روشن کند.
شما میتوانید اطلاعات جالبتر را در تستر پیدا کنید. ما معتقدیم که شما از امکانات تستر استراتژی در ترمینال مشتری متاتریدر ۵ قدردانی خواهید کرد.
واژه نامه ترمینال جدید متاتریدر ۵
علی رغم این مباحثی که گفته شد هنوز بسیاری از مباحث وجود دارند که در این سری از مقالات مجال پرداخت به آنها نبود. از جمله این مباحث میتوان به کار با DLLها، دانلود برنامهها از پایگاه کد به ویرایشگر، راه اندازی با یکبار کلیک در ترمینال و غیره اشاره کرد.
حال فارغ از این که در چه سطحی هستید و چه هدفی دارید، فرصتهای جدیدی را پس از یادگیری زبان برنامهنویسی MQL5 کشف خواهید کرد. این ممکن است شامل درک بهتر زبانهای برنامه نویسی، بینش جدید در معاملات یا آشنایی با فنآوریهای جدید باشد.
ترمینال جدید متاتریدر ۵ شامل بسیاری از ویژگیهای جدید است که ما احتمالاً قادر نخواهیم بود حتی یک توسعه دهنده را پیدا کنیم که تا به حال توانسته باشد بر تمام این ویژگیها تسلط یابد.
Syntax | قواعد زبان |
Built-in | توکار |
Operator | عملگر (علامت یا هر کاراکتر دیگری است که انجام عملیاتی روی یک یا چند عنصر را مشخص میسازد) |
Canvas | صفحه مجازی |
Goto | دستوری که اجرای برنامه را به مکان دیگری از آن منتقل میکند، و استفاده از این دستور به دلیل اینکه منبع ایجاد خطا بود، بسیار کم شد. |
Handler | کنترل کننده |
Infinite loop | حلقه نامتناهی (خطای برنامه نویسی که موجب میشود که قسمتی از کد به طور مستمر تکرار شود) |
Iteration | تکرار (فرایند تکرار یک عمل خاص یک تکرار مشخص وقتی روی میدهد که عمل معینی به تعداد دفعات ثابتی تکرار شود) |
Event handling | کنترل وقایع / رویداد |
Trapping | به دام انداختن (تلهگذاری تشخیص و پاسسخگویی به حوادثی که به طور عادی عملیات کامپیوتر را متوقف میکنند، مثلاً برخی از زبانهای برنامه نویسی یک ( خطای تلهگذاری ) را تامین میکنند معنای این خطا آن است که وقتی برنامه تلاش میکند تا کاری غیر ممکن را انجام دهد ( مانند تقسیم بر صفر، خواندن فایلی که وجود ندارد ) کنترل به یک روال مدیریت کننده ی خطا که توسط برنامه نویس تامین شده، منتقل میشود اگر عمل به دام انداختن خطا وجود نداشته باشد برنامه با پیام خطای غیر منتظرهای پایان مییابد) |
Breakpoint | نقطه انفصال (مکانهایی در برنامه که در آنجا اجرای عادی برنامه متوقف میشود و پس از دخالت دستی مجددا” میتواند ادامه یابد معمولا” این نقاط برای اشکال زدایی برنامه به کار میروند) |
بدون دیدگاه