メタトレーダー講義 補講1 Bars
ここではバーチャートとしての説明がされていますが、バーをローソク足と置き換えて考えられても何も問題はないので、ローソク足をお使いの方は、ローソク足と自分の中で置き換えて考えて頂けると幸いです。
この文章はCodersGuruさんのMQL4Lesson4の訳文です。(翻訳しての転載に本人の許可はとってあります)
MQL4講座
Coders'guru
www.forex-tsd.com
-補講1-
バー
足の数え方にかんするたくさんの質問をいただきました。
今回の補講ではバーについてのみ取り上げていきたいと思います。
バーってなに?
バーはチャート上にでてくる図形で、期間の長さでバーを決めることができます。
例:30分の期間でしたら、30分ごとにバーが描かれていきます。
一本のバーの中に、高値、安値、始値、終値の情報が入っています。
MQL4ではどのようにバーはインデックス化されるの?
MQL4では、バーのインデックス化を0(最新のローソク足)から始めて1,2,3....というふうに数えていきます。
もし最新のバーを利用したいのならインデックスは0に。
(最新のローソク足の)一つ前のバーを利用したいならインデックスを1に。
インデックスが100なら100個前のバーを利用することになります。
インデックスの最後の値は、チャート上のバーの総数の数になります。
MQL4 バー総数関数
MQL4では、バーの数と一緒に機能する種類の関数があります。
int Bars
この関数は最新のチャートでのバーの数を返します。
タイムフレーム(期間)を変えるとこの数字は変わってくることを覚えておいてください。
int iBars(string symbol int timeframe)
この関数は、バー特定の期間の通貨ペアの数を返します。
貴方が30分の期間で取引をしていて、1時間の期間と同じ数のバーが欲しかったら次の文を使います。
____________________________________________________________________________________________
iBars(NULL,PERIOD_H1);
____________________________________________________________________________________________
メモ:もし以下のように記述したら
____________________________________________________________________________________________
iBars(NULL,0);
____________________________________________________________________________________________
これはBars関数と同じ数の返却値になります。
NULLは現在の通貨ペアを指定することになっています。
int IndicatorCounted()
インディケーターを書く時に、どのようにして自分の欲しい数のバーを得ることができるかはこれでわかりましたね。
この数を用いて計算し、ラインを描写させます。
しかし、もし以前にバーを数えたか、それとも数えるのがこれが初めてかということを知ることは役に立ちます。なぜなら、もし、以前にバーを数えたことがあるなら、それらを再び数えたくはありませんし、新しく増えたバーを数えるだけで良いからです。
このような時はIndicatorCounted()関数をつかいます。これはインディケーターによって数えられたバーの数を返します。
最インディケーターの最初の起動時にこの数はゼロを示します。なぜなら、インディケーターはまだ、何のバーも数えていないからです。
そのあと、バーの総数から1を引いたのと同じ数になります。なぜなら、最後のバーはまだ数えられていないからです。(図1参照)

図1
バーになにが起きているかを示す小さなプログラムを記述してみましょう。
//+------------------------------------------------------------------+
//| my_first_indicator.mq4 |
//| Codersguru |
//| http://www.forex-tsd.com |
//+------------------------------------------------------------------+
#property copyright "Codersguru"
#property link "http://www.forex-tsd.com"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| 初期化関数 |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(1);
}
//+------------------------------------------------------------------+
//|後処理関数 |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| 指標処理関数 |
//+------------------------------------------------------------------+
int start()
{
Alert ( "counted_bars=" , IndicatorCounted());//数えられたバーの総数
Alert("Bars=", Bars); //チャート上のバーの総数
Alert("iBars=",iBars(NULL,O));//配列で考えたチャート上のバーの総数
Alert("First Bar Open=", Open[Bars-1]); //最初のバーの始値
Alert("Last Bar Open=",Open[0]);//最新のバーの始値
return(0);
}
//+------------------------------------------------------------------+
このプログラムが図1の結果を生み出します。
バーの数え方についてわかりましたでしょうか。
それでは。
Coders'Guru
お疲れ様でした。一応補足ですが、図1で
上から8番目の counted_bars=0 になっていて、
上から4番目の counted_bars=15830 になっているのは
起動時(16:55:02)にインディケーターはまだバーを数えていないからです。
次の時(16:55:08)は数えられているのでチャート上のバーの数-1(最新のバーは抜かすので)である15830の値がでてきます。
FirstBarOpenでは、あなたが開いているチャートの一番左(たくさんスクロールしてこれ以上いけないところです。)の始値の値になります。
今回は以上になります。
押していただけると大変嬉しいです。よろしくお願いします!手間のかからないようにクリックしても別窓で表示されるようにしてみました。


