آرایه یک روش ذخیره‌سازی داده در برنامه‌نویسی هست. در برنامه‌نویسی 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

برای اینکه بهتر با کارایی آرایه‌ها آشنا شوید شما را با ۶ تا از آٰرایه‌های پیش‌فرض زبان برنامه نویسی mql آشنا می‌کنیم.

  1. Close:مقدار بسته شدن (کلوز) کندل
  2. Open: مقدار باز شدن کندل
  3. High: بالاترین مقدار کندل
  4. Low: پایین‌ترین مقدار کندل
  5. ٰVolume: مقدار حجم کندل
  6. Time: زمان کندل

برای اینکه از این آرایه‌ها استفاده کنید باید شماره آن کندلی که می‌خواهید را وارد کنید. برای مثال مقدار قیمت باز شدن کندل سوم از سمت راست نمودار را به شکل زیر فراخوانی می‌کنیم.

Open[2];

شماره‌گذاری کندل‌ها چگونه انجام می‌شود!!

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

1

در واقع ما بیشتر از آرایه‌ها استفاده خواهیم کرد و ذخیره‌سازی مقدارها توسط خود متاتریدر صورت می‌گیرد.

نوع آرایه

آرایه‌هایی که از جنس قیمت هستند نوع داده‌شان از نوع double است، بخاطر اینکه بیشتر جفت ارز‌ها قیمت‌شان اعشاری است.
و در اینجا 4 تا آرایه Open,Close,High,Low از نوع double هست.
Volume از نوع متغیر Long است که فقط اعداد صحیح ذخیره می‌کند.
آرایه Time از نوع datatime است.

توابع زمانی در mql

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

توابع زمانی با ۳ ورودی

  1. iClose : قیمت بسته شدن کندل
  2. iOpen : قیمت باز شدن کندل
  3. iHigh : بالاترین قیمت کندل
  4. iLow : پایین‌ترین قیمت کندل
  5. iVolume : مقدار حجم کندل
  6. iTime :  زمان کندل

ورودی‌‌ها

  1. نام چارت
  2. تایم فریم
  3. شماره کندل

به این شکل نوشته می‌شود:

;(شماره کندل , تایم فریم  ,نام چارت ) iOpen

;iOpen( “EURUSD” , PERIOD_H1 , 2 )

یکی از کاربرد‌های توابع زمانی:

این است که میتوانیم اطلاعات چند جفت ارز را در یک اکسپرت با هم مقایسه کنیم.

توابع زمانی با ۵ ورودی

iHighest: شماره کندل بالاترین مقدار را، به ما می‌دهد.

ّ2. iLowest: شماره کندل پایین‌ترین مقدار را، به ما می‌دهد.

ورودی‌‌ها

هر دو ورودی‌شان به یک شکل هست و در اینجا یک مورد را کامل توضیح خواهیم داد که به شکل زیر نوشته میشود:

;(شماره اولین کندل, تعداد کندل , نوع قیمت ,  تایم فریم , نام چارت) iHighest

دوتا ورودی اول، نام چارت و تایم فریمی که می‌خواهیم را می‌نویسیم؛
و ورودی سوم نوع بالاترین قیمتی هست که میخواهیم:

نوع قیمت

arry

ورودی چهارم تعداد کندلی که قرار است بالاترین قیمت کندل از بین آنها شناسایی شود. و در ورودی پنجم نقطه شروع شمارش کندل‌ها را قرار می‌دهید.

کد‌ها را در محیط mql به این شکل می‌نویسیم:

arry2

که در این مثال، ما می‌خواهیم شماره کندل بالاترین قیمت را، بین کندل‌های شماره صفر تا ۱۱ را بدست بیاوریم. (مجموع ۱۲ کندل شمارش میشود)

arry3

همان‌طور که در عکس مشاهده می‌کنید، بالاترین High قیمت در کندل شماره 4 هست؛
و این شماره را با دستور Comment آن بالا برای ما چاپ کرده است.
حالا برای این که بخواهیم بالاترین قیمت را بدست بیاوریم کافیه که از آرایه High استفاده کنیم.
و خروجی‌ای که iHighest به ما می‌دهد(شماره کندل) را در آرایه High بنویسیم.

arry4
arry5

یکی از کاربرد‌‌های این کد می‌تواند این باشد که stop loss را در فروش‌ها بالای، بالاترین High بگذاریم.
و این کد به ما کمک می‌کند که بالاترین High را پیدا کنیم.

برای خرید‌‌ها هم می‌توانیم پایین‌ترین قیمت را بدست بیاوریم.

شما میتوانید کاربرد‌های دیگر این مقاله را در کامنت‌ها برای ما بنویسید.