English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
preview
エキスパートアドバイザーが失敗する理由の分析

エキスパートアドバイザーが失敗する理由の分析

MetaTrader 5エキスパートアドバイザー | 18 5月 2022, 17:04
770 0
Richard Poster
Richard Poster

はじめに

エキスパートアドバイザー(EA)のパフォーマンスは、数か月から数年にわたって良好である可能性がありますが、パフォーマンスが低下する期間は常にあります。EAが10年などの長期間にわたって安定した利益を示すことはめったにありません。EAのパフォーマンスが過去に低かった場合、将来的に常に良好なパフォーマンスを期待するにはどうすればよいでしょうか。

この分析では、2つの質問が発生します。EAのパフォーマンスに強く影響する時系列データにどのような変化が発生するか、そしてEAのパフォーマンスが低下する時期と、パフォーマンスが向上する時期を予測できる技術的な指標はあるかということです。そのような指標は最も価値があります。


移動平均クロスオーバートリガー

これらの問題を研究するために、16年間の15分の通貨データが、テストベッドストラテジーである移動平均クロスオーバーとともに使用されます。移動平均クロスオーバー(MAC)トリガーの場合、高速の単純移動平均(SMA)が低速のSMAを下から上に横切るときに買いシグナルが生成され、高速のSMAが低速のSMAを上から下に横切るときに売りシグナルが生成されます。MACストラテジーは、研究のための優れたテストベッドを提供するはずです。MACストラテジーの主要な入力パラメータは、高速および低速のSMA期間です。これらの研究では、通常、高速SMA期間と低速SMA期間はそれぞれ1〜4と10〜150であり、両方ともテスト期間中に固定されていると想定されます。

図1は、2006年1月から2021年12月までのEURUSD通貨ペアのSMAクロスオーバートリガーの利益戻しの振る舞いを示しています。最適化されたSMAの高速期間2および低速期間80の場合、EAには、一部の間隔では正のリターンがあり、他の間隔では負のリターンがあります。2008年1月〜2013年6月の期間は、着実な利益成長を遂げています。図2は、最適化されたSMA期間1と80の同間隔での、GBPUSD通貨ペアのSMAクロスオーバートリガーの利益戻しの動作を示しています。GBPUSDチャートで示される正の利益パフォーマンスは短期間のみです。

Fig_1_EURUSD_SMACross

 図1EURUSD SMAクロストリガー利益(0.1ロット)


     

Fig_2_GBPUSD_SMACross

  図2GBPUSD SMAクロストリガー利益(0.1ロット)

図1と図2に示す時間的挙動を考えると、一般的なテクニカル指標の時間的挙動を調べて、テクニカル指標の時間的挙動と移動平均クロスオーバー利益戻しの時間挙動に何らかの関係があるかどうかを判断できます。 


従来のテクニカル指標の振る舞い

いくつかの標準的なテクニカル指標を調べて、正と負のリターンの時間領域でそれらの動作が異なるかどうかを確認できます。図3は、EURUSDの16年間の月間ATR指標を示しています。ATR指標は、通貨ペアのボラティリティの指標を提供します。それは明確な時間依存の挙動を示しますが、図1の利益の時間的挙動に対応するものは何もありません。興味深いことに、図3は、2008年後半と2020年初頭の経済危機をめぐる極端なボラティリティを示しています。また、トリガーロジックに価格変更の絶対しきい値を使用することは賢明ではなく、平滑化されたATR値を検討する必要があることも示唆しています。もう1つの一般的なテクニカル指標は、上下のボリンジャーバンドの広がりです。この指標は、ボラティリティとトレンドの強さの両方の影響を受けるはずです。驚いたことに、図4に示すように、その長期的な月間行動はATR指標とほぼ同じです。ATR指標と同様に、図1のEURUSDデータの正および負のリターン時間領域に対応する動作はありません。GBPUSDデータでも同様の結果が見られます。長期的なボラティリティは、図1および2に見られる時間的挙動を考慮していません。


Fig_3_ATRvsMth

図32EURUSD ATR、月平均

FIg_4_BBSpreadVsMth

図4EURUSDボリンジャーバンドスプレッド、月平均


指標としての自己相関関数

ATRおよびボリンジャーバンド指標とは異なり、自己相関関数(ACF)はボラティリティに依存しません。ACFは、時系列データのパターンを見つけるのに役立つツールです。ACFは、時系列の要素と、ラグタイムだけ遅延したこの時系列の要素との相関を測定します。データにトレンドが存在する場合、ACFは、ラグが小さい場合、正の値になります。この分析では、時系列のY i要素 は、バーiの(終値-始値)として定義されます。

N個の要素 Yi、i = 1 ... Nの時系列の場合、ACFは次のように定義されます。

ACF_EquationV2

一連の価格データの自己相関関数は、一連のバー間の価格変化データの自己相関とは大きく異なります。たとえば、一連の数値{1,2,3..14}の場合、ACFは0.786です。その配列の連続する要素間の一連の違いについては、ACFはゼロに近くなります(ゼロによる除算を避けるために値に少しノイズがあると仮定します)。

ACFの計算は、次のコードスニペットで実装されています。

 double GetAtCorrVal(double &ClsOpn[],int CorrPer, int LagPer,int joff ) {
   double corr;
   double AIn[],BIn[];
   double XMean,XNum,XDen;
   int jj;
   ArrayResize(AIn,CorrPer);
   ArrayResize(BIn,CorrPer);
   XMean = 0.;
   XNum = 0.;
   XDen = 0.;
   corr = 0.;
   if(CorrPer<2)
    {
     Print("No AutoCorr Processing Allowed ");
     return(corr);
    }
   // mean
   for(jj=0;jj<CorrPer;jj++)
    {
     XMean +=ClsOpn[jj+joff];
    }
   XMean = XMean/CorrPer;
  // variances
   for(jj=0;jj<CorrPer;jj++)
    {
     if(jj<(CorrPer-LagPer))
       XNum  += (ClsOpn[jj+joff]-XMean)*(ClsOpn[jj+LagPer+joff]-XMean);
     XDen += (ClsOpn[jj+joff]-XMean)*(ClsOpn[jj+joff]-XMean);
    }  
    if(XDen==0.)
     {
      corr = 0.;
     }
    else
    corr = XNum/XDen;
   return(corr);
  }
//----------------------------------------------------------------

  

図5は、平滑化期間が6か月のEURUSDデータの16年間のACFの月平均を示しています。図1は、2008年から2012年末までの収益性の高いパフォーマンスを示していますが、図5も、この時間領域でわずかに高いACF値を示しており、MACストラテジーの収益性パフォーマンスとACFの値の間に考えられる関係を示しています。


Fig_5_EURUSD_ACFvsMth

図5EURUSD自己相関関数の月平均


図6に示されているGBUUSDデータの場合、利益パフォーマンス(図2に示されている)とACF値の間に弱い関連性が見られます。

Fig_6_GBPUSD_ACFvsMth


 図6GBPUSD自己相関関数の月平均

自己相関関数は指標(AutoCorr.mq5)として使用できますが、図7からわかるように、これは適切なトレンド識別指標ではありません。


Fig_7_EURUSD_ACFIndicator

図7ACF指標、Lag=1

ACF時間的挙動とSMAクロスオーバーストラテジー

より多くの情報は、SMAクロスオーバーポイントの直前(トリガーACF)と、取引がまだ開いている間のクロスオーバーポイントの直後(取引ACF)のACFの時間的挙動を調べることで見つけることができます。取引ACFとトリガーACFの2種類のACFには、異なるプロパティがあります。図8と図9は、EURUSDとGBPUSDのデータの取引ACFを示しています。ストラテジーテスターを使用すると、ACF値を時間の関数として利益のある取引と損失のある取引に別々にプロットできます。両方のチャートは、利益のある取引と損失のある取引の間のACFの時間で変化する分離を示しています。図1の収益性の高い領域2008年1月~2013年6月(EURUSD)は、ACFが分離も大きい図8の領域とほぼ一致しています。2018年1月以降、利益取引と損失取引のACF値の差はほとんどありません。図1では、これは利益戻しのフラットな領域に対応しています。


Fig_8_EURUSD_TradeACF

  図8SMAクロストリガーの取引自己相関(EURUSD)


Fig_9_GBPUSD_TradeACF

図9SMAクロストリガーの取引自己相関(GBPUSD)

図10および11は、EURUSDおよびGBPUSDデータのトリガーACFを示しています。これらの2つのチャートの目的は、トリガーACF値をエキスパートアドバイザーのフィルタとして使用して、SMAクロスオーバーストラテジーの収益性を向上させることができるかどうかを調査することです。取引ACFデータと比較して、トリガーACFデータは、正と負の利益戻しの分離が少ないことを示しています。これにより、トリガーフィルタとしての値が弱まります。ただし、ACF値は時間的にほぼフラットであり、ACFの固定しきい値をトリガーフィルタとして使用できることを示しています。利益/損失曲線は互いに大きく跳ね返っています。つまり、時間内に取引が利益を生まない領域があることを意味します。


Fig_10_EURUSD_TriggerCF

 図10SMAクロストリガーのトリガー自己相関(EURUSD)


Fig_11_GBPUSD_TriggerACF

図11SMAクロストリガーのトリガー自己相関(GBPUSD)


SMAクロスオーバートリガーのACFフィルタ

プラスとマイナスの利益戻しのある取引間のACFのわずかな違いにもかかわらず(図10と11)、自己相関しきい値要件がSMAクロスオーバートリガーに追加されると、エキスパートアドバイザーの利益戻しパフォーマンスは、収益パフォーマンスの低い領域で大幅に改善されます。図12と13は、EURUSDおよびGBPUSDデータ用の追加のACFフィルタを使用したEAの利益戻しを示しています。16年間の全期間が使用されます。図1および2を図12および13と比較すると、自己相関しきい値要件が適用されると、EURUSDデータとGBPUSDデータの両方の利益戻しパフォーマンスが大幅に向上します。


Fig_12_EURUSD_SMACrossCorr

図12ACFフィルタを使用したEURUSDクロスオーバートリガー

Fig_13_GBPUSD_SMACrossCorr

図13ACFフィルタを使用したGBPUSDクロスオーバートリガー


図14は、ストラテジーテスターのパフォーマンス結果の表を示しています。EURUSDとGBPUSDの両方のデータで大幅な改善が見られます。どちらの場合も、ACFフィルタを有効にすると、総利益は約50%増加し、取引あたりの利益(PO)も大幅に向上します。

トリガータイプ

取引数

収益$

(0.1ロット)

損益(PF)

利益/取引(PO)

EURUSD SMAクロス

3160

5830.

1.10

1.85

EURUSD SMAクロス + ACF

1548

8511.

1.33

5.50

GBPUSD SMAクロス

3672

5352.

1.07

1.46

GBPUSD SMAクロス + ACF

3096

8317.

1.13

2.69

図14EURUSDおよびGBPUSDデータのパフォーマンステーブルのテスト


SMAクロスオーバーストラテジーにおけるACFのSMA低速期間への依存


勝ち/負け取引のSMA低速期間の選択に対する平均自己相関関数の依存性を調べることも興味深いです。これは、図15のEURUSDM15データについて示されています。取引オープニングストラテジーの一部として相関しきい値は使用されません。ACF値に関係なく、SMAクロスオーバーストラテジーの最適な低速期間は80と決定されました。図15は、 65から80の間のSMAの低速期間の場合、勝ち取引と負け取引の間で平均ACF値の最大の分離が発生することを示しています。さらなる分析は、ACF情報を使用して、取引開始時に測定された自己相関値に基づいて最適な低速期間を決定することにつながる可能性があります。 


Fig_15_AvgACVvsSlowPeriod

図15EURUSDの平均低速期間(ACF対SMA)

終わりに

自己相関関数は、エキスパートアドバイザーのパフォーマンスを向上させるための貴重な指標です。パフォーマンスが低い領域を除外することにより、テストベッドトリガーのパフォーマンスを向上させます。

一般に、自己相関関数を含む相関係数は、取引効率を改善するための有益な研究分野です。それらはボラティリティの影響を受けず、トレンドの形成や逆転などの価格パターンに敏感です。



MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/3299

添付されたファイル |
AutoCorr.mq5 (4.12 KB)
単一チャート上の複数インジケータ(第04部): エキスパートアドバイザーに進む 単一チャート上の複数インジケータ(第04部): エキスパートアドバイザーに進む
以前の記事では、複数のサブウィンドウでインジケータを作成する方法を説明しました。これは、カスタムインジケータを使用するときに興味深いものになります。今回は、エキスパートアドバイザーに複数のウィンドウを追加する方法を説明します。
MQLアプリケーションでのCCanvasクラスの使用 MQLアプリケーションでのCCanvasクラスの使用
この記事では、MQLアプリケーションでのCCanvasクラスの使用について検討します。理論には、CCanvasの基本を完全に理解するための詳細な説明と例が付属しています。
DoEasyライブラリのグラフィックス(第97部): フォームオブジェクトの移動の独立した処理 DoEasyライブラリのグラフィックス(第97部): フォームオブジェクトの移動の独立した処理
本稿では、マウスを使用したフォームオブジェクトの独立したドラッグの実装について検討します。さらに、以前にターミナルとMQL5に実装されたエラーメッセージと新しい取引プロパティをライブラリに追加します。
MVCデザインパターンとその可能なアプリケーション(第2部): 3つのコンポーネント間の相互作用の図 MVCデザインパターンとその可能なアプリケーション(第2部): 3つのコンポーネント間の相互作用の図
本稿は、前の記事で説明したMQLプログラムのMVCパターンのトピックの続きです。この記事では、パターンの3つのコンポーネント間の可能な相互作用の図を検討します。