ちょっとバックテストを行っていて気が付いたことを・・・。
バックテストのOnTick関数内にてiCloseを使って終値を取得してみました。
左側がiCloseの第3引数shiftの値、右側が応答となります。
PERIOD_D1
1002 0.0
1001 0.0
1000 1.28623
999 1.29676
998 1.29328
PERIOD_H4
1002 0.0
1001 0.0
1000 1.13141
999 1.1293
998 1.13314
PERIOD_H1
1002 0.0
1001 0.0
1000 1.08665
999 1.08713
998 1.0872
PERIOD_M30
1002 0.0
1001 0.0
1000 1.12231
999 1.12268
998 1.12311
PERIOD_M15
1002 0.0
1001 0.0
1000 1.14006
999 1.14041
998 1.13999
PERIOD_M5
1002 0.0
1001 0.0
1000 1.12717
999 1.12753
998 1.1276
・・・・。
すべて1001からは0が帰ってきます。
バックテスト時、iClose関数の最大バー数は1000に固定されるのですね。
すべての時間帯において1001からは0が帰ってきてしまいます。
ちなみに、実際動作させると、ヒストリカルデータがあるだけ取れます。こんなところにもバックテストと実動作の違いがありました。
iOpenなども同様かと思われます。バックテストで価格取得関数を使用する場合は注意しましょう。
ブログランキングにご協力よろしくお願いいたしますm(_ _ )m
にほんブログ村
プログラムはこんな感じです。