同じ専門家でも全く違う結果に

 

メタトレーダーのバックテスターから得られる結果にとても、とても戸惑っています。どなたか同じような経験をお持ちの方で、私の原因をご存知の方がいらっしゃればと思います。

私が開発したエキスパートは、バックテストで、最適化およびウォークフォワード最適化の実行において、幅広いバリエーションで素晴らしい結果を出しました。ところが突然、私が意識的に大きな変更を加えることなく、結果が平凡またはマージナルになったのです。そして今日また、突然結果が素晴らしくなったのです。

全く同じエキスパート、全く同じ日付、全く同じ設定ファイルのバックテストレポートがありますが、全く違う結果です。データが同じであることを確認するために最善を尽くしました(昨日ダウンロードした履歴データから再構築しましたが、それでも今日とその時では全く異なる結果が得られました)。

唯一違うと感じたのは、スプレッドです。私が知る限り、MT4はバックテストの全行程におけるスプレッドが、現在のスプレッドと同じであったと仮定しています。このシステムのかなり奇妙な「機能」ですが、私の観測の説明ではありません。今日は狭いスプレッドで結果は平凡でしたが、昨日は少し広いスプレッドで信じられないほど良い結果でした。

これらの経験から、私はソフトウェアから得られる情報を信頼できるかどうか確信が持てず、今後(一方的に)誤解されないようにするための説明を切実に必要としています。

以下は、同じエキスパート、同じ期間(2011/1/1~2011/7/26)、同じ設定でのバックテストでの平凡な結果と信じられないほど良い結果のグラフです。取引は通常、数時間またはそれ以上開いており、テイクプロフィットやストップロスを使用していません(すべてのエントリーとイグジットは指標の状態のみに基づいています)。2つの実行における取引数は、211と173です。2つ目のグラフでは損失が発生していますが、利益率は非常に高いです。


 
Elroch:


全く同じエキスパート、全く同じ日付、全く同じ設定ファイルでのバックテストレポートがありますが、全く違う結果になっています。データが同じであることを確認するために最善を尽くしました(昨日ダウンロードした履歴データから再構築しましたが、今日とその時では結果が全く違っていました)。


データを再度ダウンロードし、ターミナルを切断し(私は無効な口座番号で ログオンすることでこれを行います)、履歴とターミナルに保存されているデータを削除し、データをインポートします(M1だと思いますが? 期間コンバータを使って他の期間を作り、それらをインポートします ... 実行したい期間のデータがあることを確認します ... EAを実行してください。
 
ありがとうございます。しかし、10年分のダウンロードした1分足データから、ご指摘の方法でデータを構築し、何度もソフトを再起動し、正確なEAと設定を保存しても、後から実行すると全く違う結果になったことが何度もあります。まだ戸惑っています。
 

Elroch:

私が開発したエキスパートは、バックテストや、最適化およびウォークフォワード最適化の実行におけるさまざまなバリエーションにおいて、素晴らしい結果を達成しました。

しかし、突然、私が意識的に大きな変更を加えることなく、結果が平凡またはマージナルになったのです。

そして今日また、突然結果が素晴らしくなったのです。

テスターは現在のスプレッドを使用しています。あなたのEAは、その変更に非常に敏感です。
 
WHRoeder:
テスターはCURRENTスプレッドを使用しています。あなたのEAは、その変化に強く反応します。

私はそれを発見したと述べましたが、今日、スプレッド1.2ピップで実行した際に平凡な結果を得たので、これは説明になっていません。
 

もし、あなたのエントリーとエグジットが本当にインジケータの値だけに基づいていて、適度なロットサイズを取引し、ピップ/トレードで良い平均値を稼いでいるのであれば、残された選択肢は多くありません。

a) 履歴ファイルを破損する。

b) ランダム性のようなものが含まれている

c) グローバル変数に依存している (2つのテストの間に変更された)

d) ブローカーの設定が変更された可能性がある、(可能性は低い)

なぜすべてのティックモードで テストを実行しないのですか?そうすれば、データの品質がわかります。

 

また、EAで使用されているインジケータは、ライブ取引時と同様に最新のバーの各ティックに値を作成するのでしょうか?

 

zzuegさん、興味深いご指摘をありがとうございます。

