ティックデータを用いたバックテスト

 

ティックデータを使ったバックテスト

メタトレーダーでこれを行う良い方法を見つけたと思います - 私はこのメソッドを介してかなりの方法を得たが、STUCKになったので、最終段階でいくつかの助けを求めています。

1)会社(商用ソース)のシンボルからティックデータを得た。CL (石油) 無料のソース、例えばデューカスコピーなどにはこのシンボルはありません。
2) 会社のソフトウェアを使って、このティックデータを(解像度を落とさずに)バー形式にレンダリングしました。バー形式です。

日付、時間、オープン、ハイ、ロー、クローズ、ボリューム

各バーには1ティックしかありません。だから、あるバーでは、オープン、ハイ、ロー、クローズはすべて同じです。

3) このティックデータをメタトレーダーのストラテジーテスターに取り込むために、メタトレーダーの履歴フォルダーにある関連ファイルをすべて削除します。オフラインでメタトレーダーを開き、ヒストリーセンターとインポート機能を使ってデータを取り込みます。もちろん、ティックデータ(バー形式)ですが、メタトレーダーでは問題なく受け入れられています。ストラテジーテスターを使用すると(もちろんオフラインのまま)このデータにアクセスできます。

4) しかし、問題は、メタトレーダーによると、このデータには同じ日付と時間のスタンプを持つ複数のバーがあることです。これを解決するには、データを変更して、すべてのバーが異なる日付とタイムスタンプを持つようにすることだと思います(メタトレーダーが拾える分解能で)。例えば、次のような場合です。
あるバーのタイムスタンプが 18:00:00 で、次のバーのタイムスタンプが 18:00:08 の場合、この2番目のバーのタイムスタンプを 18:01:00 に変更する必要があります。そうすれば、メタトレーダーはこのバーを次のバーとして認識することができます。もちろん、これはすべてのタイムスタンプを変更することになりますが(もちろん日付スタンプも)、私はこれが本当に重要だとは思いません。私の質問は、どのようにすれば、この方法ですべての日付と時間のスタンプを変更することができるのでしょうか?

もちろん、このデータはExcelでは多すぎる項目です。マイクロソフト・アクセスにアクセスすることができます。

多分、各エントリーに1秒を繰り返し追加するようなスクリプトが有効でしょう。 しかし、それに応じて時間を変更する必要があります私たちが上がるにつれて、そしてもちろん日付。これが、私の頭を悩ませるところです。どうすればいいのかわからない。


私のバーベースのティックデータのサンプルは、以下のカット&ペーストです。
(これは、CLデータ - 甘い原油の未来)

日付、時間、始値、高値、安値、終値、出来高
20100831,18:00:00,71.70,71.70,71.70,71.70,2
20100831,18:00:00,71.70,71.70,71.70,71.70,1
20100831,18:00:00,71.70,71.70,71.70,71.70,1
20100831,18:00:00,71.70,71.70,71.70,71.70,1
20100831,18:00:00,71.70,71.70,71.70,71.70,1
20100831,18:00:01,71.73,71.73,71.73,71.73,2
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.73,71.73,71.73,71.73,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.75,71.75,71.75,71.75,7
20100831,18:00:01,71.75,71.75,71.75,71.75,1
20100831,18:00:04,71.75,71.75,71.75,71.75,1
20100831,18:00:05,71.74,71.74,71.74,71.74,1
20100831,18:00:05,71.75,71.75,71.75,71.75,1
20100831,18:00:05,71.75,71.75,71.75,71.75,3
20100831,18:00:08,71.75,71.75,71.75,71.75,7
20100831,18:00:09,71.75,71.75,71.75,71.75,1
20100831,18:00:10,71.75,71.75,71.75,71.75,1
20100831,18:00:10,71.75,71.75,71.75,71.75,1
20100831,18:00:10,71.71,71.71,71.71,71.71,1
20100831,18:00:11,71.70,71.70,71.70,71.70,1
20100831,18:00:11,71.68,71.68,71.68,71.68,1
20100831,18:00:19,71.71,71.71,71.71,71.71,1
20100831,18:00:19,71.71,71.71,71.71,71.71,1
20100831,18:00:19,71.69,71.69,71.69,71.69,1
20100831,18:00:19,71.69,71.69,71.69,71.69,1
20100831,18:00:19,71.68,71.68,71.68,71.68,2
20100831,18:00:19,71.67,71.67,71.67,71.67,1
20100831,18:00:34,71.72,71.72,71.72,71.72,1
20100831,18:00:34,71.72,71.72,71.72,71.72,1
20100831,18:00:35,71.72,71.72,71.72,71.72,1
20100831,18:00:37,71.72,71.72,71.72,71.72,1
20100831,18:00:56,71.71,71.71,71.71,71.71,1
20100831,18:00:56,71.71,71.71,71.71,71.71,1
20100831,18:00:56,71.70,71.70,71.70,71.70,1
20100831,18:01:00,71.71,71.71,71.71,71.71,1
20100831,18:01:02,71.72,71.72,71.72,71.72,1
20100831,18:01:11,71.71,71.71,71.71,71.71,1
20100831,18:01:12,71.71,71.71,71.71,71.71,1
20100831,18:01:13,71.71,71.71,71.71,71.71,1
20100831,18:01:16,71.70,71.70,71.70,71.70,1
20100831,18:01:26,71.70,71.70,71.70,71.70,3
20100831,18:01:26,71.70,71.70,71.70,71.70,5
20100831,18:01:28,71.70,71.70,71.70,71.70,1
20100831,18:01:33,71.71,71.71,71.71,71.71,1
20100831,18:01:36,71.70,71.70,71.70,71.70,4
20100831,18:01:45,71.70,71.70,71.70,71.70,1
20100831,18:01:46,71.71,71.71,71.71,71.71,2
20100831,18:01:46,71.71,71.71,71.71,71.71,4
20100831,18:01:49,71.71,71.71,71.71,71.71,1
20100831,18:02:19,71.70,71.70,71.70,71.70,1
20100831,18:02:25,71.70,71.70,71.70,71.70,1
20100831,18:02:25,71.70,71.70,71.70,71.70,1
20100831,18:02:25,71.70,71.70,71.70,71.70,1
20100831,18:02:25,71.70,71.70,71.70,71.70,1
20100831,18:02:26,71.70,71.70,71.70,71.70,1
20100831,18:02:26,71.70,71.70,71.70,71.70,1
20100831,18:02:39,71.74,71.74,71.74,71.74,1
20100831,18:03:10,71.74,71.74,71.74,71.74,1
20100831,18:03:29,71.75,71.75,71.75,71.75,1
20100831,18:03:34,71.75,71.75,71.75,71.75,1
20100831,18:03:34,71.77,71.77,71.77,71.77,1
20100831,18:03:41,71.78,71.78,71.78,71.78,1
20100831,18:03:41,71.78,71.78,71.78,71.78,5
20100831,18:03:41,71.78,71.78,71.78,71.78,5
20100831,18:03:41,71.79,71.79,71.79,71.79,1
20100831,18:03:44,71.78,71.78,71.78,71.78,1
20100831,18:03:50,71.78,71.78,71.78,71.78,1
20100831,18:03:52,71.79,71.79,71.79,71.79,1
20100831,18:04:14,71.79,71.79,71.79,71.79,1
20100831,18:04:14,71.79,71.79,71.79,71.79,1
20100831,18:04:14,71.80,71.80,71.80,71.80,1
20100831,18:04:14,71.80,71.80,71.80,71.80,2

なお、私は実際にデータを秒単位でなく分単位でレンダリングすることができますので、解決に役立つかもしれません。

20100831,18:00,71.70,71.70,71.70,71.70,2
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:00,71.73,71.73,71.73,71.73,2
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.73,71.73,71.73,71.73,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.75,71.75,71.75,71.75,7
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.75,71.75,71.75,71.75,3
20100831,18:00,71.75,71.75,71.75,71.75,7
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.71,71.71,71.71,71.71,1
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:00,71.68,71.68,71.68,71.68,1
20100831,18:00,71.71,71.71,71.71,71.71,1
20100831,18:00,71.71,71.71,71.71,71.71,1
20100831,18:00,71.69,71.69,71.69,71.69,1
20100831,18:00,71.69,71.69,71.69,71.69,1
20100831,18:00,71.68,71.68,71.68,71.68,2
20100831,18:00,71.67,71.67,71.67,71.67,1
20100831,18:00,71.72,71.72,71.72,71.72,1
20100831,18:00,71.72,71.72,71.72,71.72,1
20100831,18:00,71.72,71.72,71.72,71.72,1
20100831,18:00,71.72,71.72,71.72,71.72,1
20100831,18:00,71.71,71.71,71.71,71.71,1
20100831,18:00,71.71,71.71,71.71,71.71,1
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:01,71.72,71.72,71.72,71.72,1
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:01,71.70,71.70,71.70,71.70,1
20100831,18:01,71.70,71.70,71.70,71.70,3
20100831,18:01,71.70,71.70,71.70,71.70,5
20100831,18:01,71.70,71.70,71.70,71.70,1
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:01,71.70,71.70,71.70,71.70,4
20100831,18:01,71.70,71.70,71.70,71.70,1
20100831,18:01,71.71,71.71,71.71,71.71,2
20100831,18:01,71.71,71.71,71.71,71.71,4
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.74,71.74,71.74,71.74,1
20100831,18:03,71.74,71.74,71.74,71.74,1
20100831,18:03,71.75,71.75,71.75,71.75,1
20100831,18:03,71.75,71.75,71.75,71.75,1
20100831,18:03,71.77,71.77,71.77,71.77,1
20100831,18:03,71.78,71.78,71.78,71.78,1
20100831,18:03,71.78,71.78,71.78,71.78,5
20100831,18:03,71.78,71.78,71.78,71.78,5
20100831,18:03,71.79,71.79,71.79,71.79,1
20100831,18:03,71.78,71.78,71.78,71.78,1
20100831,18:03,71.78,71.78,71.78,71.78,1
20100831,18:03,71.79,71.79,71.79,71.79,1
20100831,18:04,71.79,71.79,71.79,71.79,1
20100831,18:04,71.79,71.79,71.79,71.79,1
20100831,18:04,71.80,71.80,71.80,71.80,1
20100831,18:04,71.80,71.80,71.80,71.80,2
20100831,18:04,71.80,71.80,71.80,71.80,1
20100831,18:04,71.80,71.80,71.80,71.80,3
20100831,18:04,71.80,71.80,71.80,71.80,17
20100831,18:04,71.80,71.80,71.80,71.80,1
20100831,18:04,71.80,71.80,71.80,71.80,4
20100831,18:04,71.79,71.79,71.79,71.79,1

 
テスターはFXTファイルを使用し、これらには秒単位もあります。残念ながら、これらのFXTファイルは連続したテストのたびに上書きされるため、ユーザーは独自のデータを置くことができません(MT4の古いバージョンでは可能でした ->https://www.mql5.com/en/forum/103180/page6#321081)。この障害を克服する方法があります...。詳しい情報はこちらをご覧ください ->http://eareview.net/tick-data.
 

このウェブサイトは、ダニに関する標準的な答えのようです。

しかし、私がやろうとしていることは何か違うのです(私のティックデータはそのウェブサイトが想定しているのと同じソースからではないので、異なるルートでそれを行っています - それは異なる開始点を持っているので、提供された変換ファイル/システムのための適切な基板ではありません)。

実際、私の方法では、古いメタトレーダー・バージョンを使用する必要はありません。もし私が正しければ。私もほぼそこにいる - 私はちょうど最後の最終段階で助けを必要としています。

 

あなたはどう思いますか?

1) 正しい道を歩んでいるのだろうか?

私が言うように - 私はちょうどそのウェブサイト(Birt EA)のパスを使用することはできませんので、それは私のスタートポイントに有効ではありません。

2) もしそうなら - 私がいるこの最後の難関を乗り越えるためのアイデアはありますか?

 
あなたがBirtの方法を理解していないのか、私があなたを理解していないのか、どちらかです。


mikey:

[...]

4) しかし、メタトレーダーによると、このデータには同じ日付と時刻のバーが複数あります(メタトレーダーは秒を無視するため、最小のものは分とみなされます)。これを解決するには、すべてのバーが異なる日付とタイムスタンプを持つようにデータを変更することだと思います(メタトレーダーが拾える分解能で)。[...]

この方法では、ヒストリーセンターで何をしようが、テスターは常に最初にバックテスト用のティックを補間するので、何も解決しません。Birtの方法の背後にある主なアイデアは、Testerがテストするために、補間されたティックファイルを実際のティックを含むファイルに置き換えることです。たとえ今回の試みが成功しても、Testerはテストするためにティックを補間することになるので、意味がありません。


こちら→https://www.mql5.com/en/articles/1511Birtのチュートリアルを もう一度読んでみることをお勧めします。あなたの目的は、Testerによって生成されたFXTファイルを置き換えるために、実際のティックを持つ適切なFXTファイルを作成することです。Birt の方法を使用すると、「再計算」を無効にして、Tester にあなたの FXT ファイル(実際のティックを含む)を使用させることができます。

 

全てはここにかかっています。

1) メタトレーダーはティックをバー内だけで補間するのか? (私はそう思います)

2) そして、それはバーの与えられた値によって導かれ、制約されるようにこれを行う:オープン、ハイ、ロー、クローズ?

