CalendarDiagnostic
- ユーティリティ
- バージョン: 1.10
経済指標カレンダーのタブが空になっている、あるいはニュースフィルターが効かなくなった。原因はフィードの停止なのか、PC の時刻ずれなのか、それとも単にタブ側でフィルターされているだけなのか。カレンダータブから眺めている限り、この三つはまったく同じに見えます。
このスクリプトは三つを切り分け、次に何をすべきかまで示します。
何をするか
カレンダーのデータベースを API 経由で読みます。API は画面側のフィルターの影響を一切受けないため、これだけで三つ目の原因が切り分けられます。API が将来のイベントを返しているのにカレンダータブに何も出ないなら、それはタブがフィルターされているだけで、ターミナルは正常です。
読み取った状態は、次のいずれかの判定に分類されます。
- HEALTHY — 将来のイベントが存在し、フィードは生きている
- STALE FEED — 行は存在するが、現在時刻より先のものがない
- EMPTY — 対象期間に行が一つもない
- API ERROR — 呼び出し自体が失敗した
- UNSUPPORTED — このターミナルはカレンダーを提供していない
- CLOCK SUSPECT — 行は読めたが、「現在」が信頼できない
判定にはそれぞれ対処方法が併記されます。ステータスコードだけ渡されて放り出されることはありません。
時刻を確認し、確認できなかったときはそう言います
PC の時刻がずれると過去と未来の境界そのものが動くため、証拠が捏造されます。時計が進んでいればすべてのイベントが過去に見え、健全なフィードが停止しているように読めます。逆に遅れていれば、古い行が翌日のイベントに見え、死んだフィードが健全に読めます。時刻が直近ティックと許容範囲を超えてずれている場合、本スクリプトはフィードについての判断を拒否し、CLOCK SUSPECT を返します。
そして確認自体ができない場合 — 相場が閉まっており、ターミナルの内側からはティック未着と時刻ずれが同じ測定値になる場合 — その読み取りを検証済みとして黙って提示することはしません。フィードの判定自体は返します(そうしないと週末はこのツールが役に立たなくなるため)。ただし注記が付きます。STALE FEED のときは「時計が進んでいれば同じ判定が出る。カレンダーキャッシュに触る前に取引時間中に再実行を」と警告し、HEALTHY のときは「時計が遅れていれば偽装され得るので、ニュースフィルターが動作している証拠とは見なさないこと」と警告します。VPS ではよくある障害で、しかも誤診しやすいものです。
フィルター対象国も個別に確認します
どこか一国でも将来のイベントが残っていれば、データベース全体は健全に見えます。その一方で、あなたのフィルターが実際に参照している国の行だけが欠けている、という状態はあり得ます。本スクリプトは全体と指定国の両方を調べ、判定が食い違う場合はその旨と、どちらが実運用を支配するのかを示します。
稼働中のチャートでも安全です
設計上、読み取り専用です。注文を出さず、ポジションを変更せず、設定を書き換えず、ファイルも書きません。常駐もしません。スクリプトなので、チャート上の EA を追い出すこともありません。ドラッグして「エキスパート」タブを読めば、それで終わりです。
これは何ではないか
売買システムではなく、シグナルも出しません。停止したフィードを修復したり時刻を直したりもしません — どちらの問題なのかを特定し、対処方法を示すところまでです。カレンダーそのものを置き換えるものでもなく、MetaTrader が既に持っているカレンダーを診断します。
使い方
任意のチャートにドラッグし、「エキスパート」タブを読んでください。初期値のままで動きます。特定の国でニュースフィルターをかけている場合は、その国と、各イベント前後の遮断時間を設定してください。その形状のブラックアウトを実際のカレンダーに対して再現します。なお再現の対象は重要度「高」のイベントのみです。ご自身のフィルターが中・低の重要度も遮断する場合や、前後で非対称な時間幅を使っている場合は、結果が異なります。
ご質問は本製品ページのコメント欄にお願いします。
