購入前に売買ロボットを検証する方法

MetaQuotes | 18 11月, 2015

MQL5 マーケットで売買ロボットを買うことは似たような選択肢をしのぐ明らかなメリットがあります。提供される自動化されたシステムを MetaTrader 5 ターミナルで直接徹底的に検証することができるのです。購入前にシステムを完全に把握するため、内蔵 ストラテジーテスタで Expert Advisor を不都合なモードで注意して実行 することができる/する必要があるのです。

憶えておくこと: リスクは売買ロボット購入時に支払う金額だけではなく、実アカウントでトレードを行う売買ロボットの使用結果生じる可能性のある潜在的損失でもあるのです。

MetaTrader 5 ターミナルで直接ダウンロードする無料の3移動平均 Expert Advisor を例にとりそれを詳しく見ていきます。それは3移動平均を基にした従来型トレードの実装です

MetaTrader 5 ターミナルで MQL5 マーケットから直接の Expert Advisor ダウンロード


検証結果に基づくExpert Advisor 評価

売買ロボットのパフォーマンスを 100% 保証する一般的方法はありませんが、MetaTrader 5 ターミナルのストラテジーテスタであらゆる特定のトレーディングシステムの主要パラメータを確認することができるシンプルは方法はあります。以下は行うことのできる主要な方法です。

また、以下のような潜在的に疑わしい要因への注意も必要です

上記がすべて簡単なタスクであっても、初心者もいくらかのトレード経験がある多くのトレーダーもこれらの細かい点に気づいていない、またはつねに十分な注意を払っていません。もう一度 MQL5 マーケットからダウンロードされる売買ロボットはどれも「ナビゲータ」ウィンドウで直接検証用に設定することができることに留意します。

ナビゲータメニューを用いた Expert Advisor の起動

コンテキストメニューで『テスト』を押すと、選択した Expert Advisor を持つストラテジーテスタのパネルが自動で表示されます。ダウンロードした Expert Advisor を検証するのに必要なものはすべて入手しまし、上で指摘した評価方法を詳しく検討する準備が整いました。


ランダムディレイモードでのストレステスト

ストラテジーテスタはもともとシステムのトレードルールを検証するためにできています。これはストラテジーテスタが全てのプロセスに対し理想的な環境をエミュレートするということです。

すべては最短時間でトレーディング戦略の検証と最適化を行うことを狙いとしています。ただし現実の環境で売買ロボットの処理を確認することは理想や即時性とはかけ離れているため、ストラテジーテスタはトレード注文の送信と実行の間のランダムディレイをシミュレートする追加の検証モードによって改善されてきました。

ランダムディレイモードの設定

この検証モードは正確に以下を検出します。

Expert Advisor を標準、ランダムディレイ、2とおりのモードで検証を1回ずつ実行したあとの大きく異なるトレード結果取得から考えるでしょう。まずストラテジーテスタのログ を見ます。そこにある数多くのトレードエラーはリストからそのような Expert Advisor を除外するのに十分な理由となるでしょう。われわれの場合、ランダムディレイモードにおけるストレステスト中にその種のエラーは検出されませんでした。それは Expert Advisor は問題なく検証の前半を通過したことを示しています。

ここで2とおりのモードで単独テストを用いて取得したトレード結果の間に何か違いがあるかどうか確認します。トレード数の大幅減少とランダムディレイモードで取得した収益から戦略はトレード注文の送信と実行の質に大きく左右されること、特定の理想的な条件下でのみ収益を得ることができることを示しています。開発者はよくあることですが意図してそれをおこなったわけではないでしょう。しかしそのような「欠陥」はトレーディングアカウントにとっておおきな災いに転じる可能性があります。

異なるトレード注文実行モードでの検証結果の比較

われわれの例では異なるトレード注文実行への切り替えはトレード数やトランザクションに影響は与えませんでした。検証結果はほんの少し異なるだけで、それはクオートし直しによるトランザクションに存在する小さな価格変更によって適切に説明できます。

結論:3種類の移動平均 Expert Advisor は検証を通過しました。ランダムディレイモードでのストレステストトレード結果に実質的効果はもたらしませんでした。


異なるトレード環境での検証

MQL5 マーケットの記述で指定された条件下で売買ロボットの検証を実行します。そして別のブローカーのアカウントに接続しもう一度検証を実行します。先のストレステストにいくらか似ていて、価格とトレード条件(スプレッド、許容のストップロス/テイクプロフィットレベル等)の小さな変更がどのようにトレード結果に影響するか確認することができます。

たとえばブローカー AのアカウントにおいてEURUSD に対する Expert Advisor の検証結果を取得しました。EURUSDでの同じ検証を今後はブローカー Bのアカウントで実行します。結果がかなり異なると、それはそのような売買ロボットの必要性を再考するのに十分な理由です。


異なるシンボル/タイムフレーム

売買ロボットの大半は特定のシンボルについてトレードするように開発されており、その中には特定のタイムフレームについて使用する必要があるものさえあります。各インスツルメントは独自のふるまいをするのですからそれはひじょうに合理的に思えます。そのためシンボルとタイムフレームは概してつねに MQL5 マーケットで提供される売買ロボットの説明書きに指定されています。

Expert Advisor のデモバージョンをダウンロードし異なるシンボル/期間で起動します。まず不適切な軌道条件で使用されるために Expert Advisor が重大なエラーでクラッシュしたりトレードエラーメッセージがログに書き込まれないよことを確認する必要があります。 その次に収益性のあるトレーディング戦略が設定における上記変更によって極端な損失を発生することがないことを確認します。これはカーブフィッティングが行われると発生する可能性があります。

Expert Advisor に対してその種のテストをもっとも簡単に行う方法の一つは銘柄リストで選択されるすべてのシンボルに対して最適化を行うことです。H1 というひじょうに長いタイムフレームで『ティック生成毎』にそのモードにおける Expert Advisor の最適化を行い、2番目の疑問に対してかなり迅速に答えを得ます。

 銘柄リストで選択されるすべてのシンボルに対する最適化

そのような最適化の結果はその戦略が存在意義があることを示します。それほど悪い結果を出すことなく各シンボルについて統計的に十分なトレード数を示しているからです。1つの戦略を 銘柄リスト全13 シンボルに対してデフォルトで同じパラメータ設定で検証したことを断っておきます。

銘柄リストで選択されるすべてのシンボルに対する最適化結果

確かにExpert Advisor のどれもが任意のシンボルやタイムフレームで同じようにうまく動作するとは期待できません。でもこの方法でストラテジーテスタで確認する価値があります。それにより潜在的エラーコードが現れるだけでなく新しい考えのヒントをくれます。

結論:3移動平均 Expert Advisor の変動は異なるシンボル/タイムフレームで検証したときは正常でした。検証中明らかなコードエラーは検出されませんでした。


不良な履歴データのバックテスト

GBPUSDに対して処理するときに最良の結果を出すことが判りました。ただこれが安定したパターンではなくこの動向は都合のよいものとなった単なるまぐれで選択された 2012.01.01~2012.09.28 の検証間隔によるものであればどうでしょうか?この疑問を検討するために、同じ2011年のパラメータで間隔を2011.01.01~2011.12.31 として Expert Advisor を検証します。検証を実行し結果を見ます。

不良な履歴データのバックテスト

Expert Advisor はもう収益性のあるものではなく即座にワオ!というほどの成功ではなくなりました。その上 2011年に被った損失は 2012.01.01~2012.09.28でストラテジーテスタで示された収益を大きく超えています。ただ GBPUSDでのトレードでも潜在的損失にを認識しています。

結論:3移動平均 Expert Advisor はマーケット行動の変化に対し確実に自動で適切に対応できるようになるにはさらなる発展が必要です。または最適化によってそれぞれの間隔に対して正しいパラメータを見つける必要があります。


履歴の拡張した期間にわたるバックテスト

記述をする際、売買ロボットの開発者は最高の状態でプロダクツを示そうとします。それゆえ特定の間隔に対する最適パラメータでレポートや検証チャートを提供します。売買ロボットを公表した日からそれに対する関心を得るまでかなりの時間がかかることが多いため、いわゆるフォワードテストを行うことができます。

フォワードテストは最適なパラメータを選択するときには考慮に入れられていない履歴期間に対する検証です。この Expert Advisor を GBPUSD について2012年9月28日以降の履歴データも含めやや長い検証間隔での分析を続けていきたいと思います。終了日は2012年11月26日に設定しました。約2か月余分に追加することになります。よって2012.01.01~ 2012.11.26の検証実行の次に新しい検証チャートを取得します。

履歴の拡張した期間でのバックテスト

われわれの場合、追加の短期間隔(フォワード)について3移動平均 Expert Advisorによって示される 結果は前回の10か月についての結果よりも良好なものです。ただしこれはひじょうに稀なことです。

結論:GBPUSD について拡張した履歴期間での3移動平均 Expert Advisor 検証はトレードパラメータが弱体化していることを示しませんでした。


フォワードテスト

フォワードテストはマーケット行動の変動におけるトレーディングシステムの安定性を評価するために活用されます。ストラテジーテスタにおけるパラメータ最適化により売買ロボットが履歴データで最良状態になるパラメータを取得することができます。しかしこれは取得したパラメータがすぐ将来のトレードに対して使われても同じように最高にフィットすることを保証するものではありません。

