اسکریپت بر خلاف اندیکاتور و اکسپرت ها همینکه به نمودار الحاق شدند، فعال میشوند و منتظر تیک جدید نمیمانند. تمام کدهای نوشته شده در داخل اسکریپت یکبار اجرا خواهند شد و بعد از پایان این کار، اسکریپت دیگر عمل نخواهد کرد. اسکریپتها زمانی کارایی دارند که شما بخواهید یک کار را فقط یکبار انجام دهید، مثلاً متنی را در صفحه نمایش دهید و یا اشیا گرافیکی را رسم کنید.
قابلیت انجام معامله
همچنین شما میتوانید از چند اکسپرت یا اسکریپت در نمودارهای دیگر استفاده کنید. به طور مثال شما میتوانید دو اکسپرت را برای یک نماد معاملاتی (مثل EURUSD) استفاده کنید، به شرطی که یک اکسپرت را در یک نمودار و اکسپرت دیگر را در نمودار دیگر EURUSD اضافه کنید. در این صورت هر دو اکسپرت برای یک نماد مثل جفت ارز EURUSD فعال خواهند شد. اما باید این مسئله را هم در نظر داشته باشید که شاید دو اکسپرت برای یک جفت ارز (در دو نمودار متفاوت) در اجرا تداخل ایجاد کنند. شاید یکی از اکسپرت ها دستور معاملاتی به سرور ارسال کند و خواهان بازگشایی معامله جدید باشد، در حالی که اکسپرت دیگر در حال بستن تمام معاملات باشد!
فهرست مطالب آموزش مقدماتی برنامهنویسی MQL:
منبع: https://iranbourseonline.info/195046
هر برنامهای که میخواهید بنویسید، جزو یکی از سه مورد بالایی خواهد بود. هر یک از انواع برنامههای MQL هدف و ویژگیهای خاص خود را دارند.
اکسپرت یا EA
شما میتوانید از اکسپرت، اندیکاتور و اسکریپت به طور همزمان در یک نمودار استفاده کنید. یعنی یک اکسپرت، یک اسکریپت و چندین اندیکاتور را به نمودار اضافه کنید. با این حال نمیتوانید چندین اکسپرت یا اسکریپت را به یک نمودار اضافه کنید!
اکسپرت برنامهای است که در بخش کلاینت اجرا میشود و با هر تیک عمل میکند. هدف اصلی از اکسپرت، نوشتن برنامههایی است که بتوانند معاملات را کنترل کنند. اکسپرت توسط کاربر نوشته میشود.
اسکریپت
برنامهها میتوانند به طور همزمان با سایر برنامهها اجرا شوند.
از آنجایی که هر تیک جدید باعث اجرای برنامه میشود، اندیکاتور و اکسپرت ها میتوانند به مدت طولانی فعال بمانند.
اکسپرت: برای هر نمودار تنها یک اکسپرت میتوان اضافه کرد. شما نمیتوانید از چند اکسپرت در یک نمودار استفاده کنید. اسکریپت: شما میتوانید تنها یک اسکریپت را به نمودار اضافه کنید. استفاده همزمان از چند اسکریپت در نمودار ممنوع است.
اما اندیکاتورها در همان ابتدای کار هم تابع init() و هم تابع start() را اجرا میکنند تا محاسبات اولیه انجام شوند. در ادامه با آمدن تیک جدید، اندیکاتور تابع Start را اجرا میکند.
اسکریپت
اندیکاتور برنامهای است که در سمت ترمینال کلاینت اجرا میشود و با هر تیک فعال میشود. از اندیکاتور برای نمایش گرافیکی محاسبات آماری استفاده میشود. اندیکاتور نمیتواند معامله انجام دهد. در متاتریدر دو نوع اندیکاتور وجود دارد: اندیکاتور از پیش تعریف شده و اندیکاتور سفارشی.
اجرای انواع برنامههای MQL
یکی از مهمترین قابلیتهایی برنامههایی که در MQL نوشته میشوند، امکان معامله است. دستورات معاملاتی، دستوراتی هستند که برنامه به سرور معاملات ارسال میکند تا یک دستور معاملاتی بسته یا باز شوند و یا در آن تغییراتی اعمال شود. دستورات معاملاتی مثل خرید یا فروش توسط توابع از پیشساخته شده پیادهسازی میشوند.
علاوه بر این، اکسپرت در مقایسه با اندیکاتورها در زمان راهاندازی تفاوت دارند. همینکه اکسپرت به نمودار اضافه شد، تمامی دستورات و آمادهسازیها در داخل تابع init() اجرا خواهند شد و سپس اکسپرت به حالت انتظار برای تیک جدید خواهد رفت. با رسیدن تیک جدید، تابع start() اکسپرت عمل خواهد کرد.
همینکه برنامههایی مثل اکسپرت و اندیکاتور را به نمودار اضافه کردید، برنامه اجرا میشود و منتظر تیک جدید میماند. همینکه تیک جدید رسید، برنامه اجرا میشود و بعد از انجام دستورات کد شده، کنترل کار را به متاتریدر میدهد و دوباره منتظر تیک جدید میماند.
اندیکاتور: شما میتوانید چندین اندیکاتور را به یک نمودار اضافه کنید. اندیکاتورها تداخلی با یکدیگر ندارند و میتوان آنها را در کنار هم استفاده کرد.
در این میان تنها اکسپرت ها و اسکریپتها قابلیت انجام معامله را دارند. در اندیکاتورها استفاده از توابع معاملاتی ممنوع است.
اجرای همزمان
وقتی میخواهید برنامهنویسی MQL را شروع کنید، اول از همه باید به این سؤال پاسخ دهید که چه نوع برنامهای مینویسید؟ محتوا و کاربرد برنامه به همین یک سؤال وابسته است.
در MQL سه نوع برنامه میتوان نوشت: EA، اسکریپت و اندیکاتور.
اگر در زمان اجرای برنامه، تیک جدید بیاید، تأثیری روی عملیات برنامه نخواهد گذاشت. به همین دلیل باید در نوشتن اکسپرت و اندیکاتورها دقت کرد که خیلی متکی به تیک جدید نباشند.
تفاوت زیادی بین اکسپرت و اندیکاتور سفارشی و اسکریپت وجود دارد. طول زمان اجرای اکسپرت و اندیکاتور سفارشی با اسکریپت متفاوت است. همانطور که در بخشهای قبل هم اشاره شد، برنامههای MQL زمانی که تیک یا قیمت جدید صادر میشود، عمل میکنند. اکسپرت و اندیکاتور با تیک کار میکنند، اما اسکریپت عملکرد متفاوتی دارد.
اندیکاتور و اکسپرت
اسکریپت برنامهای است که تنها یکبار در ترمینال یا همان متاتریدر بخش کاربر اجرا میشود. اسکریپتها برای عملیاتی مناسب هستند که تنها یکبار اجرا خواهند شد. اسکریپتها هم توسط کاربران نوشته میشوند.