目次

OHLC

メタトレーダー( MT4 )で、現在のロウソク足の、始値( open )、高値( high )、安値( low )、終値( close )を取得する EA をテストしてみたいと思います。

ティック毎に、 Open , High , Low , Close の値を取得して、変数に格納後、 Print 関数で結果を出力する EA を作成してみました。

以下の EA を MT4 で動作テストしてみたいと思います。

MT4 EA のソースコード:

void OnTick(){
double o=Open[0]; //double 型
double h=High[0];
double l=Low[0];
double c=Close[0];
Print(o," ",h," ",l," ",c); //ストラジーテスターの操作履歴に出力
}

そうすると、 MT4 のストラジーテスターの操作履歴に以下の内容が出力されました。

2018.01.02 21:04:32 EA4298 USDJPY,Daily: 112.674 112.69 112.044 112.329

おそらく、値の取得に成功したようです。

Open[x] , High[x] , Low[x] , Close[x] は、関数だと思っていましたが、 MQL4 Reference を見てみると、 predefined Variables となっていて、翻訳サイトで翻訳してみると、「定義済みの変数」となりました。

[x] の x に、 0 を入れると現在のロウソク足の各価格を取得できるようです。

1 本前の各価格を取得したい場合は、 [1] とすれば、取得できるようです。

Print 関数は、 MT4 のストラジーテスターの操作履歴に文字列を出力可能な関数のようです。

目次まで戻る

MT4 の画面キャプチャ

MT4 の画面キャプチャ。ステータスバーに OHLC が表示されている。
MT4 の画面キャプチャ。ステータスバーに OHLC が表示されている。

上記画像の説明です。

  1. 現在のロウソク足にマウスを当てると ...
  2. ステータスバーに Open , High , Low , Close の各価格が表示されています。

上記 EA で取得した結果と比較してみます。

112.674 112.69 112.044 112.32

と取得できたので、大体良さそうですが、 Close の価格が少し違っています。原因はよくわかっていません。

目次まで戻る

あとがき

以外と短いコードで Open,High,Low,Close の値を取得出来ることがわかりました。

ティック毎の動作なので、 MT4 の操作履歴への出力が大量に発生してしまいました。

以上、閲覧ありがとうございました。

目次まで戻る

[ Amazon.co.jp アソシエイト ] MT5 関係の本
https://amzn.to/3H8hvsU

前後の投稿