MT4で平均足の高値、安値、始値、終値を取得する関数

MT4では平均足はインジケーターを使ってしか表示できないので、MQL4でソースコードを書く際に、平均足のOpen(始値)、Close(終値)、High(高値)、Low(安値)が簡単に取得できません。そこで、簡単に取得できる関数を作ってみました。

目次

ソースコード

そのままコピペすれば、使えます。

//+------------------------------------------------------------------+
//| Heikin Ashi Get Open Close High Low
//|
//|  string my_type = "open" , "close" , "high" , "low"
//|  int my_shift = shift bar
//+------------------------------------------------------------------+
double Get_HeikinAshi(string my_type, int my_shift){
   double my_ret = 0;

   if (StringCompare(my_type,"open",false) == 0) {
      my_ret = iCustom(NULL,0,"Heiken Ashi",2,my_shift);

   }else if(StringCompare(my_type,"close",false) == 0) {
      my_ret = iCustom(NULL,0,"Heiken Ashi",3,my_shift);

   }else if(StringCompare(my_type,"high",false) == 0) {
      my_ret = iCustom(NULL,0,"Heiken Ashi",0,my_shift);

   }else if(StringCompare(my_type,"low",false) == 0) {
      my_ret = iCustom(NULL,0,"Heiken Ashi",1,my_shift);
   }
   return my_ret;
  }

使い方

第1引数は、open(始値)、close(終値)、high(高値)、low(安値)の文字列を。第2引数はシフトバーの数。1本前の足だったら1。2本前だったら2という感じです。

//現在の足の平均足高値取得
double heikin_high = Get_HeikinAshi("high", 0);

解説

いわゆるラッパー関数です。使ってる関数は1つのみ。

使用関数 iCustom

使ってる関数は、iCustomです。これで、外部のインジケーターから直接呼び出して値を取得させています。

iCustomの仕様は、以下のブログをご参考ください。iCustomは悪名高い関数で、扱いがとてもむずかしい関数です。

あわせて読みたい
iCustom | MT4でEA自作しちゃお~ 当サイトはMetaQuotes Software社のMT4(メタトレーダー4)で、EA(自動売買)やカスタムインジケータを作成したいけど・・・ まず何をやったらいいのか分からずスタート地点で...

平均足をコールする際の引数

iCustomは、平均足に限らず、各インジケーターやEAを呼び出す事ができる関数です。平均足の場合は、以下のような引数になります。

//使う場合
double heikin_high = iCustom(NULL,0,"Heiken Ashi",0,my_shift);
引数
引数名詳細
1symbol通貨ペア名。NULLで現在
2timeframe時間軸。0で現在選択
3nameインジケーター名
4mode0 : high
1 : low
2 : open
3 : close
5shift時間軸のシフト。

参考ブログ

以下の方の記事を参考にしました。

ぷろぐらむFX
EAで平均足を使う(サンプルソース) FXで売買タイミングとして使う平均足の、簡単なMT4のEAサンプルです。以前ローソク足の情報だけでプラス収支にできるか試したのですがうまくいかず、何とか値動きだけでEA...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

仮想通貨botや、MT4のEA開発、インジケーターなどを作ってます。このブログでは検証結果を書いていきたいと思ってます。

コメント

コメントする

目次