この文章はCodersGuruさんのMQL4Lesson4の訳文です。(翻訳しての転載に本人の許可はとってあります)
MQL4講座
Coders'guru
www.forex-tsd.com
-補講1-
バー
足の数え方にかんするたくさんの質問をいただきました。
今回の補講ではバーについてのみ取り上げていきたいと思います。
バーってなに?
バーはチャート上にでてくる図形で、期間の長さでバーを決めることができます。
例:30分の期間でしたら、30分ごとにバーが描かれていきます。
一本のバーの中に、高値、安値、始値、終値の情報が入っています。
MQL4ではどのようにバーはインデックス化されるの?
MQL4では、バーのインデックス化を0(最新のローソク足)から始めて1,2,3....というふうに数えていきます。
もし最新のバーを利用したいのならインデックスは0に。
(最新のローソク足の)一つ前のバーを利用したいならインデックスを1に。
インデックスが100なら100個前のバーを利用することになります。
インデックスの最後の値は、チャート上のバーの総数の数になります。
MQL4 バー総数関数
MQL4では、バーの数と一緒に機能する種類の関数があります。
int Bars
この関数は最新のチャートでのバーの数を返します。
タイムフレーム(期間)を変えるとこの数字は変わってくることを覚えておいてください。
int iBars(string symbol int timeframe)
この関数は、バー特定の期間の通貨ペアの数を返します。
貴方が30分の期間で取引をしていて、1時間の期間と同じ数のバーが欲しかったら次の文を使います。
____________________________________________________________________________________________
iBars(NULL,PERIOD_H1);
____________________________________________________________________________________________
メモ:もし以下のように記述したら
____________________________________________________________________________________________
iBars(NULL,0);
____________________________________________________________________________________________
これはBars関数と同じ数の返却値になります。
NULLは現在の通貨ペアを指定することになっています。
int IndicatorCounted()
インディケーターを書く時に、どのようにして自分の欲しい数のバーを得ることができるかはこれでわかりましたね。
この数を用いて計算し、ラインを描写させます。
しかし、もし以前にバーを数えたか、それとも数えるのがこれが初めてかということを知ることは役に立ちます。なぜなら、もし、以前にバーを数えたことがあるなら、それらを再び数えたくはありませんし、新しく増えたバーを数えるだけで良いからです。
このような時はIndicatorCounted()関数をつかいます。これはインディケーターによって数えられたバーの数を返します。
最インディケーターの最初の起動時にこの数はゼロを示します。なぜなら、インディケーターはまだ、何のバーも数えていないからです。
そのあと、バーの総数から1を引いたのと同じ数になります。なぜなら、最後のバーはまだ数えられていないからです。(図1参照)

図1
バーになにが起きているかを示す小さなプログラムを記述してみましょう。
//+------------------------------------------------------------------+
//| my_first_indicator.mq4 |
//| Codersguru |
//| http://www.forex-tsd.com |
//+------------------------------------------------------------------+
#property copyright "Codersguru"
#property link "http://www.forex-tsd.com"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| 初期化関数 |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(1);
}
//+------------------------------------------------------------------+
//|後処理関数 |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| 指標処理関数 |
//+------------------------------------------------------------------+
int start()
{
Alert ( "counted_bars=" , IndicatorCounted());//数えられたバーの総数
Alert("Bars=", Bars); //チャート上のバーの総数
Alert("iBars=",iBars(NULL,O));//配列で考えたチャート上のバーの総数
Alert("First Bar Open=", Open[Bars-1]); //最初のバーの始値
Alert("Last Bar Open=",Open[0]);//最新のバーの始値
return(0);
}
//+------------------------------------------------------------------+
このプログラムが図1の結果を生み出します。
バーの数え方についてわかりましたでしょうか。
それでは。
Coders'Guru
お疲れ様でした。一応補足ですが、図1で
上から8番目の counted_bars=0 になっていて、
上から4番目の counted_bars=15830 になっているのは
起動時(16:55:02)にインディケーターはまだバーを数えていないからです。
次の時(16:55:08)は数えられているのでチャート上のバーの数-1(最新のバーは抜かすので)である15830の値がでてきます。
FirstBarOpenでは、あなたが開いているチャートの一番左(たくさんスクロールしてこれ以上いけないところです。)の始値の値になります。
今回は以上になります。
押していただけると大変嬉しいです。よろしくお願いします!手間のかからないようにクリックしても別窓で表示されるようにしてみました。

