目次
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 の画面キャプチャ
上記画像の説明です。
- 現在のロウソク足にマウスを当てると ...
- ステータスバーに 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