1. 機能概要
スプレッド測定データをcsvファイルで出力
スプレッド調査用ツールです。ツール適応中に測定し、結果をcsvファイルに出力します。サンプリング方法を変えたり、期間指定できたり、時刻基準変えたりと、目的(細かく調べたい/ザックリでOK)や活用手段(Excel/Python他)に合わせて色々と調整できます。スクリプト版とEA版があります。
- スクリプト版
一時測定用。スプレッドデータはティックベースで取得すると量が膨大になるため、データ量を適度に間引いたサンプリングが可能です。スクリプトなのでEAインストール中のチャートにも適応できます。
- EA版
長期測定用。スクリプト版よりもティック検出精度が高く、複数シンボルを同時に測定できます。任意のスプレッド幅以上/以下のみをログに残すことも可能です。
スプレッドデータはブローカー間で定義の異なるpipsではなく、points(価格変化の最小単位:整数)で出力します。
スクリプト版input
EA版input
以下、各項目の解説。
- サンプリング方式
スクリプト版のみ。記録タイミングを選びます。ティックベースは新しい価格が到着する度に記録し、等間隔ベースはティックがなくても一定間隔で記録します。市場の動きや記録量に応じて使い分けて下さい。
- ティック間引き
スクリプト版のみ。ティックベース記録時にティックを間引きます。1なら全ティックを記録、2なら2本に1本、10なら10本に1本。高頻度ティックでファイルが大きくなりすぎるのを防ぐのに有効です。ティックベースモード時のみ有効。
- 間隔(ms)
スクリプト版のみ。等間隔サンプリングを選んだ場合の記録間隔をミリ秒で指定します。例:1000なら1秒ごと。ティックが少ない時間帯でも均等にデータを取得でき、Excel等で解析しやすいログが作れます。等間隔モード時のみ有効。
- 対象シンボル
EA版のみ。チャートシンボル/指定リストから選択。
- 指定リスト
EA版のみ。測定対象シンボルを指定。複数の場合は、カンマ(,)またはセミコロン(;)で区切る。
- 期間指定有効化
trueにすると指定した開始~終了の間だけ記録し、終了を過ぎると自動停止します。falseにすると期間制限なく記録を続けます。テストや特定時間帯の解析に便利です。
- 設定時刻基準
記録期間をどの基準時刻で解釈するかを選びます。サーバー時間・UTC+0・日本時間(UTC+9/JST)に対応。入力した開始・終了時刻はここで選んだ基準に従い内部でサーバー時間に換算されます。
- 開始時刻
記録を始める時刻を指定します。基準は「時刻基準」で選んだサーバー時間・UTC・JSTに従って解釈されます。期間指定がtrueの場合のみ有効。
- 終了時刻
記録を終了する時刻を指定します。終了を過ぎると自動的にスクリプトは停止します。基準は「時刻基準」で選んだサーバー時間・UTC・JSTに従って解釈されます。期間指定がtrueの場合のみ有効。
- ファイル名接頭辞
出力されるCSVファイルの先頭名を指定します。シンボル名やタイムスタンプと組み合わさり「SpreadLog_銘柄名_サンプリング方式_集計モード_実行開始タイムスタンプ_通番.csv」表記の一意なファイル名が生成されます。例:「SpreadLog_USDJPY_TICK_INSTANT_20250921-123000_001.csv」
- 共通フォルダ
trueにするとMT5の共通フォルダ(\MetaQuotes\Terminal\Common\Files)に保存されます。複数口座で同じログを扱う場合や口座間で共有したい場合に便利です。falseなら通常の口座専用フォルダに保存されます。
- Files配下のサブフォルダ
Files以下のフォルダ名を設定して下さい。ここで指定したフォルダにログ保存します。フォルダがFiles内に存在しない場合、新規作成します。
- ヘッダー出力
CSVファイルの先頭行に列名を出力するかどうかを指定します。trueなら「timestamp,bid,ask,spread」などのヘッダーが追加され、Excel等で開いた際に理解しやすくなります。
- サンプル経過時間(ms)出力
スクリプト版のみ。記録時刻をミリ秒単位で出力するかを指定します。trueにすると「sample_timestamp_msc」列が追加されます。高精度なログ分析や遅延調査に有効ですが、通常の用途ではfalseにしても構いません。
- ティックベースの場合:サーバーから届いたティックのミリ秒時刻をそのまま出力します。
- 等間隔ベースの場合:
GetMicrosecondCount() に基づく端末内部クロックの値を出力します。これは「MT5が起動してからの経過時間(ms)」であり、絶対的な時刻ではなくストップウォッチ的な計測値です。これにより「指定間隔(例:1000ms)通りに記録できているか」「サーバー時刻とのズレはどの程度か」を確認できます。
- ティック時刻(ms)出力
サーバーでティックが発生した正確なミリ秒時刻を出力します。trueにすると「tick_timestamp_msc」列が追加され、サーバー発生時刻とロガー記録時刻の差を検証できます。
- 集計モード
記録粒度を選びます。”瞬間値”はティックやサンプルごとの瞬間値をそのまま記録、”1秒要約”は1秒ごとに最小(min)・最大(max)・平均(avg)・件数(count)をまとめて出力します。大量データを扱う場合に便利です。
- 行数上限
1つのCSVファイルに保存する最大行数を指定します。超えると自動的に新ファイルが作成されます。Excelで利用したい場合、行数上限(約100万行)を考慮し90万程度がおすすめです。0を指定すると上限なしになります。
- ファイルサイズ上限
生成するCSVファイルのファイルサイズ上限を指定します。超えると自動的に新ファイルが作成されます。Excelで利用したい場合、重過ぎると開きにくくなるため20MB(=20971520bytes)程度がおすすめです。0を指定すると上限なしになります。また行数上限とファイルサイズ上限の両方を設定している場合、上限に先に達する方が優先されます。
- 日次分割
trueにすると日付が変わった時点で自動的に新しいファイルに切り替わります。長期間連続で稼働させる場合でも、日ごとのファイルに整理されて管理や分析が容易になります。
- 同一ティックスキップ処理
スクリプト版のみ。trueにするとtick_timestamp_mscが直前データと重複する場合にスキップ処理します。等間隔モードにおける休場時のデータ重複を防止できます。
- スプレッドスキップ処理
EA版のみ。trueにすると下記のスプレッド条件に該当した場合、対象ティックがスキップ処理されます。
- 値以下ならスキップ
EA版のみ。スキップ上限閾値。ポイントで指定。実際のポイント値は整数ですが、この設定値は小数で指定可。0は無効。
- 値以上ならスキップ
EA版のみ。スキップ下限閾値。以下同上。
サンプリング方式 × 集計モードの組み合わせによる挙動の違いは、以下のようになります。
| サンプリング方式 | 集計モード = 瞬間値 | 集計モード = 1秒集計 |
|---|
| ティックベース | – 新しいティックが届くたびにそのまま記録 – 各ティックの bid/ask/spread をそのまま残す – データ量は多くなるが、市場の細かな動きを忠実に再現できる | – 1秒間に届いたティックをまとめて最小値・最大値・平均値・件数を出力 – 秒ごとのサマリーになるのでファイルサイズを抑えつつ変動幅は把握可能 |
| 等間隔ベース | – 指定間隔(ms)ごとに最新ティックを記録 – 例:1000msなら1秒ごとに「その時点の bid/ask/spread」を取得 – 均等なタイムスタンプ付きの時系列データが作れる | – 指定間隔でサンプリングした結果を1秒ごとにまとめ、その秒内の最小値・最大値・平均値・件数を出力 – 時系列がきれい&ファイル量が少ないので統計処理や可視化に向く |
さらに分かりやすくまとめると、ざっくり以下の通りです。
- ティックベース × 瞬間値 → 「生のティックログ」。精度は最高だがファイルが大きくなりやすい。
- ティックベース × 1秒集計 → 「秒ごとの変動レンジ」。1秒単位でまとめることでデータ圧縮。ボラティリティ解析向け。
- 等間隔 × 瞬間値 → 「整った時系列データ」。ExcelやPythonで扱いやすい。
- 等間隔 × 1秒集計 → 「コンパクトな統計データ」。長期間のモニタリングや可視化に最適。ただし間隔msが1秒以上だと瞬間値と大差ないので注意(無駄な列が増えるだけ)。
以上、目的に合わせてご活用下さい。
2. 無料ダウンロード
面倒な口座登録、メールアドレス登録、LINE登録等は一切不要です。利用規約の範囲でご自由にお使い下さい。
以下の利用規約について確認し、同意しました
チェックを入れるとダウンロードボタンがクリックできるようになります
《利用規約》本プログラムを利用して損失・損害が出た場合、不具合・誤動作・誤操作を含めたあらゆる状況において、それら損失・損害の補償一切を当方に求めないこと。全ての利用責任を本プログラム利用者自身に帰すものとする。
3. 更新履歴
- (2025/12/21) SpreadLogger_EA ver1.0
- EA版をリリース
- ティック検出精度向上
- 複数シンボルの同時測定可
- スプレッドスキップ処理設定を追加
- (2025/12/21) SpreadLogger ver1.1
- 以下の仕様を追加
- 保存先にFiles以下のサブフォルダを指定可
- ファイルサイズ上限を設定可
- (2025/9/21) SpreadLogger ver1.0