【開発の裏側⑫】MT5で上位足のボタンを押すと、10秒以上チャートが固まった話

【開発の裏側⑫】MT5で上位足のボタンを押すと、10秒以上チャートが固まった話

記事
IT・テクノロジー
どうも、FXトレーダー兼システムエンジニアのナオトです。

e-DowgatorPro2 のMT5版を作ったときのことです。
MT4版はもう出来ていて、それをMT5へ移しました。

発売前の確認で、上位足のボタンを押すと、10秒から15秒ほどチャートが固まりました。
線が出るまで、パネルも動かない。レートの表示まで止まります。
MT4版では起きない動きでした。



テスターで計りながら原因を探しました。

MT5では、別の時間足の移動平均線を使うとき、まずその計算の準備をMT5に頼みます。
計算はMT5が裏で進めるので、すぐには終わりません。数秒かかることもあります。

インジケーターは、その計算が終わったかどうかを聞かずに、毎回全部を作り直しに行っていました。
移動平均線が読めずに失敗する。失敗したと分かったあとも、お知らせの印、線、全部の時間足のパネルまで描き直していたんです。

これを1秒に5回、さらに値が動くたびに繰り返していました。
その重い処理が、MT5が移動平均線を計算する手を奪っていた。だから計算がいつまでも終わらず、画面ごと止まっていました。



もう1つ見つかったのは、上位足の過去の足が少ないときです。
計算に要る本数がいつまでもそろわず、ずっと待ち続ける形になっていました。



直したのは4つです。

まず、計算が終わったかを先に聞いて、終わっていなければすぐ戻る。待っている間は今の表示のままにする。
やり直しは1秒に1回にする。
読む足の本数を、計算に使う分だけにする。MT5は履歴を長く持っていて、15分足だけで9万6千本ほどありました。それを毎回全部読んでいたんです。
上位足の足が少なくても、あるだけで計算する。

直したあと、テスターで直す前と同じ表示になることを確かめて出しました。



MT5の別の時間足のデータは、頼んだらすぐ届くものではありません。
待っている間に重い処理を回すと、その待ち時間そのものを延ばしてしまう。
MT4版では同じ書き方で止まらなかったので、移すときに見落としやすいところだと思います。

MT4とMT5の変換や、動作が重いインジケーターの直しのご依頼は、こちらで受けています。


最後までお読みいただき、ありがとうございました。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す