نمودارهای آفلاین در MQL4 جدید

نمودار آفلاین متاتریدر 4

نمودار آفلاین متاتریدر 4

MQL4 آپدیت‌شده، فُرمت جدیدی برای مرتب‌سازی دیتاهای هیستوری دارد و ساختار مناسب MqlRates را برای ذخیره‌سازی مناسب Time، Open، Low، High، Close و مقادیر Volume، فرآهم می‌کند. سالیانی است که تریدرها مشغول توسعه‌ی برنامه‌های MQL4 خود هستند تا داده‌هایشان را جمع‌آوری و در فایل‌های HST برای تولید نمودارهای آفلاین، ذخیره کنند. [البته] به شما این اطمینان را می‌دهیم که تمام فایل‌های EX4 که قبلاً کامپایل شده‌اند، در نرم‌افزار متاتریدر ۴ جدید، مثل گذشته به‌خوبی کار می‌کنند.

تمام برنامه‌های EX4 قدیمی در نرم‌افزار متاتریدر ۴ جدید کار می‌کنند

همانطور که اشاره شد، حتی یک فایل EX4 را هم نمی‌توانید بیابید که با کامپایلر قدیمی کامپایل شده باشد و در نرم‌افزار جدید، حذف یا تغییر داده شود. این بدان معنی است که تمام برنامه‌های آزمایشی و تست‌شده‌ی شما که در فرمت استاندارد نرم‌افزار نبودند هم به‌صورت خودکار به محل (Location) جدید کپی شده و کماکان برای کار در دسترس هستند.

نمودارهای آفلاین در نرم‌افزار متاتریدر ۴

نسخه‌ی استاندارد نرم‌افزار جدید، حاوی اِسکریپت آپدیت‌شده‌ی PeriodConverter است که فایل‌های HST را در فرمت جدید تولید می‌کند.‌ با این حال، باز هم می‌گوییم اگر شما برنامه‌ای برمبنای اِسکریپت period_converter قدیمی‌ داشته باشید، کماکان بدون هیچ مشکلی می‌توانید با آن کار کنید.

فرض کنید اِسکریپت کامپایل‌شده‌ی period_converter_509.ex4 را داریم که با ورژن قدیمی [نرم‌افزار] توسعه داده شده‌است. حین به‌روزرسانی (Upgrade)، به‌صورت خودکار به محل ذخیره‌سازی جدید کپی می‌شود و برای دسترسی در قسمت Navigator آماده است. برای ایجاد هیستوری سفارشی EURUSD M2، آن را روی نمودار EURUSD M1 می‌آوریم.

نمودار آفلاین متاتریدر 4
نمودار آفلاین متاتریدر ۴

Multiplier به‌طور پیش‌فرض ۳ تعیین شده‌است. بیایید آن را به ۲ تغییر دهیم. همچنین باید مطمئن شویم فراخوانی DLL فعال است تا قادر باشیم نمودار EURUSD M2 را، مدیریت کنیم—این نمودار را بعد از شکل‌گیری هیستوری مناسب باز خواهیم کرد.

نمودار آفلاین متاتریدر 4
نمودار آفلاین متاتریدر ۴ جدید

به‌محض اینکه اِسکریپت گزارش تولید فایل دیتا را به ژورنال اکسپرت می‌دهد، سراغ [منوی] File و سپس Open Offline رفته و خط EURUSD M2 را پیدا کنید. این دیتایی است که اِسکریپت ما آماده کرده.

نمودار آفلاین متاتریدر 4
نمودار آفلاین متاتریدر ۴

بعد از اینکه نمودار آفلاین باز شد، اِسکریپت سراغ کار با EURUSD M1 می‌رود و تیک‌های تازه‌رسیده‌ا‌ی که real-time هستند را پردازش می‌کند. بعد از اینکه به‌نوعی متوجه شد نمودار آفلاین با تایم‌فریم مشخص‌شده، باز شده‌است، هر دو ثانیه یک‌بار، شروع به فرستادن دستوراتِ به‌روزرسانی، به آن نمودار، می‌کند.

نمودار آفلاین متاتریدر 4
نمودار آفلاین متاتریدر ۴ جدید

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