自動トレーディングシステムを開発するトレーダーが最適化とカーブフィッティングのコンセプトを混同するのはよくあることです。公正な最適化とカーブフィッティングの境界線はひじょうに細く見つけるのが難しいものです。これはフォワードテストが客観的に取得パラメータを評価でき、有用であると証明される部分です。

MetaTrader 5 ストラテジーテスタの最適化において結果として得た最適パラメータを選択し必要な限度を設定することができます。われわれの売買ロボットを以下の設定でフォワードテストします。

フォワード最適化モードの設定

フォワードは指定の間隔 2012.01.01~ 2012.11.26 が4分割されることを意味する1/4に設定します。まず最適なパラメータを検索するために履歴の3/4 が使用され、ベストな25% のパス(Expert Advisorのパラメータセット)が残り1/4 の履歴データにおいてフォワードテストされます。

最適化するパラメータを選択します。トレードロジックに影響すると思われるパラメータを選びます。よって資金管理をするパラメータは最適化しません。

最適化するパラメータ

上記のステップの組合せは開始値と停止値同様約500万パスの結果となりました。既定の状況で最適化に遺伝的アルゴリズムとMQL5 クラウドネットワーク を使用するのは合理的です。

そこで合計21分とクラウドエージェントを用いた4,000パル以上に対し0.26クレジットかかったフォワードパスを含む最適化の結果を見ていきます。コスト計算方法の例は記事 MQL5 Cloud Network: Are You Still Calculating?にあります。

フォワードテスト結果グラフ

一見何かがおかしいようです。結果を確認し最初に最適化された3個パラメータがパス全部を通り手同じであることがわかります。そして最後の2個のパラメータ、Inp_Signal_ThreeEMA_StopLoss と Inp_Signal_ThreeEMA_TakeProfit だけが異なる値を持っています。

フォワードパス結果表

上記を考察すると2とおりの仮定が可能です。

同じ設定と入力パラメータで再度最適化を行って両方の仮定を確認します。今回はフォワードテスト結果グラフはやや違って見えます。

フォワード期間での別の再最適化グラフ

最適化の結果、3つのメインストリームを確認することができます。これは最後の2個の最適化されたパラメータはまだ既定の売買ロボットに対して偶然現れることを意味します。

結論: GBPUSD に対する3移動平均 Expert Advisor の最適化はトレードロジックは7個のパラメータ中3個だけに依存することを示しました。

最後に、最適化から不要なパラメータを除外してみます。今あるのは 1650 パスだけです。

最適化に対し削減されたパラメータセット

これで完全なパラメータ検索は遺伝的最適化よりもっと意味があります。MQL5 クラウドネットワークはこの場合われわれにより多くのエージェントを提供してくれ、結果処理を完了するのに必要な時間はかなり削減されます。

完全パラメータ検索時の MQL5 食らうとネットワーク使用

タスクは2,000のクラウドネットワークを使って7分で完了し、フォワードテストグラフは良好に見えます。

最適化チャート

フォワード期間のパスはほとんど収益性があることが判明し、初期 $10.000 を上回るポイント数は損失発生ゾーンよりもずっと大きいものです。いくぶん希望があるようですが、結果のパラメータセットが将来も収益性があると証明しいるわけではありません。


トレーディングシステム内のパラメータ数

かならずしもすべての戦略パラメータが売買ロボットをセットアップするのに同等に有意でトレード結果に影響を与えるわけではないことを知るチャンスがありました。われわれの場合、Inp_Signal_ThreeEMA_StopLoss および Inp_Signal_ThreeEMA_TakeProfit の値は実質的には Expert Advisorのパフォーマンスになんの影響も与えません。しかし数多くのパラメータ設定を持つ売買ロボットに出会うのはかなり一般的なことです。

多数のパラメータが最適化中に出現する可能性の高い特定の履歴期間に対するパフォーマンスが当てはまるように売買ロボットを非常に正確に設定することを可能にするのです。

カーブフィッティングが意味するところは、Expert Advisor はおそらく検証データにあったため最適化に使用される指定の間隔を超えるデータについての収益性レベルが同じであることを示さない、ということです。なお悪いことに逆の非常に良好な結果を生むのです。すなわち損失に導くということです。

トレーディングシステムのパラメータが少ないほど特定されたパターンが将来消失する可能性は低いと信じられています。そして逆にシステム内パラメータが多ければ、マーケットが微調整された Expert Advisorに合った特性を維持する可能性は低いのです。上記の証明として、以下でさらに述べる記事Optimization VS Reality: Evidence from ATC 2011に提供されているトレード分析結果を理解されることを強くお薦めします。

バランスとパラメータ数の相関関係

