متغیر و آرایه های پیش فرض
درس اول
در تعریف متغیرهای پیش فرض آورده اند: متغیرهایی وجود دارند که MQL به آن ها مقدار می دهد و با هر حرکت در بازار مقدار آن ها نیز تغییر می کند. به جدول زیر دقت کنید.
❓ مسئله شماره 1:
اکسپرتی بنویسید که آخرین قیمت فروش و خرید را در چارت نمایش دهد.
با توجه به آموزش های گذشته فایل جدیداکسپرت بسازید و نام گذاری کنید.
سایر مراحل را بدون تغییر جلو ببرید تا به finish برسانید.
تابع OnTick
اگر بخواهید آخرین قیمت بازار را چاپ کنید و هماهنگ با قیمت بازار، قیمت برنامه تغییر کند از تابع OnTick استفاده نمایید. تابع OnTick که در اکسپرت ها قرار دارد زمانی فراخوانی و اجرا میشود که قیمت چارتی که اندیکاتور روی آن قرار دارد تغییر کند و به اصطلاح فنی به ازای هر تیک این تابع فراخوانی و اجرا میشود. دقت نمایید که تابع OnTick هیچ ورودی و خروجیای نمیگیرد.
به شیوه دستور نویسی آن توجه کنید.
برای جلوگیری از از ادغام با قیمت Bid یک خط آن را پایین آورده و قیمت Bid را بنویسید. مانند تصویر بالا. compile را کلیک کرده و نباید اخطاری نمایش دهد. سپس وارد برنامه شوید.
قیمت ها در حال تغییر می باشد. قیمت چاپ شده با مقیاس عمودی (vertical scale) مطابقت دارد. چنانچه بخواهید قیمت ask را مشاهده کنید از منوی تنظیمات Properties گزینه show ask line را تیک دار کنید.
برای چاپ سایر قیمت ها ، در متاتریدر متغیرها را در خطوط زیر بنویسید. جهت نمایش نام هر متغیر برای هر کدام رشته تعریف کنید به عنوان مثال:
در قسمت point عدد نمایشی در واقع عدد علمی 1.00005 می باشد.
آرایه های پیش فرض
در این قسمت با آرایه ها و توابع دستیابی به داده های کندل در زبان برنامه نویسی MQL آشنا خواهید شد. در MQL تعدادی آرایه های پیش فرض برای دسترسی به دیتای کندل ها وجود داردکه مانند متغیرها مقداردهی می شود. به جدول زیر دقت کنید.
نحوه نوشتاری آن به عنوان مثال:
;[شماره کندل]Open
;Open[0]
❓ مسئله شماره 2:
اکسپرتی بنویسید که شماره کندل را از کاربر گرفته و تایم کندل را چاپ نماید.
در متاتریدر متغیر از کاربر بگیرید و می توانید مقداری مشخص نکنید. چونکه بناست چاپ شود نیازی نیست دستورها در تابع OnTick بنویسید بلکه در onInt بگذارید تا زمانی که برنامه اجرا شد خودبه خود اجرا شود.
در برنامه نام کلاس را به فضای داخلی درگ کنید تا پنجره expert- به همراه نام کلاس نمایش شود. قسمت valueمقدار را وارد کنید.
حروف نمایشی عبارتند از: o:open H: High L:Low C:Close V:Value
چنانچه بخواهید همه مقادیر به صورت جداگانه برای شما نمایش شود. همه آن ها زیر هم قید کنید به عنوان مثال:
❓ مسئله شماره 3:
اکسپرتی بنویسید که در صورتی که دو کندل صعودی پشت سر هم تشکیل شد buy را در دستور پرینت چاپ نماید و در صورتی که دو کندل نزولی پشت سرهم تشکیل شد کلمه sell در دستور پرینت چاپ شود.
پاسخ: اگر به عنوان مثال دو کندل صعودی وجود داشته باشد، آنچه در ذهن تبادر پیدا می کند اینکه کندل شماره 2 کوچک تر از کندل شماره 1 باشد. و در sell کلوز کندل 2 بزرگ تر از کندل 1 باشد.
برای چلوگیری از عملیات خطا در محاسبات کلوز بهتر است که جداگانه محاسبه کنید به عنوان مثال: اگر open کوچک تر از Close بود یعنی کندل صعودی است. بنابراین شرط اینگونه می شود که اگر Close کندل دوم بزرگ تر از open آن باشد و همچنین کندل اول Close بزرگ تر از open بود در این صورت buy چاپ شود. و برعکس آن برای sell اجرا گردد.
کدنویسی آن به صورت زیر می باشد.
منبع : کتاب آموزش زبان MQL (دوره مقدماتی)
مدرس : استاد حسین احمدی
پاسخها
با سلام و احترام
در عین سادگی بسیار عالی و روان و کاربردی است. از شما استاد بزرگوار سپاسگزارم.