エキスパートアドバイザーの各フィルター、すべての「ロールオーバー前のクローズ」ルール、およびチャート上の各セッションボックスは、ある1つの要素を信頼しています。それは、銘柄のセッションテーブル、つまりブローカーがSymbolInfoSessionQuoteおよびSymbolInfoSessionTradeを通じて宣言する取引時間です。このツールは、そのテーブルと過去のデータとを照合して確認を行います。 過去N日間のうち、その週の各分について、その銘柄にM1バーが存在した日数をカウントし、その結果をテーブルが宣言している値の横に表示します: 通常は空であるはずの宣言された分、テーブルが「クローズ済み」と指定する分のバー、取引テーブルと相場テーブルの値が一致しない分、および通常は空ではないはずの宣言された分における一時的なデータ欠落。

マーケットウォッチのシンボル5つ、各35日間(2026年9月1日から2026年10月6日、サーバー時間)、1回の処理に62ミリ秒。 「Table h/wk」と「Real h/wk」は、それぞれセッションテーブルが宣言する週あたりの時間数と、その曜日の日付の少なくとも半分にバーが存在する時間数を指します。 「Dead min/wk」は、その日付の最大4分の1にバーが存在する宣言済み分数をカウントします。「Outages」は、デッドではない宣言済み分数のうち、5分以上の空白をカウントします。ページに収まるよう、パネルのフォントサイズを4に設定して出力しました。デフォルトは8です。
問題点
セッションテーブルは宣言であり、測定値ではありません。ターミナルはシンボル仕様でこれを表示し、EA はそれを読み取ることができますが、実際に到着する価格と照合してチェックするものは何もありません。 以下で測定したデモサーバーでは、EURUSD、GBPUSD、USDJPYは月曜日から木曜日の00:00から24:00まで気配値が提供されると宣言されています。 M1の履歴によると、サーバー時間の21:00直後には、しばしば価格が全く表示されないことがあります。同じサーバー上の金(Gold)は、20:58から22:00まで取引休止と宣言されており、 そのバーは表と分単位で一致しています――ただし、2026年9月7日(月)の米国祝日を除きます。この日は、取引中断前の最後のバーが18:27にあり、公表されたセッション時間の2時間半が空白となっています。
こうした情報は表からは一切読み取れませんが、自動取引においてはすべて重要な要素となります。この表に基づいて作成された時間フィルターは、価格が存在しないことが多い分単位の時間帯で取引を試みてしまうでしょう。 ストラテジーテスターにもその時間帯のティックデータは存在しないため、「21:01」に発動するルールは、ほとんどの日において一度も発動しない可能性があります。また、かつて仕様書からコピーされた「取引時間」という入力項目は、その仕様書が正しい限りにおいてのみ正しいのです。
測定対象
ウィンドウは [D0, D1) です: D1は、銘柄の最新のM1バーが記録された日のサーバー時間00:00であるため、本日の未完了の日は除外され、D0はInpDays日分前の丸1日前に位置する(M1の履歴がそれより後に始まる場合は、最初の丸1日に繰り上げられる)。 このツールは、その週の各分について、ウィンドウ内のその曜日の日付(カレンダー上での日付。したがって、バーが1本も存在しない祝日は、すべての分が欠落している日付としてカウントされる)と、その分にM1バーが存在する「ヒット」の日付をカウントします。 1分間は、その開始時刻が当該曜日の相場セッション内にあり、Tick Integrity Auditorが使用するのと同じセッションテストを満たす場合に「実分」とみなされます。
ジャーナルには、シンボルごとの算術式として計算結果が出力されます:findings_rows == dead_windows + outside_windows + trade_no_quote_windows + quote_no_trade_windows + outages。測定されなかったチェックは、CSVでは空欄のままとなり、パネル上では「-」として表示され、決して「0」とは表示されません。
測定例
Exnessデモサーバー、サーバー時刻=UTC、マーケットウォッチ銘柄5つ、InpDays=35、その他の入力項目はすべてデフォルト設定。
| 銘柄 | 週あたりの取引回数 | 実取引時間(h/週) | デッドミニッツ / ウィンドウ | アウトサイド分 | 取引≠提示の最小時間 | 停止時間 | 最長の停止時間 |
|---|---|---|---|---|---|---|---|
| XAUUSD | 114.82 | 114.82 | 0 / 0 | 0 | 0 | 1 | 150分足、2026年9月7日(月)18:28 |
| EURUSD | 119.90 | 119.70 | 7 / 5 | 0 | 0 | 4 | 7分前、2026年9月2日(水)11:39 |
| BTCUSD | 168.00 | 168.00 | 0 / 0 | 0 | 0 | 1 | 13分前、2026年9月13日(日)07:16 |
| GBPUSD | 119.90 | 119.62 | 9 / 6 | 0 | 0 | 5 | 9分前、2026年10月1日(木)21:03 |
| USDJPY | 119.90 | 119.57 | 14 / 5 | 0 | 0 | 9 | 10分、2026年10月4日(日)21:05 |
ロールオーバーは、表には記載されていない空白の時間帯です。 この期間中の月曜日から木曜日までの全20回の夜間において、 ロールオーバー直前の最後のバーは20:59です。 その後、21:00から21:19までの間に少なくとも1分間、バーが表示されない時間帯が、EURUSDでは16回、GBPUSDでは19回、USDJPYでは20回の夜間に発生し、そのうち10回、10回、14回では、そのような欠落した分が4分以上続いています。 その長さは夜ごとに異なるため、2つの形で現れます。1つは、ほとんどの夜で一致する「デッドミニッツ」として (月曜日と火曜日のUSDJPY、21:00~21:05、5日間のうち最大1日だけバーがある)というケースと、一部の夜のみ一致する「データ欠落」として現れるケース(GBPUSDの3つの夜、その「デッドミニッツ」が終了する21:03から数えて、それぞれ7~9分間)の2つの形で現れます。 36件の事例のうち28件は21:00から21:15の間に始まっており、そのうち2件はUSDJPYの日曜日の寄り付きで、最初のバーが公表された21:05から6分および10分後に現れたものである。

