MetaTrader 5 / ライブラリ

Calendar-Based Backtesting: an Event-Driven Trading EA - MetaTrader 5のためのライブラリ

216
(4)

コードには理解を深めるためのコメントがたくさん付いています。この説明では、主なアイデアと、コードの使用/再利用方法を説明する。

このフレームワークは3つの主要な構成要素からなる:

1.CalendarRetriever.mq5 (スクリプト) - このスクリプトは、過去の経済ニュースイベントを取得し、ターミナルの「Common」フォルダ内のファイルに保存します。これらのファイルは後でバックテスト中にエキスパート・アドバイザーによって読み込まれます。スクリプトには2つの入力パラメータが必要です

  • 開始日 -過去のニュースイベントを取得する日付。
  • 終了日 -ニュースイベントを保存する最後の日付。

このスクリプトを実行すると、ターミナルの "Common "ディレクトリに "Calendar "フォルダが生成され、以下のテキストファイルが作成さ れます:

  • Countries.txt - 各MQLCalendarCountryに関する情報が格納されています。
  • Events.txt - 名前、影響、国名などのイベントの詳細を格納。
  • News.bin - タイムスタンプを含む過去のニュースイベントの値を保持します。

    2.CalendarFile.mq (インクルード・ファイル) -このファイルは、エキスパート・アドバイザーでニュース・データを扱うための構造化された方法を提供します。 このファイルには2つの主要なクラスが含まれて います:

    • CalendarFileWriter -ニュースデータを保存するためにスクリプト内部で使用されます。
    • CalendarFileReader -ニュースデータを読み込んで処理するために、エキスパートアドバイザーで使用されます。イベントデータをロードし、OnTick 関数で今後のニュースを追跡する関数が含まれています。
    3.NewsBacktest.mq5 (エキスパートアドバイザー) - ストラテジーテスターでリアルタイムのニュース状況をシミュレートするために保存されたデータを使用します。Load関数を使用して保存されたニュースデータを読み込み、それに従って取引を実行します。

    フレームワークの使い方

    1. CalendarRetrieverスクリプトを実行: バックテストしたいシンボルを選択し、開始日と終了日を指定してCalendarRetriever.mq5スクリプトを実行します。

    2. エキスパートアドバイザー

      • EA は、CalendarFileReader クラスを使用して、以下の関数を使用してデータを読み込みます:
        • LoadEvents() - イベントの詳細をロードします。
        • LoadCountries() - 国情報を読み込みます。
        • LoadValues() - 過去のニュース値をロードします。
      • その後、OnTick 関数でニュース・イベントを処理して、ニュース・イベントが発生するタイミングを判断します。予測するには Propagate() を使用し、反応するには Track() を使用します。
      • CalendarFileReader.Propagate()関数は、次のインデックスを次のイベントに設定します。
      • CalendarFileReader.Track()関数は、ニュースイベントが経過したときにtrueを返し、最後のインデックスをその特定のイベントに設定します。OnTick()関数でも呼び出されますが、結果をチェックする必要があります。
    3. ストラテジーのバックテスト MetaTrader 5のストラテジーテスターを 開き、NewsBacktest.mq5を選択して、ビジュアルモードでバックテストを実行します。

    独自のニュースベースのストラテジーに適用する方法:

    このフレームワークは、トレーダーが経済ニュースイベントを中心に独自の戦略を開発できるよう、柔軟に設計されています。以下に、このフレームワークを変更する方法をいくつか示します:

    • OnTick()のイベントフィルタリングロジックを調整し、特定のニュースタイプに反応させる(例えば、NFPやCPIの発表後のみ取引する)。
    • 注文執行ロジックを変更して、ブレイクアウト取引の代わりに初動をフェードする など、異なる戦略を実行する。
    • エントリーシグナルを精緻化するために、ニュースイベントと並行して追加指標を使用する。
    • イベントの影響度合いに応じて、未決済注文の有効期限を変更する。

    このソリューションにより、MetaTrader 5の制限内でニュースベースの戦略のバックテストが可能な限り現実的になります。まず過去のニュースデータを取得し、次に市場への影響をシミュレートすることで、トレーダーは自分の戦略が実際の状況でどのように機能するかについて貴重な洞察を得ることができます。

    より簡単に、より良く理解するために、私のビデオをチェックしてください:




    MetaQuotes Ltdによって英語から翻訳されました。
    元のコード: https://www.mql5.com/en/code/55630