ミスチルの大名曲の数々が配信決定!! 31日間無料!!

MT4のチャートに見えているローソク足の本数を、MQLで取得する方法について教えて下さい。
見えている足の本数なので、チャートウィンドウ幅を横に広げると、増えることになります。
やりたいことをシンプルに言うと、現在チャートに見えている一番左のローソク足の安値に
矢印を表示したいのです。
ウィンドウサイズを変更するとティックデータ取得のタイミングで再描画され
その時最も左側にある足に矢印が移動するようにしたいのです。
本当にやりたいことは、これではないのですが、これが出来れば本来の目的も達成出来ます。

見えているローソク足の本数が取得出来れば可能だと思うのです。
もちろん、 別の手段を使っても出来るよ、という場合、その方法を教えていただけるとありがたいです。
以上、よろしくお願い致します。

A 回答 (1件)

WindowBarsPerChart()を使えばO.K.

    • good
    • 0
この回答へのお礼

まさに私が求めていた情報でした!
ほんとに助かりました。
ありがとうございました。

お礼日時:2013/06/25 22:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【MQL4】ZigZagの天底の値の取得

最近MT4の入門書を買ってMQL4の勉強を始めた者です。よろしくお願いします。

EAでZigZagの天底を現在レートがブレイクアウトしたところでエントリーするシステムを作りたいのですが、ZigZagの頂点(底点)の値の取得の仕方がわかりません。

iCustomで標準搭載のZigZagを呼び出して条件式を書いてみましたが売買できませんでした。
(以下のような文です)

double zig = iCustom(NULL, 0,"ZigZag",12,5,3,0,0);

if(zig <Ask)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Blue);
}

おそらく見当違いのことをしているのだとは思います。
私が知りたいことは以下の2点です。

1.一つ前のZigZagの頂点(底点)の値。
2.二つ前のZigZagの頂点(底点)の値。

どうかよろしくお願い致します。

Aベストアンサー

ZigZagの場合、頂点と頂点の間は空値が入っています。
ZigZagは頂点よりもその間を繋いでいる線の部分の方が圧倒的に多いです。ですからそのEAのiCustom関数はほとんどの場合、空値を返します。

さらにZigZagのmql文の中を見てみると34行目に
SetIndexEmptyValue(0,0.0);
http://www.metasys-seeker.net/MQL4_Reference_ver1/11-08_SetIndexEmptyValue.html
の一文が入っていることが分かりますよね。

これは空値を0.0に設定するという意味です。つまりそのiCustom関数ではほとんどの場合0が返されています。

SC11さんのEAではif文中で zig<Ask と書かれているので(以下略)。


低点の見つけ方ですが、私なら頂点を一つづつ探していき、一つ見つかったらその前後の頂点を探して、最初に見つけた頂点が次に見つけた2つの頂点の値より下回っていたら低点であるとします。
普通は見つかった順番に配列に入れておきます。こうするといくつ前の低点なのか分かりますしね。

ZigZagの場合、頂点と頂点の間は空値が入っています。
ZigZagは頂点よりもその間を繋いでいる線の部分の方が圧倒的に多いです。ですからそのEAのiCustom関数はほとんどの場合、空値を返します。

さらにZigZagのmql文の中を見てみると34行目に
SetIndexEmptyValue(0,0.0);
http://www.metasys-seeker.net/MQL4_Reference_ver1/11-08_SetIndexEmptyValue.html
の一文が入っていることが分かりますよね。

これは空値を0.0に設定するという意味です。つまりそのiCustom関数ではほとんどの場合0が返されています...続きを読む

QFX:指定した時間の高値・安値を返すプログラムを教えてください。(MT4)

指定した時間の高値・安値を返すプログラムを教えてください。

具体的に言うと、、21時から23時の間の高値・安値です。

少し調べたところ、iHighest,iLowestやiBarSHiftの関数で値を出せると思ったのですが、
この関数では、指定の期間が、”現在から何本前の足から何本分の期間”といったように時刻で指定できないみたいで困っております。

※MT4を使用しております。

Aベストアンサー

ちょっと自信ありませんが、とりあえず作ってみました。
今、手元に、MT4がないので、コンパイルその他の実験をしておりません。エラー等ありましたら、どうかご容赦を。

double H=0; // 最高値を変数として宣言
double L=0; // 最安値を変数として宣言
int T = TimeHour(CurTime()); // 現在の時刻を変数として宣言

if(T!=23) // もしも現在が23時台でなければ、
{
H= High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,T+2)];
L= Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,T+2)];
}
else // もしも現在が23時台であれば、
{
H=High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,1)];
L=Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,1)];
}

ちなみに、TimeHour()関数については、以下のサイトで詳しく解説されておりました。

http://jidoubaibai.com/index.html

また、私は、ごく最近MT4の勉強をはじめたばかりで、質問者の方と同様、いろいろ苦労しております。

ちょっと自信ありませんが、とりあえず作ってみました。
今、手元に、MT4がないので、コンパイルその他の実験をしておりません。エラー等ありましたら、どうかご容赦を。

double H=0; // 最高値を変数として宣言
double L=0; // 最安値を変数として宣言
int T = TimeHour(CurTime()); // 現在の時刻を変数として宣言

if(T!=23) // もしも現在が23時台でなければ、
{
H= High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,T+2)];
L= Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,T+2)];
}
else // もしも現在...続きを読む


人気Q&Aランキング