1]と[2]が真であれば、私の方法では、各バーは1ティックを持っているので、私は私の方法が有効であると思います。つまり、open、high、low、closeはすべて同じ値です。そのため、メタトレーダーがこれらを使ってティックを補間すると、すべての補間されたティックにまったく同じ値/価格が与えられます。ですから、メタトレーダーが新しいティックを補間することは問題なく、何も変わりません。

私は問題を理解し、より良い方法への道を歩んでいるつもりです。しかし、私は訂正されることを望んでいます。もしかしたら、私は甘かったのかもしれません。

 
mikey:

1) メタトレーダーはバー内のティックを補間するのみですか? (私はそう思います)

2) そして、それはバーの与えられた値によってガイドされ、制約されたようにこれを行います:オープン、ハイ、ロー、クローズ?

1]と[2]が真であれば、私の方法では、各バーは1ティックを持っているので、私は私の方法が有効であると思います。つまり、open、high、low、closeはすべて同じ値です。そのため、メタトレーダーがこれらを使ってティックを補間すると、すべての補間されたティックにまったく同じ値/価格が与えられます。ですから、メタトレーダーが新しいティックを補間することは問題なく、何も変わりません。[...]

なるほど・・・。ありがとうございます。そうですね、O=C=H=Lでvolume=1のバーであれば、確かに1ティックだけ形成されるはずです。しかし、それはあなたが平均的なバーのボリュームによってタイムスケールを "ストレッチ "していることを意味します。そして、バーによってボリュームが異なるにもかかわらず、それを「一律に」伸ばしているのです。これは、ほとんどの専門家に深刻な影響を与えるはずです。また、テストレポートの日付や時間が引き伸ばされ、スワップが本来あるべき回数より数え切れないほど多く取られることになります。これでは、信頼性が極めて低く、ほとんどのエキスパートにとって「使えない」のではないでしょうか。


とにかく、「どうすればいいのか」という質問にお答えします。単純に、各バーが1ティックを表すM1 HSTファイルを作成します。これは、スクリプトで行うことができます。HSTファイルの構造は、マニュアル(Terminal Help)に記載されていますし、csv2fxtスクリプト のコードを再利用することができます。


p.s. テスターでどのように補間が行われるかに興味がある場合は、MT5テスターでどのように行われるかについての良い記事があります...MT4 Tester ->https://www.mql5.com/en/articles/75 で行われていることと(同じでないにしても)非常に似ているはずです。

 

前回の説明の続きです。

各ティックは、独自のM1バー(分単位の時刻を持つ固有の日付と時刻スタンプを持つバー)が与えられます。

つまり、時間がずれるということです。あるティックのバーが、そのティックが実際に起こった時間と非常に異なる時間を持つかもしれません。

しかし、これは私にとっては問題ではありません。私は時間を正確に知る必要はありません。私はバックテストに 入れたデータ(この日からこの日まで)を知っていますし、この方法でこの期間の終わりに利益が出たか損失が出たかを最後に知ることができます。(出力グラフの正確な日付や時刻は私には関係ありません)。

繰り返しますが、私は訂正されることを我慢します。これはすべての音や狂気ですか?なぜなら、もし私がこれをきちんと伝え、中継することができ、それが健全であるならば - 私はそれが物事を行うより良い方法かもしれないと思うからです。

 

mikey:

[中略)しかし、これは私にとって問題ではありません。私は時間を正確に知る必要はありません。私はバックテストに入れたデータ(この日からその日まで)を知っているし、私はこのメソッドでこの期間の終わりに利益または損失が作られた場合、最終的に知っている必要があります。(出力グラフの正確な日付/時刻は私には関係ありません) [...]。

OK。しかし、これが専門家に影響を与えないということに絶対の確信があるのですか?例えば、タイムフレームを考慮したエキスパートや、タイムフレームに基づいたインディが、想定通りに動作しなくなります。また、スワップもゼロにリセットする必要があります。なぜなら、確実に正しく計算されないからです。他にも副作用があるかもしれませんね。私にはとても危険なことに聞こえます。
 
ところで、MT4での計算方法(ボリューム=バーで受け取ったティックの数)とは無関係なので、ボリュームデータを廃棄する必要がありそうです。
 

そうです。私が最後に送信したときに、ちょうどあなたの返事が来ました。

RE: Volume... - もし私のEAがボリュームを "読まない "なら、私はこれで安全ですか?その心配はないのでしょうか?ボリュームについては考えていませんでした - しかし、私が言うように、私のEAは何のためにそれを "読み取り "ません。それで、はっきりさせたいのですが、私はボリュームを無視してもいいのでしょうか?それとも、すべてのバーでボリュームを1に設定するべきでしょうか?

理由: