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

混乱を招く仕様

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

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

原因がようやく分かりました。

OnCalculate()の引数close[]は時系列配列ではなく、通常の配列だったんです!

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

詳しくは豊嶋さんの下記サイトをご覧ください。※2018/7/21追記:サイトが削除されてしまったようなのでリンクを解除しました。

ttp://system-trading.jp/toyoshima/index.php?ID=162
[MQL5]OnCalculate()関数の使い方

ttp://system-trading.jp/toyoshima/index.php?ID=125
MQL5でカスタム指標プログラム(1)

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

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

MT4の無料プログラミング講座

メルマガ登録して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG