【開発の裏側㉔】1.5秒で切るはずの通信が、4秒かかってチャートを止めていた話

【開発の裏側㉔】1.5秒で切るはずの通信が、4秒かかってチャートを止めていた話

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

インジケーターから外のサーバーへ問い合わせる仕組みを作っていたときの話です。
サーバーが応えないときに、いつまでも待たないよう、1.5秒で打ち切る設定にしていました。



ところが、サーバーにつながらない状態で測ってみると、打ち切るまでに4.05秒かかっていました。
そのあいだ、チャートの画面は約4秒止まります。

インジケーターの中で通信を待つと、待っているあいだは画面の更新も止まります。
1.5秒でも長いくらいなのに、その3倍近く止まっていました。



原因は、待ち時間の設定の仕方でした。

Windows の通信の部品では、待ち時間を、つなぐとき、送るとき、受け取るときの3つに分けて決めます。
私は、その3つそれぞれに1.5秒を入れていました。

1つずつは1.5秒で切れます。でも、3つの段階を順に通るので、最悪の場合は合計で4.5秒近くまで待つことになります。
測った4.05秒は、ちょうどその形でした。



直し方は、全体で何秒かを先に決めて、それを3つに分けることにしました。
全体を1.5秒にするなら、1つの段階はその3分の1です。短くなりすぎないよう、1つの段階の下限は0.1秒にしています。

あわせて、良い応えが返らないときに問い合わせ直す間隔も、15秒から30秒に延ばしました。問い合わせの回数が減れば、画面が止まりうる回数も減ります。



設定に書いた数字と、実際にかかる時間は、同じとは限りません。
とくに待ち時間は、どこで何回待つのかまで見ないと、合計が分かりません。
通信を入れたインジケーターは、つながらない状態で、実際に何秒止まるかを一度測るようにしています。

MT4やMT5で、外のサーバーと通信するインジケーターやEAの制作のご依頼は、こちらで受けています。


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