バックテストでVIXフィルターを検証する方法 2020.04.09
VIXでEAのエントリーをフィルタリングしたいけど、やり方が分からないと言った方の為にバックテストでVIXフィルターを検証する方法を記載します。
1.vix_history.csvの作成
まずは、VIXヒストリカルデータの作成です。
面倒な方は私が作ったファイルをダウンロードし、手順2に進んでOKです。ただし、1999年~2022年5月4日までのデータしか作成していません。
自分で作成する方はこちらのサイトから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