EA開発に力を入れようと考えてTDS(Tick Data Suite)を購入しました。
一応、最初にTDSについて簡単に説明いたします。「知ってる」という方は飛ばしていただいて構いません。
TDS(Tick Data Suite)とは
MetaTrader4(以下MT4)のバックテストで「リアルティックデータ」を利用できるツールです。
MT4のバックテストでは1分足までしかバックテスト用のデータが存在せず、ティックは「仮想ティック」になっているのですが、この「仮想ティック」はリアルとかなり異なるようす。
実際、「良いEAができた!」と思って運用してみるとボロボロ‥ということばかりです。
TDSを利用することでMT4のバックテストよりも「リアルに近いバックテスト」が可能になります。
そしてMT4の場合、「1分足でのバックテスト」では業者が提供する1分足を使用してもモデリング品質は最大でも25%にしかなりませんが、TDSでは99.90%になります。(99.90という数値自体に意味はありません。MT4が品質を担保しているというものではなく、TDS側で設定しているだけです。MT4よりも品質が良いとだけ考えてください。)
また、MT4のバックテストでは「スプレッド」が固定になります。TDSでは「変動スプレッド」が利用できます。(※リアル環境を仮想で再現するだけで、リアルのスプレッド情報ではありません。)
とても素晴らしいツールなのですが‥一つ問題があるとすると、かなり高いということです。
買い切りのプランだと87,900円(投稿時点)と、気軽に買える値段ではありません。
※為替の影響で値段が変わることがあります。円高の頃は5~6万円程度でした。
ちなみに私は仮想通貨(主にイーサリアム)を換金して、その利益の一部を使って買いました。(当然経費として処理します!)
この仮想通貨はかなり前に買ったもので、少しずつ換金しています。(2018年に以下のような記事を書きました。)
仮想通貨は終焉ではなく、まだ始まっていない
(中略)全部で30種類くらい持っています(笑)いわゆる「ガチホ」というやつですね。今後も有望そうなものを見つけたら少しずつ買うと思います。
一気に換金すると税金が大変なことになるので、値段が高くなったタイミングで少しずつ換金しています。なお、今現在は追加購入していません。
※TickDataSuiteの購入は以下のリンクから可能です。試用版もあります。ご興味のあるかたはどうぞ!
TDSで最適化した結果
私はEAを自分のトレード戦略に合わせて開発しました。(1分足を使用したゴールドスキャルピングEAです)
これが有効であるかどうかを確認するため、最適化してみます。

悪くなさそうですね!とりあえず一番上の最もプロフィットファクターが高いパラメーターを選んで、普通にバックテストを実行してみました。


バックテスト結果では損失になりました‥。このパラメーターに限らず、どのパラメーターを選択しても最適化した結果と通常のバックテストした結果が異なります。
問題の解決方法が出てこない
この問題を解決しようと検索エンジンに「TDS 最適化 結果が異なる」といったフレーズで問い合わせてみましたが、「これだ!」という解決方法が見つかりませんでした。
途方に暮れていたのですが、ダメ元でAI(Microsoft Edgeに付属しているCopirot)に問い合わせて見たところ、以下の回答が出てきました。
TDSは「すべてのティック」を使うと、より精密なシミュレーションになりますが、最適化時は精度を落として高速化していることがあります。
え?これまじ?(問い合わせ原文そのまま)
はい、これはかなり重要なポイントです。
Tick Data Suite(TDS)を使っていても、MT4の最適化時には「すべてのティック」モードが完全には再現されないことがあります。理由は以下の通りです:
⚡ 最適化時の「ティック精度」は制限される
✅ 最適化は高速化のために精度を落とす
MT4の最適化は、何百〜何千通りものパラメーターを試すため、「始値のみ」や「コントロールポイント」モードで実行されることが多い。TDSを使っていても、最適化時には内部的にティックの再現を簡略化している可能性がある。
⚠️ TDSの「すべてのティック」モードは、通常のバックテスト時にのみ完全に有効
TDSの「すべてのティック(Every tick based on real ticks)」は、最適化時には一部制限されるとTDSの公式ドキュメントでも言及されています。つまり、最適化で得られた「良さそうなパラメーター」でも、実際のティック精度で再テストすると結果が変わるのは、ある意味当然なんです。
公式ドキュメントなんて読んでないです。たぶん英語のドキュメントだし‥。
始値のみで最適化して結果を比較

先ほどと同じように、一番上のパラメーターでバックテストしてみます。


損益、取引回数、PF、期待利得、ドローダウン、すべて一致しました!
スキャルピングロジックで「始値のみのバックテスト結果」に意味があるとは思えませんが‥。
実際、このパラメーターで「全ティック」にすると全然違う結果になります。


最適化せずに検証するのはあまりにも時間がかかります。どうしたらいいの、コパえもん!
1. 🧪 2段階最適化(粗→精)
- ステップ1:始値のみでざっくり最適化
- 広範囲のパラメーターを高速にスキャン
- ステップ2:上位10〜20個を「すべてのティック」で再テスト
- 実際のティック精度で信頼性を確認
📌 この方法なら、最適化のスピードと精度のバランスが取れます。
始値のみの最適化ではほとんど意味が無いんですけど‥。
「全ティック」で最適化したあと、1つ1つ、良さそうなのをバックテストして確認していくのがベストなのでしょうか。
現在、私が開発した「MT4BackTester」を改造して効率化できないかなと模索中です。
追記:MT4BackTesterを改造して自動化しました
私がハマったこの問題について、もしかすると他にも困っている方がいらっしゃるかもと思い、記事にしました。有効な解決策までは提示できていませんが‥。
誰かのお役に立ちましたら幸いです。
コメント