تمام مراحل توضیح‌داده‌شده را انجام دهید: فایل اجرایی پیوست‌شده، یعنی period_converter_509.ex4 را، دانلود کنید و آن را در <data folder> در مسیر \MQL4\Scripts قرار دهید.

نمودار آفلاین متاتریدر 4
نمودار آفلاین متاتریدر ۴

آپدیت کردن اِسکریپت قدیمی برای کامپایلر جدید

در بعضی از جاها، ممکن است نیاز باشد سورس کد برنامه‌ی خودتان را تغییر دهید و آن را در متااِدیتور جدید کامپایل کنید. در اینجا به شما نشان می‌دهیم چگونه این تغییرات را در زبان MQL4 با دو اصلاح کوچک اِعمال کنید، در اینجا از اِسکریپت period_converter_509 به‌عنوان مثال استفاده می‌کنیم. البته، می‌توانیم سورس کد period_conveter_509.mq4  را بدون هیچ تغییری کامپایل کنیم، و کماکان کار خواهد کرد. اما بهتر است تغییرات زبان را لحاظ کنیم و اصلاحات جزئی را در کد انجام دهیم.

حالت دسترسی مشترک باید هنگام باز کردن فایل صریحاً مشخص شود

همانطور که ممکن است به‌یاد داشته باشید، تمام فایل‌ها در حالت دسترسی مشترک در MQL4 قدیمی باز می‌شدند. در MQL4 جدید، فِلَگ‌هایFILE_SHARE_WRITE و FILE_SHARE_READ، باید برای استفاده‌ی مشترک، هنگام باز کردن فایل‌ها، صریحاً مشخص شوند. اگر فِلَگ‌ها موجود نباشند، فایل در حالت اجرایی باز می‌شود و شخص دیگری نمی‌تواند آن را باز کند، مگر کاربری که آن را ابتدا باز کرده، خودش هم آن را ببندد. این دقیقاً همان عملکردی است که نیاز داریم، زیرا می‌خواهیم فایل هیستوری دیتا را باز کنیم، که اِسکریپت در متاتریدر ۴ آن را به‌عنوان یک نمودار آفلاین تولید کرده است. از این رو، خیلی ساده این دو فلگ را به فراخوانی تابع()FileOpenHistory  اضافه می‌کنیم:

اکنون، ()FileFlush به‌سرعت داده‌های ذخیره‌شده را روی دیسک سرازیر می‌کند

از تابع ()FileFlush، در اِسکریپت قدیمی بسیار استفاده شده‌است. نیازی به فراخوانی آن بعد از هر بار ثبت داده‌های کندل، حین تولید فایل برای اولین بار، نیست. کافیست یک‌بار آن‌هم در انتها، وقتی تمام داده‌های آماده روی یک نماد و/یا تایم‌فریم غیراستاندارد، ثبت شدند، این کار را انجام دهید. واقعیت این است که استفاده از تابع ()FileFlush در ورژن جدید زبان MQL4 تغییر کرده است، تا سرازیر شدن فوری داده‌ها روی یک درایو فیزیکی قابلیت انجام داشته باشد. ورژن قدیمی، از دیتا رایت‌بک (Date Writeback) استفاده می‌کرد و چندین بار فراخوانی منجر به کند شدن عملکرد اِسکریپت نمی‌شد.

بیایید فایل بدست‌آمده بعد از دو بار اصلاح‌شدن را با نام period_converter_580.mq4 ذخیره کرده و آن را کامپایل کنیم. می‌توانید در فایل‌های پیوستی، این فایل را پیدا و دانلود کنید. اکنون، یک نمودار دیگر از    EURUSD M1 باز کرده و این اِسکریپت را با پارامتر ۳، به‌منظور ایجاد یک نمودار EURUSD غیراستاندارد سه دقیقه‌ای، اجرا می‌کنیم.

نمودار آفلاین متاتریدر 4
نمودار آفلاین متاتریدر ۴

بعد از اینکه فایل دیتا تولید شد، آن را به‌عنوان نمودار آفلاین EURUSD M3 باز می‌کنیم.

نمودار آفلاین متاتریدر 4
نمودار آفلاین متاتریدر ۴

همانطور که انتظار می‌رفت، بعد از اینکه نمودار باز شد، اِسکریپت period_converter_580 که قبلاً اجرا شده بود، آن را شناسایی کرد و یک پیام به ژورنال فرستاد. از الان به بعد، اِسکریپت، دستور آپدیت را بیشتر از یک‌بار در هر ۲ ثانیه، به نمودار آفلاین نمی‌فرستد.

نمودار آفلاین متاتریدر 4
نمودار آفلاین متاتریدر ۴

بنابراین، ما کار با فرمت قبلی ذخیره‌سازی داده‌های هیستوری را تست کردیم و مطمئن شدیم که همه‌چیز مثل قبل کار می‌کند.

اِسکریپت PeriodConverter جدید

در نسخه‌ی استاندارد متاتریدر ۴ جدید، اِسکریپت PeriodConverter را نیز داریم که کارها را همانند اَجداد خود انجام می‌دهد! هرچند، برخی تفاوت‌های جزئی را شاهد هستیم، زیرا [نسخه‌ی جدید] با سبک جدید سورس کد، توسعه داده شده‌است. همچنین، امکانات جدید زبان MQL4 را ارائه می‌دهد.

مهم‌ترین تفاوت با نسخه‌ی قبلی را می‌توان در استفاده از ساختار MqlRates جدید عنوان کرد که برای کار کردن با داده‌های کندل قیمت در فرمت جدید، توسعه داده شده‌است:

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

 ساختاری برای ذخیرۀ‌ اطلاعاتی درباره‌ی قیمت‌ها، حجم‌ها و اِسپرد

بیایید اِسکریپت PeriodConverter جدید را کامپایل کرده و آن را روی نمودار EURUSD M1 جدید اجرا کنیم، درست مانند قبلی‌ها.

نمودار آفلاین متاتریدر 4
نمودار آفلاین متاتریدر ۴

اکنون، مشغول آماده‌سازی داده‌ها برای نمودار آفلاین EURUSD M4 هستیم. بنابراین، multiplier برابر با ۴ است.

نمودار آفلاین متاتریدر 4
نمودار آفلاین متاتریدر ۴

بعد از اینکه داده‌ها آماده شدند، به همان روش همیشگی، نمودار آفلاین را باز می‌کنیم.

نمودار آفلاین متاتریدر 4
نمودار آفلاین متاتریدر ۴

همانطور که می‌بینید، تمام سه نسخه‌ی این اِسکریپت، به یک شکل کار می‌کنند. تمام تریدرهایی که با نمودارهای نمادهای سفارشی یا تایم‌فریم‌های غیراستاندارد کار می‌کنند، قادر خواهند بود از آن‌ها در نسخه‌ی جدید نرم‌افزار متاتریدر ۴ استفاده کنند—درست مانند سورس کدهای موجود، و توسعه‌های جدیدتری را به کار اضافه کنند. هیچ‌‌گونه تغییر اساسی یا مشکلی هنگام کوچ کردن به نسخه‌ی جدید نخواهید داشت.

نتیجه‌گیری

  1. نمودارهای آفلاین در نسخه‌ی جدید نرم‌افزار، همانند گذشته کار می‌کنند. و فرمت‌های قدیمی هیستوری دیتاها نیز پشتیبانی می‌شوند.
  2. فایل‌های قدیمی EX4 کارکرد خود را در نرم‌افزار جدید، حفظ کرده‌اند.
  3. توسعه‌ی برنامه‌های جدید MQL4 را آغاز کنید و از تمام امکانات این زبان برای آزاد کردن پتانسیل‌های نهفته در آن استفاده کنید.

این مقاله دارای فایل پیوست است.

از اینجا دانلود دانلود کنید 

 

مقالات پیشنهادی :

جواهری

→ خواندن مطلب قبلی

تحلیل کیفی و انتخاب بهترین سیگنال‌‌های ترید

خواندن مطلب بعدی ←

وضعیت اکسپرت با ارسال SMS

نوشتن نظر شما

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

11 − 4 =