プロが教えるわが家の防犯対策術!

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

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

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

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

A 回答 (4件)

ちょっと自信ありませんが、とりあえず作ってみました。


今、手元に、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の勉強をはじめたばかりで、質問者の方と同様、いろいろ苦労しております。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!

しかも何度も回答してくださってまことにありがとうございます。

お礼日時:2010/03/08 22:01

たびたびごめんなさい。



このやり方だと、23時台以外のときに、変数HとLが初期値(0)に戻ってしまうので、調子が悪いですね。

うーん、
もう少し研究してみます。
    • good
    • 0

あ、いけません。



追伸です。

iHighest()の中のtimeframe(2つ目のパラメーター)は、0ではなくて、PERIOD_H1にしておいてください。
    • good
    • 0

こんな感じでどうでしょうか。



double H=0; // 最高値の変数を宣言
double L=0; // 最安値の変数を宣言

if(TimeHour(CurTime())!=23) // もしも現在が23時台でなければ、
{
H=H; // Hは以前の数値のまま
L=L; // Lは以前の数値のまま
}
else // もしも現在が23時台であれば、
{
H=High[iHighest(NULL,0,MODE_HIGH,2,1)]; // Hには21時~23時の最高値が代入され
L=Low[iLowest(NULL,0,MODE_LOW,2,1)]; //Lには 21時~23時の最安値が代入される。
}

上の記述ですと、毎日23:00(サーバーの時間帯)になるたびに、直前の2時間の最高値と最安値が、それぞれHとLに代入され、同時に日々23時にそれらが更新されていくと思います。

もっと、スマートなやり方があるかもしれませんが、今の私の技術では、これが限界(汗)。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

そうゆうやり方があったんですね。
参考にします!!

お礼日時:2010/02/01 23:16

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