誰がデータを用意するのか(3環境の違い)
まず、3つの環境で「データを誰が用意するか」を整理します。ここが分かると、なぜPythonだけ入手の話が必要なのかが腑に落ちます。
- MQL5(MT5):MT5がFX業者から受け取った過去データを内蔵しています。ストラテジーテスターは、それを自動で使います。基本、こちらでデータを用意する作業はありません(ただし業者が持つ期間の範囲内)。
- Pine(TradingView):TradingViewが提供するデータを、チャートに表示した銘柄のぶんだけ自動で使います。こちらもダウンロードは不要です。
- Python:データを持っていません。自分でCSVを用意して読み込みます。だから入手先を知っておく必要があります。
FX・貴金属:JForex(Dukascopy)
FX通貨ペア(USD/JPY、EUR/USD など)と、XAUUSD(ゴールド)・XAGUSD(シルバー)を検証したいときは、スイスの Dukascopy 銀行が提供する JForex のヒストリカルデータが定番です。品質が高く、長期間のデータを無料でダウンロードできるのが利点です。
- ブラウザ版のヒストリカルデータ・ダウンロードページ、または JForex プラットフォームから、銘柄・期間・時間足を指定してCSVで取得します。
- ティック単位の細かいデータから日足まで選べます。このコースの月末ロングは日足で十分です。
- 時刻の基準(タイムゾーン)は取得設定で選べます。どの基準で取ったかを覚えておくと、後で日付の判定がずれません。
なお、FX業者ごとに価格は微妙に異なります。JForexのデータで検証した結果は「Dukascopyの価格での結果」であり、あなたが使う業者の価格とは完全には一致しません。この差も、第10回で扱う「環境によるズレ」の一種です。
株価指数など:TradingViewからエクスポート
S&P500やナスダックなどの株価指数、個別株、仮想通貨など、FX・貴金属以外を検証したいときは、TradingViewからのエクスポートが手軽です。このコースの題材である月末ロングも、S&P500を使うのでこちらが該当します。
- TradingViewでその銘柄・時間足のチャートを開き、エクスポート機能でCSVをダウンロードします(有料プランでより長い期間を出せます)。
- ダウンロードしたファイルは、たとえば
SP_SPX, 1D.csvのような名前で保存されます。第5回のread_csvでそのまま読み込めます。 - 列は time, open, high, low, close などが並びます。第5回のとおり
df.head()で列名を確認してから使います。
ひとくちにS&P500といっても、現物指数(SPX)・先物・ETF(SPY)・CFDなど複数の表し方があり、値も時間帯も少しずつ違います。 TradingViewでもMT5でも、どの「S&P500」を選んだかで結果が変わります。検証するときは、3環境でできるだけ近い対象を選ぶように意識し、それでも残る差は「対象が違うことによるズレ」として記録します(第10回)。
データを使う前の確認
どの入手先でも、読み込んだ直後に次の6点を確認する習慣をつけます。ここを飛ばすと、検証結果そのものが当てになりません。
- 期間の長さ:何年ぶんあるか。数か月では季節性の検証には短すぎます。月末ロングなら最低でも10年前後は欲しいところです。
- 穴(欠損):途中で日付が飛んでいないか。土日や祝日で休みになるのは正常ですが、平日が長期間抜けているのは異常です。
- 時刻の基準:日付が何時基準で区切られているか。基準がずれると「その日の終値」が1日ずれ、月末判定が狂うことがあります。
- 列名と形式:time・close などの列名、日付の書式、価格の小数桁が想定どおりか。
- 重複と異常値:同じ時刻の重複、OHLCの大小関係、ゼロ価格、桁違いの値がないか。
- 銘柄仕様:Bid/Ask、契約サイズ、ティックサイズ、取引停止時間、ロール方法が検証対象と一致するか。
データの扱いで気をつけること
最後に、データそのものの注意を2つ。1つ目はライセンス・利用規約です。ダウンロードしたデータは、多くの場合個人の検証・学習の範囲で使うもので、再配布や商用利用は規約で制限されていることがあります。データを人に配ったり公開したりする前に、提供元の規約を確認してください。
2つ目は、「良いデータでも、検証の結論を保証はしない」ということです。品質の高いデータを使っても、第3回の過剰最適化や、そもそものルールの妥当性の問題は消えません。データは検証の出発点を正しくするものであって、結論の正しさは別に確かめる必要があります。次回からは、いよいよこのデータを使って3環境で実装していきます。
チェックリスト
次の記事に進む前に、以下が自分の言葉で説明できるか確認してください。
- 外部データが要るのは主にPython編で、MQL5・Pineは自動供給されること
- FX通貨ペア・XAUUSD・XAGUSDはJForex(Dukascopy)
- 株価指数などはTradingViewからエクスポート
- 同じ「S&P500」でも現物・先物・ETF・CFDで中身が違うこと
- 使う前に確認する6点(期間・穴・時刻基準・列名と形式・重複と異常値・銘柄仕様)
- データの再配布・商用利用は規約の確認が要ること
ミニテスト
最後に3問だけ確認です。不正解なら別の選択肢を選び直せます。正解すると解説が表示されます。
Q1. 外部からデータを取ってくる必要が主にあるのは?
MT5は内蔵データ、TradingViewは自社のデータを自動で使います。データを持たないPythonだけ、自分でCSVを用意する必要があります。
Q2. USD/JPY や XAUUSD(ゴールド)の日足データの入手先として本文が挙げるのは?
FX通貨ペアとXAUUSD・XAGUSDは、Dukascopyが提供するJForexのヒストリカルデータが定番です。株価指数などはTradingViewエクスポートを使い分けます。
Q3. ダウンロードしたデータを使う前の確認として、本文が挙げていないのは?
データは検証の出発点を正しくするもので、勝てるかどうかを保証しません。確認すべきは期間・穴・時刻基準・列名と形式・重複と異常値・銘柄仕様の6点です。