バックテストでVIXフィルターを検証する方法

2020.04.09

VIXでEAのエントリーをフィルタリングしたいけど、やり方が分からないと言った方の為にバックテストでVIXフィルターを検証する方法を記載します。

1.vix_history.csvの作成


まずは、VIXヒストリカルデータの作成です。

面倒な方は私が作ったファイルをダウンロードし、手順2に進んでOKです。ただし、1999年~2020年3月24日までのデータしか作成していません。

自分で作成する方はこちらのサイトからVIXのヒストリカルデータをダウンロードしてください。 2003年まではexcelファイル、2004年からはcsvでダウンロードできます。

ダウンロードしたらcsv形式に統一し、以下のように日付をYYYYMMDD形式に体裁を揃えてください。

Date,VIXOpen,VIXHigh,VIXLow,VIXClose
19990104,25.38,26.96,24.74,26.17
19990105,25.92,25.98,24.36,24.46
19990106,23.36,23.38,22.68,23.34
19990107,24.42,24.90,24.04,24.37
19990108,22.95,24.08,22.81,23.28

ファイルを作成できたらファイル名を「vix_history.csv」としてデータフォルダ>tester>filesの下に格納してください。


2.includeファイルのダウンロード


VIXTester.mqhをダウンロードしてデータフォルダ>MQL4>Includeの下に格納してください。


3.EAからVIXTesterを呼び出し


下記のようにVIXTester.mqhをインクルードして使用します。

VIX_Filter_EA.mq4
#property strict

#include <VIXTester.mqh>

VIXTester *vixTesterClass;

int OnInit()
  {
   vixTesterClass = new VIXTester();
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   delete vixTesterClass;
  }
void OnTick()
  {
    if (IsTesting()) {
       double vix = vixTesterClass.get(TimeCurrent(),VIX_MODE_CLOSE, 1);
       Print(TimeToStr(TimeCurrent())+"のVIXは"+DoubleToStr(vix)+"です");
    }
  }
                  

実行すると、こんな感じでVIXが取得できます。


特記事項


  • このロジックはバックテストでしか利用できません。リアル用のVIX取得ロジックは別に実装する必要があります。
  • VIXTesterは指定された日時にVIXデータが存在しない場合は過去を遡って直近のVIXを返却します。
  • VIXTesterが-1を返す際はVIXヒストリカルデータを読みこめていない可能性が高いです。

tas

プロフィール
Generic placeholder image
tas

本業はシステムエンジニアをしており、副業としてEA開発を行っています。AWSやAIを組み合わせた唯一のEAを模索中。

AWSソリューションアーキテクトアソシエイト資格保有

JDLA Deep Learning for GENERAL 2020 #2資格保有