(a) 壊れた履歴ファイルで、同じEAを使ったバックテストの一連の結果を説明することは不可能に思えます。つまり、先週の金曜日からの期間、平凡な結果、素晴らしい結果、平凡な結果、同様の素晴らしい結果、その間に私はメタトレーダーを新たにインストールし、ダウンロードした高品質の1分データからすべてのデータを再構築するなどしています。

(b) ランダムな効果(悪いデータも含む)による説明の問題は、なぜそれが一貫して非常に良い取引をするのかを理解するのが非常に困難であるということです。

(c) 数日間、私は自分のコードに偶然の変化があったのかもしれないと考えていました。しかし、今日、信じられないような良い結果が出たので、すぐにエキスパート(ソースとex4)と設定ファイルのコピーを保存しました。しかし、全く同じエキスパートと設定で、後で実行したところ、平凡な結果になりました。

(d)ええ、スプレッド以上に関連するブローカーからのものがあるかどうかはわかりません。もちろん、これらはすべてライブ取引ではなくバックテストであり、データはほとんどダウンロードした10年分の1分足データから構築されました。

(e) エキスパートがバーのオープンでポジションをエントリーおよびエグジットし、ストップやプロフィットターゲットをまったく使用しない場合(調査中のバージョンでは)、結果に影響する唯一の値は、5分以上のチャートからのバーのオープン、ハイ、ロー、クローズだと理解しています(実際にはクローズさえ関係ありません:同じインディケータのいくつかのバリエーションが使用されていて、これらはたまたまデータポイントとして(H+L)/2を使っており、エントリーとエグジットがバーのオープンで行われるのでオープンデータとスプレッドも問題です。取引が開始されるか終了するかは、現在のバーではなく、以前のバーのインジケータの値に依存します。

...が、念のため、「すべてのティック」で実行してみました。結果は前回とほぼ同じで、最後のトレードが最後の5分バーではなく最後の1分バーでクローズされたことでわずかな違いが説明されました。


SDC、生成される全てのティックが 同じかどうかは断言できませんが、上記(e)のzzuegさんへの回答にある点を念頭に置いてください。
 

ティックモード ごとに結果が変わるという意味ではなく、報告されたミスマッチチャートエラーの量に興味があるのです。

履歴のギャップは、指標に基づく戦略でそのような違いを説明することはできないので、非常にありそうもありません。

私の端末は常にオフラインなので、そのようなことはもう経験したことはありませんが、データが破損している場合のみ、同様の問題が発生します。

グローバル変数については、GlobalVariableGet()のようなものがコードに含まれていますか?

最後に、ログに間違いがないか聞いてみました。

SDC、そうです、擬似ティックは各実行で同じように生成されます。私の経験では、90%の精度ですが、それでも常に同じです。

 

ご指摘ありがとうございました。メタトレーダーの2つのインストールで、2つの全く異なる結果(EAと設定をそのままコピーして、両方でstrategy testerを 実行しても)が出るという興味深い状況になっています。これはデータを指しているのでしょうが、議論されている理由により、まだ説明することが非常に困難です。どのような違いがあるのか、何か良い方法はないかと考えています。

今、別インストールのメタトレーダーで2回実行したログを確認しましたが、どちらもエラーは出ていません。

私のコードにはGlobalVariableGet()のようなものはありません。EAは4つの異なる時間枠で1つのカスタムインジケータの5つのコピーを使用し、1つは他のものと異なるパラメータを持っています。

 

決定的な証拠となるものを見つけたのですが、その意味がよくわかりません。

平凡な結果を出していたインストールで、リアルマネーブローカーA/Cへの接続をログアウトし、同じブローカーの練習用A/Cにログインし直しました。この後、Strategy Testerは もう一つのメタトレーダー(同じ練習用ブローカーで動作)と同様の素晴らしい結果を得ました。ちなみにブローカーはOandaです。

メタトレーダーのクライアントが異なるA/C間で切り替えたときに履歴データをどのように扱うかはわかりませんが、すべての古いデータがブローカーからではなく、同じダウンロードした1分データから来ているという事実は、ここで何が起こっているかを理解することを非常に難しくします(年初のトレードは、練習用A/Cへの接続でバックテストを実行すると、実際のA/Cに接続したときよりもはるかに優れています)。

理由: