آرایه یک روش ذخیرهسازی داده در برنامهنویسی هست. در برنامهنویسی mql که با آن اکسپرتنویسی و اندیکاتور نویسی فارکس انجام میدهند ما میتوانیم دادهها را به روش آرایه ذخیره کنیم یا از آرایههای پیشفرضی که در متاتریدر ذخیره شده است استفاده کنیم.
در متغیرها ما زمانی که نوع متغیر را مشخص میکردیم و یک اسم به آن اختصاص میدادیم آن متغیر فقط یک مقدار را در خود ذخیره میکرد. در آرایهها نیز همانند متغیرها ابتدا نوع آرایه را مشخص میکنیم سپس یک اسم به آن اختصاص میدهیم ولی برای مقداردهی دستمان باز است و میتوانیم مقدار زیادی داده در یک اسم ذخیره کنیم.
برای آشنایی بیشتر با متغیرها روی این مقاله کلیک کنید.
فرمت نوشتن یک آرایه به این صورت است که ابتدا نوع آرایه را مشخص میکنیم که از جنس متغیرها هستند مثل int , double… سپس یک اسم دلخواه به آن اختصاص میدهیم و جلوی آن اسم گیومه [ ] میکنیم. مثال:
; [طول آرایه]اسمآرایه نوعآرایه
double close[4] ;
طول آرایه را که در این مثال (4) زدیم که در واقع 4 خانه از حافظه است که در آن، ما 4 داده از نوع double میتوانیم ذخیره کنیم. در واقع کاری که ما میکنیم این است که به یک اسم مقدارهای زیادی میدهیم. مثلا برای قیمت بسته شدن کندلها در فارکس، ما بهجای اینکه برای هر کندل یک متغیر درست کنیم، یک آرایه درست میکنیم و مقدار هر کندل را جداگانه در آرایه ذخیره میکنیم. در ادامه نحوه مقداردهی آرایهها را توضیح میدهیم.
سه روش برای مقداردهی وجود دارد.
1.در همان ابتدا طول آرایه را مشخص میکنیم و همانجا مقداردهی میکنیم.
;double close[4]={20,5,12,26}
2.میتوانیم طول آرایه را مشخص نکنیم و فقط مقداردهی کنیم. تفاوتش با قبلی این است که هر تعداد که خواستیم میتوانیم مقدار بنویسیم.
ولی زمانیکه طول آرایه را تعیین میکنیم، باید همان تعداد مقدار بدهیم، ولی اگر بخواهیم اضافهتر مقدار دهیم با خطا روبهرو میشویم.
;double close [ ] = {20, 5 ,12, 26 , 25}
3.روش سوم این است که ابتدا آرایه را تعریف میکنیم.
double close[4] ;
سپس به شکل زیر هر ایندکس را جداگانه مقداردهی میکنیم.
ahmad[0]=20 ;
ahmad[1]=5 ;
ahmad[2]=12 ;
ahmad[3]=26 ;
نکته: طول آرایه در واقع بخشی از حافظه است که هر زمان که خواستیم میتوانیم از آن بخش حافظه استفاده کنیم. و هر بخشی با یک شماره index مشخص میشود که اولین بخش با صفر شروع میشود.
در مثال بالا اگر بخواهیم از سومین بخش استفاده کنیم باید index شماره 2 را فراخوانی کنیم به این شکل:
close[2];
در این مثال این مقدار برابر با 12 است.
برای اینکه بهتر با کارایی آرایهها آشنا شوید شما را با ۶ تا از آرایههای پیشفرض زبان برنامه نویسی mql آشنا میکنیم.
برای اینکه از این آرایهها استفاده کنید باید شماره آن کندلی که میخواهید را وارد کنید. برای مثال مقدار قیمت باز شدن کندل سوم از سمت راست نمودار را به شکل زیر فراخوانی میکنیم.
Open[2];
برای فراخوانی آرایهها باید نحوه شمارش کندلها را بدانیم تا هنگام فراخوانی، مقدار صحیح را دریافت کنیم. شمارش از سمت راست به چپ صورت میگیرد و اولین کندل از سمت راست کندل شماره صفر است. در عکس زیر نحوه شمارش کندلها را مشاهده میکنید.
در واقع ما بیشتر از آرایهها استفاده خواهیم کرد و ذخیرهسازی مقدارها توسط خود متاتریدر صورت میگیرد.
نوع دادهی آرایههایی که از جنس قیمت هستند از نوع double است، بخاطر اینکه بیشتر جفت ارزها قیمتشان اعشاری است.
در اینجا 4 تا آرایه Open,Close,High,Low از نوع double هست.
Volume از نوع متغیر Long است که فقط اعداد صحیح ذخیره میکند.
آرایه Time از نوع datatime است.
در مقابل آرایههای پیشفرض، ما توابع زمانی را داریم. تفاوت این دو این است که آرایههای پیشفرضی که در بالا تعریف کردیم، اطلاعات همان چارت و همان تایمفریم را که برنامه در آن اجرا میشود به ما میدهد ولی اگر بخواهیم اطلاعات جفت ارز دیگر و تایمفریم دیگری را بررسی کنیم باید از توابع زمانی استفاده کنیم.
توابع زمانی با ۳ ورودی
ورودیها
به این شکل نوشته میشود:
;(شماره کندل , تایم فریم ,نام چارت ) iOpen
;iOpen( “EURUSD” , PERIOD_H1 , 2 )
یکی از کاربردهای توابع زمانی این است که میتوانیم اطلاعات چند جفت ارز را در یک اکسپرت با هم مقایسه کنیم.
توابع زمانی با ۵ ورودی
iHighest: شماره کندل بالاترین مقدار را، به ما میدهد.
iLowest: شماره کندل پایینترین مقدار را، به ما میدهد.
ورودیها
ورودی هر دو به یک شکل است و در اینجا یک مورد را کامل توضیح خواهیم داد که به شکل زیر نوشته میشود:
;(شماره اولین کندل, تعداد کندل , نوع قیمت , تایم فریم , نام چارت) iHighest
دوتا ورودی اول، نام چارت و تایم فریمی که میخواهیم را مینویسیم؛ ورودی سوم نوع بالاترین قیمتی است که میخواهیم.
نوع قیمت
ورودی چهارم تعداد کندلی که قرار است بالاترین قیمت کندل از بین آنها شناسایی شود. و در ورودی پنجم نقطه شروع شمارش کندلها را قرار میدهید.
کدها را در محیط mql به این شکل مینویسیم:
که در این مثال، ما میخواهیم شماره کندل بالاترین قیمت، بین کندلهای شماره صفر تا ۱۱ را بدست بیاوریم. (مجموع ۱۲ کندل شمارش میشود)
همانطور که در عکس مشاهده میکنید، بالاترین High قیمت در کندل شماره 4 هست؛
و این شماره را با دستور Comment آن بالا برای ما چاپ کرده است.
حالا برای این که بخواهیم بالاترین قیمت را بدست بیاوریم کافیه که از آرایه High استفاده کنیم.
و خروجیای که iHighest به ما میدهد(شماره کندل) را در آرایه High بنویسیم.
یکی از کاربردهای این کد میتواند این باشد که stop loss را در فروشها بالای، بالاترین High بگذاریم.
و این کد به ما کمک میکند که بالاترین High را پیدا کنیم.
برای خریدها هم میتوانیم پایینترین قیمت را بدست بیاوریم.
شما میتوانید کاربردهای دیگر این مقاله را در کامنتها برای ما بنویسید.
اگر مایل هستید اکسپرتنویسی را صفر تا صد یاد بگیرید ما در دوره مقدماتی اکسپرتنویسی این آموزشها را ساده و رایگان در اختیار شما قرار دادهایم. آموزشها را شروع کنید و استراتژی خود را تبدیل به اکسپرت کنید.
ما در بورس۹۰ آموزشهای تخصصی در زمینهی اکسپرتنویسی و ابزارهای معاملاتی ارائه میدهیم و به کاربران کمک میکنیم تا با استفاده از استراتژیهای خودکار، عملکرد بهتری در معاملاتشان داشته باشند.