チャートは自動売買チャンピオンシップ 2011の出場者のトレード結果を示しています。縦軸はチャンピオンシップ終了時のアカウント残高を、横軸は EAの外部パラメータ数を表しています。 Expert Advisors はひし形で表されています。チャンピオンシップのフォワード期間でのトレード時、多くのパラメータを持つ Expert Advisors が資金を失ったことを明らかに確認できます。よくてとんとんです。

販売用売買ロボットに外部パラメータがないことがデザイン・インのトレードルールの一般性について語るものでもなく、かっこいいとも思われません。Expert Advisor の開発者はなんらかの理由でただ売買ロボットに外部パラメータを付けたのです。


ひじょうに高いプロフィットファクター

ほとんどのトレーダーはトレードを失くことを好まずそれをトレーディングシステムの動作不良の兆しと受け取ります。事実金融マーケットのトレード性質により損失は避けることのできないものです。ポジションをオープンするトレードはどれも最終的に勝利か敗北となります。トレードの損失は避けがたく当然起こる支払いの一形態、そしてあらゆるビジネス同様必然の支出項目とみなされます。

自動売買システムの開発者の多くは極端に走ります。損失トレード数と損失合計を最低に減らそうとするためです。これを達成しストラテジーテスタで取得される結果を改善するには、トレード損失を避けることのできる余分なフィルターを追加する必要があります。そうするとプロフィットファクターは改善するのです。余分なフィルターは独自のパラメータと設定を持ち、入力パラメータの合計数を追加します。

プロフィットファクターは損失合計で割った合計収益で求められます。収益性のあるシステムのプロフィットファクターはつねに1以上となっています。ただし、ストラテジーテスタでやっきになってトレーディングシステムを最適化しすぎるとこの数値はずっと大きくなります。記事 Optimization VS Reality: Evidence from ATC 2011にある別のチャートを見てみます。

最適化結果としてのひじょうに高いプロフィットファクター

ほとんどすべての履歴データの検証中非常に高いプロフィットファクターを示した売買ロボットは自動売買チャンピオンシップ 2011のフォワード期間で検証したときのバックテスト結果にはほど遠いもので実質的にすべてを失いました。ストラテジーテスタに表示されたひじょうに高いプロフィットファクターは売買ロボットの最適化に使用された特定期間に対して戦略をフィットしたためであると示しています。


履歴データにおける巨額の収益

もう驚くべき事実として可能性があるのは売買ロボットの説明に入っている巨額の収益です。添付されているストラテジーテスタレポートがひじょうに高い残高を表示しているとそれはカーブフィッティングに関連している可能性があります。そのような『貨幣印刷機』の開発者はそのシステムが最適化しすぎで外部パラメータが多すぎることに気づいてさえいません。上述レポートOptimization VS Reality: Evidence from ATC 2011の別のチャートを利用してこの主張を裏付けます。

履歴データにおける巨額の収益

そのような『奇跡の聖杯』の購入者は通常経験がなく簡単に履歴データの巨額の収益に目をくらまされます。そのようは場合、そのような売買ロボットが得る収益の妄想は純粋で相互的です。


資金管理の層さ

首尾よくいくトランザクションで最小の損失と最大のリターンを伴うストラテジーテスタの不良履歴データを調査することのできる特殊なトレード操作のルール作成は売買ロボットの正常でない開発にとってもっとも複雑で稀な方法です。それは資金管理と呼ばれるものからほど遠いものです。

そのようなフィッティングは売買ロボットの説明で開発者が述べる結果を取得するために使用する履歴期間の外側にあるデータ検証によってもっともよく検出できる可能性があります。フィッティングが広範囲であるほご、売買ロボットが検証に落ちる可能性は高まります。


他人を信用しないことです。ご自身でさえも

残念ながら売買ロボットはあらゆる複雑なプログラム同様、オンライントレード以外では検出できない不注意によるエラーがある可能性があります。売買ロボットの開発者はだれもプログラムにエラーがなく、標準的でない状況をすべて正しく処理すると保証できないものです。問題なく検証を行った Expert Advisor でさえトレードエラーを起こすこともクリティカルエラーによってクラッシュする可能性もあります。それは開発者が予見することのできなかった予想外の条件に置かれた場合です。この場合唯一の暗黙の保証は売買ロボット開発者の経験と評判です。

そしてもちろん「シグナル」サービスで十分な期間にわたりポジティブな結果を示してきた Expert Advisor はそうでなかったものより信頼性が高いものです。どんな場合でも将来の収益を計算して打ちのめされないでください。そしてまだ有効な2つのルールを思い出してください。

  1. 誰も信用しない
  2. そして過去のトレードの成功は将来の利益を保証しない

「マーケット」に特化した以下の記事の一読もお薦めします。