基礎から学ぶシステムトレード
シストレブログ人気ランキング  

シストレ徹底攻略シストレマスターへの道ワールド・トレーディング・エッジ基礎から学ぶシステムトレードシストレニュースシストレツールシストレナビTOPへ

 

2011年09月26日(月)

[MQL4]サーバー時間のズレに対応したテクニカル指標(3) [MQL4]



前回の記事で、チャートの開始時刻を起点とした日足の終値を表示するカスタム指標プログラムについて説明しました。

説明した箇所を雛形プログラムに追加すると次のようになります。

#property indicator_separate_window
#property
indicator_buffers 1
#property indicator_color1 Green

// 指標バッファ
double BufClose[];

// 月曜0時に対する開始時間のズレ
extern int StartHour = 6;

// 初期化関数
int init()
{
// 指標バッファの割り当て
SetIndexBuffer(0, BufClose);

// 指標ラベルの設定
SetIndexLabel(0, "Close");

return(0);
}

// スタート関数
int start()
{
// 指標を表示させるバーの数
int limit = 100;

// 1日の開始時刻
datetime start_time = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE))
+ StartHour * 3600;

// 前日の最後のバーの位置
int shift = iBarShift(NULL, PERIOD_H1, start_time) + 1;

BufClose[0] = Close[0];
for(int i=1; i<limit; i++)
{
BufClose[i] = iClose(NULL, PERIOD_H1, shift);
shift += 24;
}

return(0);
}

(間違いではないのですが、関数のパラメータの型がわかりやすいようにstart_timeの型をint からdatetimeに変えました。)

このプログラムをチャートに挿入すると、以下のようになります。

画像(450x258)・拡大画像(800x459)

この例では6時にチャートがスタートしているので、最新のバー以外の指標値は、メインウィンドウのローソク足チャートの終値とは違う値になっています。

1時間足のチャートでの終値と見比べて、6時から始まるバーの一つ前のバーの終値がこのチャートの指標値になっていることを確認してください。

データをチェックするために、データウィンドウを同時に表示させるとよいでしょう。

なお、この指標値は1週間で5個分しか生成されないので、メインウィンドウのローソク足チャートが1週間に6本の足がある場合、過去に遡るにつれ、だんだんずれてくるところにも注意してください。

■日曜日の夜にスタートする場合

上の例では週明けのチャートが月曜日の6時にスタートする場合を想定してプログラムを作成しました。

今度は日曜日の夜、例えば21時にチャートがスタートする場合を考えてみましょう。

ここで、単純に StartHour = 21 としてよいでしょうか?

StartHourが関係する式は

datetime start_time = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE))
+ StartHour * 3600;

でした。この式をそのまま使うと、日曜日の間であればstart_timeがちゃんと日曜日の21時になりますが、そのまま日が変わって月曜日になると、start_time月曜日の21時になってしまいます。

そこで、StartHour = -3、つまり「21-24」とするとどうでしょうか?

月曜日にはstart_timeが日曜日の21時になりますが、逆に日曜日の間はstart_timeが土曜日の21時となってしまいます。

そういうことなので、どっちにしろ、StartHourの前後で1日ずらさなくてはいけません

ここでは、月曜日の0時を基準とすることから、日曜日の夜にスタートする場合は、StartHourの値をマイナスにすることにしておきましょう。

21時の場合、StartHour= -3、22時の場合、StartHour = -2 といった具合です。

では、ここで問題です。

StartHourがプラスの場合でもマイナスの場合でも、時刻がStartHourの前後のどちらかでstart_timeを1日ずらさなくてはいけません。そのプログラムを考えてみてください。

ヒントは、start_timeのデータは秒単位で格納されているということです。

次回の記事でプログラムの解説を行います。



>>“基礎から学ぶシステムトレード”全記事バックナンバーはこちらから




Posted at 15時38分


ページのトップへ ページのトップへ

Sponsor AD

2011/9

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

プロフィール

豊嶋久道

2003年よりFX取引を始め、システムトレードの道へ。最近ではFXオプション取引も含めたトレーディングシステムの研究を行っている。システムトレードを基礎から正しく理解するための情報を発信する予定。

PHOTO

ランダムウォークとランダムトレード(2)

ランダムウォークとランダムトレード(2)

カテゴリーリスト

最近の記事

検索


当サイトコメントについて

当コメントは情報提供のみを目的として作成されたものであり、投資に関してはご自身でご判断くださいますようお願い致します。また、当資料は著作物であり著作権法により保護されております。無断で全文または一部を転載することはできません。

RSS1.0

[Login]


powered by a-blog
Copyright (C) 2008 PhiConcept,Inc. All rights reserved.