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は、平均足に限らず、各インジケーターやEAを呼び出す事ができる関数です。平均足の場合は、以下のような引数になります。
//使う場合
double heikin_high = iCustom(NULL,0,"Heiken Ashi",0,my_shift);
引数
引数名 | 詳細 | |
---|---|---|
1 | symbol | 通貨ペア名。NULLで現在 |
2 | timeframe | 時間軸。0で現在選択 |
3 | name | インジケーター名 |
4 | mode | 0 : high 1 : low 2 : open 3 : close |
5 | shift | 時間軸のシフト。 |
参考ブログ
以下の方の記事を参考にしました。
コメント