OnCalculate()の引数の配列にご注意を

アイキャッチ

混乱を招く仕様

インジケーターの作成を頼まれて、せっかくだからOnCalculate()を使おうとした時の話です。

自分としては、完璧に作ったはずなのに、テストすると全然意図した通りに動かない。「なぜだろう…」とPrint()で色々とログを取得して数時間。

原因がようやく分かりました。OnCalculate()の引数close()は時系列配列ではなく、通常の配列だったんです!

Close[]等の時系列配列では、チャートの右端の位置(現在)が0で、過去に遡るほどインデックスが増える仕様です。しかし、close()では、チャートの左端の位置(一番過去)が0で、現在に向かうほどインデックスが増える仕様になっているのです。つまり、全く逆の動きをするわけです。

詳しくは豊嶋さんの下記サイトをご覧ください。

[MQL5]OnCalculate()関数の使い方

MQL5でカスタム指標プログラム(1)

これを知らなくて、ハマっていたわけです。これでハマった人は私以外にも沢山いるはずです。

なぜ、こんな開発者を罠に嵌めるような仕様に変更したのか、不満たらたらの管理人なのでした。

ブログランキングに参加中!

ポチっとクリック頂けると励みになります♪
(クリックしてもランキング一覧が表示されるだけですが、それでOKです)

  にほんブログ村 為替ブログ FX システムトレード派へ

コメントを残す



19 − eight =