【開発の裏側101】経済指標の発表を1秒もずらさないために、時計の読み方を3つ直した話

【開発の裏側101】経済指標の発表を1秒もずらさないために、時計の読み方を3つ直した話

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

開発の裏側の101回目です。前回は、経済指標の一覧を使っていて気づいた3つの話でした。
今回も同じ e-EconomicStopper の話です。発表までの残り時間を数えるための、時計の読み方を直した3つです。

発表の時刻は、1秒のずれも困ります。そこで、時計をどこから取るかを見直しました。



1つ目は、日本時間の取り方です。

前の版は、パソコンの時計の時刻を、そのまま日本時間として使っていました。パソコンが日本時間に設定されている前提です。
なので、海外の時間に設定したパソコンでは、発表の時刻がずれていました。

直した版では、世界の基準の時刻に9時間を足して、日本時間を出すようにしました。パソコンの地域の設定に左右されません。
値動きを待たずに、0.1秒ごとに時計を見ています。値が動かない時間や週末でも、時計は正しく進みます。



2つ目は、パソコンの時計そのもののずれです。

パソコンの時計が狂っていると、1つ目をいくら正しくしても、ずれます。
そこで、指標の情報を取りに行ったときに、相手のサーバーが返してくる時刻と、受け取った瞬間のパソコンの時刻を比べるようにしました。

差が3秒以上あれば、画面とアラートで、Windowsの時刻を合わせてください、と知らせます。
インジケーターの側で勝手に時刻を直すことはしていません。相手の時刻は秒の単位で、通信の時間も入るからです。正しい直し方は、Windowsの時刻合わせです。

開発機で測ったときのずれは、1秒以内でした。



3つ目は、EAに渡す合図の時刻です。

e-EconomicStopper は、発表の前後をEAに知らせる合図も出しています。EAが比べるのはMTのサーバーの時刻なので、合図の時刻もサーバーの時刻に直して渡します。
ところが、MTを起動した直後は、サーバーの時刻がまだ来ていません。前の版は、その間に3時間ずれた時刻を書いていました。

直した版では、サーバーの時刻が来たら、直した値で書き直すようにしました。



時計は、同じ時刻に見えても、どこから取ったかで中身が違います。パソコンの時計、世界の基準の時刻、MTのサーバーの時刻。

時間で動くインジケーターやEAを作るときは、どの時計を使っているかを1つずつ書き出して、パソコンの地域の設定を変えて試してみてください。

e-EconomicStopper はこちらです。


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