左:この期間の月曜日から木曜日の20日間の夕方のうち、EURUSDにM1バーが存在した割合(20:50から21:15までの分単位)。セッション表では、これらの各分がすべて「オープン」と宣言されている。 右:2026年9月7日(月)のXAUUSDと、対象期間内の他の4つの月曜日との比較。網掛けの帯は、セッション表で指定されているブレイクを示す。これは、ツール自身の出力ではなく、ターミナルのMCPインターフェースを通じて読み取ったM1バーから作成されたものである。
金の表は、祝日を除いて正しい。 XAUUSDの実質的なセッションと宣言されたセッションは、平日すべてにおいて分単位で一致している: 月曜日から木曜日は00:00~20:58および22:00~24:00、日曜日は22:01~24:00、金曜日は00:00~20:58。 唯一の例外は2026年9月7日(米国労働者の日)で、18:28から20:58の取引中断までの150分間、バーが表示されていません。表自体には「本日は早じまい」と記載する方法はありませんが、履歴データにはその情報が含まれています。
2回の日中の取引停止が、3つの通貨ペアすべてに同時に発生した。 2026年9月2日(水)11:39からと、2026年9月9日(水)10:37から: それぞれ7分間、EURUSD、GBPUSD、USDJPYでは同じ分間に取引が停止しましたが、XAUUSDとBTCUSDではそれらの分間のすべてにバーが記録されています。原因が何であれ、この障害は3つの通貨ペアに同時に発生し、金とビットコインには影響を与えませんでした。これは、当時のバックテストを再現しても何の説明もなく再現されるような事象です。
明確な点があります。 どの銘柄も、その表で「クローズ」と表示されている分にはバーが1本もありません。また、5銘柄すべてにおいて取引表は気配表と一致しているため、C2とC3はここで何も検出できませんでした。 「24時間365日稼働」と宣言されているBTCUSDは、実際に24時間365日稼働している。唯一の停止は、2026年9月13日(日)07:16から13分間である。
レポートの独立した検証
このレポートはMetaTraderの外でも再現可能です。 このページで使用されているスクリプトは、Pythonだけでは取得できない情報(ウィンドウ、3つの閾値、トレードチェックの有効/無効、およびサマリーファイルとセッションファイルからのセッションテーブル)のみを読み取り、ターミナルのMCPインターフェースを通じてM1バーの時刻を取得し、サマリーの22の結果列、 各銘柄のマップの全10,080セル、有効なセッション、および上記の定義に基づく結果行を再計算します。 ここに示した実行結果では、5つの銘柄すべての値について、当該ツールと一致しています。ファイルのコピーに手動で仕込んだ2つのエラー(カウンター1つ、マップセル1つ)も、両方とも報告されました。スクリプト独自の定義については、まず手作業で作成した2週間の合成データを用いて検証されました。
使用方法
エキスパートアドバイザーを任意のチャートにアタッチします。InpSymbols を空にすると、そのチャートのシンボルを監査します。* を指定するとマーケットウォッチ全体を監査し、カンマ区切りのリストを指定するとそのシンボル群を監査します。 監査は1回(または「InpRefreshMinutes」ごとに)実行され、平日ごとの比較結果と停止時間をエキスパート・ジャーナルに出力し、チャート上に表を描画し、CSVファイルを作成します。このツールは履歴テーブルとセッションテーブルのみを読み込みます。コード内に取引機能はなく、DLLもネットワークアクセスも使用しません。 * を指定した場合、Market Watchにすでに登録されているシンボルのみを対象とします。リストに名前が記載されているものの、まだ登録されていないシンボルは、通常の履歴リクエストと同様に、履歴が読み込まれる際にターミナルによって自動的に選択されます。
まず、ジャーナルの行を確認してください。次のような行があります。
USDJPY Mon table 00:00-24:00 | real 00:00-21:00 21:05-24:00 | dead 21:00-21:05 (1/5) | outside none
という行は、月曜日にテーブルが1日全体を宣言しており、00:00から21:00までおよび21:05以降にバーが存在し、21:00から21:05までの各分には、5回の月曜日のうち最大1回だけバーがあったことを示しています。 時間フィルターには、宣言されたセッションではなく実際のセッションを使用してください。InpDaysを広げてより多くの週を表示し、InpOutageMinutesを下げてより短い空白期間を表示してください。
入力
| 入力 | デフォルト | 意味 |
|---|---|---|
| InpSymbols | "" | シンボル:空 = チャートシンボル、* = マーケットウォッチ、それ以外はCSVリスト |
| InpDays | 28 | 監査対象とするM1ヒストリーのサーバー稼働日数(本日より前の日付で終了するもの) |
| InpLivePct | 50 | 平日の少なくともこの%にバーが存在する場合、その1分は「実在」とみなされる |
| InpDeadPct | 25 | 宣言された分が、その最大この%にバーが存在する場合、その分は「デッド」とみなされる |
| InpOutageMinutes | 5 | 通常は稼働している宣言済み分において、この長さ以上の単発的な空白が発生した場合は報告する |
| InpCheckTrade | true | 取引セッションテーブルと気配値セッションテーブルを比較する |
| InpMaxExamples | 5 | ジャーナル:銘柄ごとに表示される停止情報 |
| InpWriteCsv | true | 概要、セッション、マップ、有効データ、および調査結果のCSVファイルを書き込みます |
| InpShowPanel | true | 結果表をチャート上に描画する |
| InpPanelCorner | CORNER_LEFT_UPPER | パネルの角 |
| InpPanelFontSize | 8 | パネルのフォントサイズ |
| InpPanelX | 10 | パネルのX方向オフセット(px) |
| InpPanelY | 18 | パネルの Y オフセット(px) |
| InpRefreshMinutes | 0 | N分ごとに再監査(0 = 1回のみ監査) |
監査入力の値が範囲外の場合、それぞれ1行のジャーナルでクリップされます(パネル入力は何も表示されません)。エキスパートアドバイザーが起動を拒否することは決してありません。
出力ファイル
すべてのファイルは MQL5\Files\SessionRealityAuditor\ に保存され、ヘッダー行付きでセミコロン区切り、ファイル名は <symbols>_<days>d_<chart id>_… となるため、2 つのチャートが互いに上書きされることはありません。
制限事項(平易な説明)
MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/78079
ATS Trade Management Library - break-even, trailing stop and partial closes for any EA
エキスパートアドバイザーで未決済のポジションを管理します:ブレークイーブン、トレーリングストップ、2回に分けた部分決済、およびこれらが設定されていないポジションに対するストップとターゲット。このアドバイザーは決して取引を開始することはありません。
ATS Prop Rules Monitor - prop firm challenge scoreboard with the room left on every rule
プロップファーム・チャレンジのルールに関するパネルが1つあります。そこには、1日の損失、最大損失(固定またはトレーリング)、利益目標、最低取引日数、およびベストデイ(安定性)ルールが記載されています。各項目について、使用済み額と残りの余裕額が金額単位で表示されます。 「One more trade」は、本日の残余枠および最大損失枠の範囲内でストップアウトを回避できる最大のロットサイズを表示します。 読み取り専用:取引の開始、変更、決済は一切行いません。プリセットには一般的な値が設定されていますが、各プロップファームによってルールが異なるため、ご自身のルールを確認の上、「カスタム」プリセットをご利用ください。ATS Risk Library(ATS_RiskLib.mqh、同梱)に基づいて構築されています。
CajasTF – MT5用統合マルチタイムフレームサイドパネル
スマートな色分け機能、独立した価格目盛、ローソク足の残り時間カウントダウンタイマーを備えた、リアルタイムのマルチタイムフレーム対応サイドパネルミニチャート。
Advanced Prop-firm Trade Panel based on S-R
MetaTrader 5用の、プロップファーム向けリスクガード機能と隠しサポート・レジスタンス検出機能を内蔵した手動取引パネル。