【MQL4変数】チャート変数​

【辞書】MQLリファレンス

チャート変数​とは

チャート変数​とは、システムが自動的に取り扱う変数のことで、チャートの情報などが格納されます。

そのため、特に宣言しなくても使える変数が、チャート変数​と呼ばれます。

逆に言えば、チャート変数​に何かを代入することはできませんので、ご注意ください。

チャート変数と似た変数で、システム変数という変数があります。

こちらの記事が参考になりますので、ご一読ください。

チャート変数​

変数説明
Digits現在のチャートの価格の小数点以下の桁数
Point現在のチャートの価格の小数点値
Ask現在のチャートの買値
Bid現在のチャートの売値
Bars現在のチャートのロウソク足の数
Close[]各ロウソク足の終値の配列
High[]各ロウソク足の高値の配列
Low[]各ロウソク足の底値の配列
Open[]各ロウソク足の始値の配列
Time[]各ロウソク足の時間の配列
Volume[]各ロウソク足の出来高の配列

チャート変数​の使い方

チャート変数​を使うときは、他の変数配列と同じように使います。

例えば、以下のようなプログラムです。

void OnInit(){
    //配列の0番目(現在のロウソク足)を指定
    Print("買値                = ",DoubleToStr( Ask , Digits ));
    Print("売値                = ",DoubleToStr( Bid , Digits ));
    Print("価格の小数点以下桁数   = ",Digits);
    Print("価格の小数点値        = ",DoubleToStr(Point  , Digits ));
    Print("チャートのバー数      = ",Bars);
    Print("始値                = ",DoubleToStr( Open[0]  , Digits ));
    Print("終値                = ",DoubleToStr( Close[0] , Digits ));
    Print("高値                = ",DoubleToStr( High[0]  , Digits ));
    Print("安値                = ",DoubleToStr( Low[0]   , Digits ));
    Print("バーの時間           = ",TimeToStr(Time[0]));
    Print("出来高              = ",Volume[0]);
}

上記のように記述することで、以下のような出力を得ることができます。

買値 = 1.38473
売値 = 1.38455
価格の小数点以下桁数= 5
価格の小数点値 = 0.00001
チャートのバー数 = 1492
始値 = 1.38450
終値 = 1.38444
高値 = 1.38463
安値 = 1.38434
バーの時間 = 2015.04.17 07:25
出来高 = 179

チャート変数(配列)の考え方

チャート変数には、配列を取り扱っているものがあります。

Close[] や High[] などです。

これらの配列の考え方ですが、少しクセがあり、難しいので補足します。

ここでは、Close[] を例にとって考えていきます。

いきなりですが、以下のプログラムを見てください。

double close0 = Close[0];  //現在のロウソク足の終値
double close1 = Close[1];  //1本前のロウソク足の終値
double close2 = Close[2];  //2本前のロウソク足の終値

上記のようになっております。

Close[0]には現在のロウソク足の終値が格納されており、Close[1],Close[2]と数値が上がるごとに、過去のロウソク足の終値になります。

なので、Close[10]と書けば10本前のロウソク足の終値を取得することができるのです。

それでは、ロウソク足が更新された「瞬間」を考えてみましょう。

double close0 = Close[0];  //現在の価格
double close1 = Close[1];  //Close[0]だった価格
double close2 = Close[2];  //Close[1]だった価格

このように、全ての配列が更新され、1段階過去の終値になります。

そのため、Close[0]だった価格はClose[1]に格納され、Close[1]だった価格はClose[2]に格納されます。

ロウソク足が更新される毎に、1段階過去にズレるので、プログラミングをするときは注意しましょう。

ただ、このようになっているのにはメリットがあります。

それは、0番目は必ず最新のロウソク足の価格になり、1番目は必ず1本前のロウソク足の価格になるということです。

そのため、自動売買やインジケータを作成するとき、for文などのプログラミングをしやすくなっています。

まとめ

チャート変数は、チャートの情報を変数・配列に格納したもので、システムが自動的に更新します。

配列は少し癖がありますが、慣れれば使い勝手がよくなりますので、少しずつ消化していきましょう。

チャート変数は、自動売買やインジケータを作成するために、必要不可欠な変数・配列なので、しっかりと理解するようにしてください。