ForexTester2用にMTF(マルチタイムフレーム,Multi Time Frame)の
インディケーターを作成するための調査をしてみます。
以下の関数を実行して出力を確認してみました。
EXPORT void __stdcall Calculate(int index)
{
char buf[255], i;
unsigned short time[] =
{
PERIOD_M1, PERIOD_M5, PERIOD_M15, 30,
PERIOD_H1, PERIOD_H4,
PERIOD_D1,
PERIOD_W1
};
for (i = 0; i < sizeof(time)/sizeof(short); i++) {
sprintf(buf, "Bars()=%d, timeframe=%d, iTime(%d)=%f, iTime(%d)=%f",
Bars(),
time[i],
index, iTime(Symbol(), time[i], index),
index + 1, iTime(Symbol(), time[i], index + 1));
Print(buf);
}
}
以下は1分足でバーを1本目から6本目まで表示させた時の出力です。
2001.01.03 08:03:00 Bars()=1, timeframe=1, iTime(0)=36894.335417, iTime(1)=0.000000
2001.01.03 08:03:00 Bars()=1, timeframe=5, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:03:00 Bars()=1, timeframe=15, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:03:00 Bars()=1, timeframe=30, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:03:00 Bars()=1, timeframe=60, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:03:00 Bars()=1, timeframe=240, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:03:00 Bars()=1, timeframe=1440, iTime(0)=36894.000000, iTime(1)=0.000000
2001.01.03 08:03:00 Bars()=1, timeframe=10080, iTime(0)=36892.000000, iTime(1)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=1, iTime(1)=36894.335417, iTime(2)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=5, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=15, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=30, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=60, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=240, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=1440, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=10080, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=1, iTime(0)=36894.336111, iTime(1)=36894.335417
2001.01.03 08:04:00 Bars()=2, timeframe=5, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=15, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=30, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=60, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=240, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=1440, iTime(0)=36894.000000, iTime(1)=0.000000
2001.01.03 08:04:00 Bars()=2, timeframe=10080, iTime(0)=36892.000000, iTime(1)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=1, iTime(1)=36894.336111, iTime(2)=36894.335417
2001.01.03 08:05:00 Bars()=3, timeframe=5, iTime(1)=36894.333333, iTime(2)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=15, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=30, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=60, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=240, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=1440, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=10080, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=1, iTime(0)=36894.336806, iTime(1)=36894.336111
2001.01.03 08:05:00 Bars()=3, timeframe=5, iTime(0)=36894.336806, iTime(1)=36894.333333
2001.01.03 08:05:00 Bars()=3, timeframe=15, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=30, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=60, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=240, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=1440, iTime(0)=36894.000000, iTime(1)=0.000000
2001.01.03 08:05:00 Bars()=3, timeframe=10080, iTime(0)=36892.000000, iTime(1)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=1, iTime(1)=36894.336806, iTime(2)=36894.336111
2001.01.03 08:07:00 Bars()=4, timeframe=5, iTime(1)=36894.333333, iTime(2)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=15, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=30, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=60, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=240, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=1440, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=10080, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=1, iTime(0)=36894.338194, iTime(1)=36894.336806
2001.01.03 08:07:00 Bars()=4, timeframe=5, iTime(0)=36894.336806, iTime(1)=36894.333333
2001.01.03 08:07:00 Bars()=4, timeframe=15, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=30, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=60, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=240, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=1440, iTime(0)=36894.000000, iTime(1)=0.000000
2001.01.03 08:07:00 Bars()=4, timeframe=10080, iTime(0)=36892.000000, iTime(1)=0.000000
2001.01.03 08:07:30 Bars()=4, timeframe=1, iTime(0)=36894.338194, iTime(1)=36894.336806
2001.01.03 08:07:30 Bars()=4, timeframe=5, iTime(0)=36894.336806, iTime(1)=36894.333333
2001.01.03 08:07:30 Bars()=4, timeframe=15, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:07:30 Bars()=4, timeframe=30, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:07:30 Bars()=4, timeframe=60, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:07:30 Bars()=4, timeframe=240, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:07:30 Bars()=4, timeframe=1440, iTime(0)=36894.000000, iTime(1)=0.000000
2001.01.03 08:07:30 Bars()=4, timeframe=10080, iTime(0)=36892.000000, iTime(1)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=1, iTime(1)=36894.338194, iTime(2)=36894.336806
2001.01.03 08:08:00 Bars()=5, timeframe=5, iTime(1)=36894.333333, iTime(2)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=15, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=30, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=60, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=240, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=1440, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=10080, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=1, iTime(0)=36894.338889, iTime(1)=36894.338194
2001.01.03 08:08:00 Bars()=5, timeframe=5, iTime(0)=36894.336806, iTime(1)=36894.333333
2001.01.03 08:08:00 Bars()=5, timeframe=15, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=30, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=60, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=240, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=1440, iTime(0)=36894.000000, iTime(1)=0.000000
2001.01.03 08:08:00 Bars()=5, timeframe=10080, iTime(0)=36892.000000, iTime(1)=0.000000
2001.01.03 08:08:30 Bars()=5, timeframe=1, iTime(0)=36894.338889, iTime(1)=36894.338194
2001.01.03 08:08:30 Bars()=5, timeframe=5, iTime(0)=36894.336806, iTime(1)=36894.333333
2001.01.03 08:08:30 Bars()=5, timeframe=15, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:08:30 Bars()=5, timeframe=30, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:08:30 Bars()=5, timeframe=60, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:08:30 Bars()=5, timeframe=240, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:08:30 Bars()=5, timeframe=1440, iTime(0)=36894.000000, iTime(1)=0.000000
2001.01.03 08:08:30 Bars()=5, timeframe=10080, iTime(0)=36892.000000, iTime(1)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=1, iTime(1)=36894.338889, iTime(2)=36894.338194
2001.01.03 08:09:00 Bars()=6, timeframe=5, iTime(1)=36894.333333, iTime(2)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=15, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=30, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=60, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=240, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=1440, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=10080, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=1, iTime(0)=36894.339583, iTime(1)=36894.338889
2001.01.03 08:09:00 Bars()=6, timeframe=5, iTime(0)=36894.336806, iTime(1)=36894.333333
2001.01.03 08:09:00 Bars()=6, timeframe=15, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=30, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=60, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=240, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=1440, iTime(0)=36894.000000, iTime(1)=0.000000
2001.01.03 08:09:00 Bars()=6, timeframe=10080, iTime(0)=36892.000000, iTime(1)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1, iTime(0)=36894.339583, iTime(1)=36894.338889
2001.01.03 08:09:30 Bars()=6, timeframe=5, iTime(0)=36894.336806, iTime(1)=36894.333333
2001.01.03 08:09:30 Bars()=6, timeframe=15, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=30, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=60, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=240, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1440, iTime(0)=36894.000000, iTime(1)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=10080, iTime(0)=36892.000000, iTime(1)=0.000000
以下は1分足でバーを6本目まで表示させた状態でインディケーターを読み込んだ出力です。
2001.01.03 08:09:30 Bars()=6, timeframe=1, iTime(5)=36894.335417, iTime(6)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=5, iTime(5)=0.000000, iTime(6)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=15, iTime(5)=0.000000, iTime(6)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=30, iTime(5)=0.000000, iTime(6)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=60, iTime(5)=0.000000, iTime(6)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=240, iTime(5)=0.000000, iTime(6)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1440, iTime(5)=0.000000, iTime(6)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=10080, iTime(5)=0.000000, iTime(6)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1, iTime(4)=36894.336111, iTime(5)=36894.335417
2001.01.03 08:09:30 Bars()=6, timeframe=5, iTime(4)=0.000000, iTime(5)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=15, iTime(4)=0.000000, iTime(5)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=30, iTime(4)=0.000000, iTime(5)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=60, iTime(4)=0.000000, iTime(5)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=240, iTime(4)=0.000000, iTime(5)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1440, iTime(4)=0.000000, iTime(5)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=10080, iTime(4)=0.000000, iTime(5)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1, iTime(3)=36894.336806, iTime(4)=36894.336111
2001.01.03 08:09:30 Bars()=6, timeframe=5, iTime(3)=0.000000, iTime(4)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=15, iTime(3)=0.000000, iTime(4)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=30, iTime(3)=0.000000, iTime(4)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=60, iTime(3)=0.000000, iTime(4)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=240, iTime(3)=0.000000, iTime(4)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1440, iTime(3)=0.000000, iTime(4)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=10080, iTime(3)=0.000000, iTime(4)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1, iTime(2)=36894.338194, iTime(3)=36894.336806
2001.01.03 08:09:30 Bars()=6, timeframe=5, iTime(2)=0.000000, iTime(3)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=15, iTime(2)=0.000000, iTime(3)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=30, iTime(2)=0.000000, iTime(3)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=60, iTime(2)=0.000000, iTime(3)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=240, iTime(2)=0.000000, iTime(3)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1440, iTime(2)=0.000000, iTime(3)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=10080, iTime(2)=0.000000, iTime(3)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1, iTime(1)=36894.338889, iTime(2)=36894.338194
2001.01.03 08:09:30 Bars()=6, timeframe=5, iTime(1)=36894.333333, iTime(2)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=15, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=30, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=60, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=240, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1440, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=10080, iTime(1)=0.000000, iTime(2)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1, iTime(0)=36894.339583, iTime(1)=36894.338889
2001.01.03 08:09:30 Bars()=6, timeframe=5, iTime(0)=36894.336806, iTime(1)=36894.333333
2001.01.03 08:09:30 Bars()=6, timeframe=15, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=30, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=60, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=240, iTime(0)=36894.333333, iTime(1)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=1440, iTime(0)=36894.000000, iTime(1)=0.000000
2001.01.03 08:09:30 Bars()=6, timeframe=10080, iTime(0)=36892.000000, iTime(1)=0.000000
わかったこと
timeframeが小さいもののほうがiTime()の戻り値が大きい。
完成した足の時間だから細かい足ほど大きくなるのはあたりまえか。
Bars()が増えると同時にindex=1となる。
Bars()が増えたときに初めて前の足の終値が確定(前の足が完成)するからですね。
index=0のときは確定していない値なので何も処理しないほうが潔くていいかもしれないです。
indexの値で大きい時間枠にアクセスしてはいけない。
大きい時間枠の足を1つづつ過去にさかのぼって
小さい時間枠より大きい時間枠が小さくなった足を利用する感じですかね。
30分の定義値が無いですが使えるようですね。
50分にしてみたら使えなかったので30は使えそうですね。
興味のある方はいろいろ自分で試してください。そのほうが身につきます。
分かりにくかったけど今日はこの辺で。