FX
MT4
MetaTrader4
金融
自動取引

Meta Trader 4 における自動取引システム(Expert Advisor)検証

More than 3 years have passed since last update.


はじめに

今回は Meta Trader 4 における自動取引システム (Expert Advisor) 作成 で作成した Expert Advisor(EA)の検証、パラメータチューニングとバックテストを行います。


ストラテジーテスター


表示

まずストラテジーテスターが Meta Trader 4(MT4)表示されていない場合ですが、ウィンドウ上部のメニューから View -> Strategy Tester をクリックし画面に表示させます。

05_01_tester.tiff


項目

各項目は次のような役割になっています。

項目
内容
選択内容

Expert Advisor
バックテストしたい EA を選択する。

Symbol
対象とする商品を選択する。

Model
使用するデータを選択。
Every tick: 全ティックを利用する。

Control points: 1本のロウソク足につき12個の点を生成し利用する。

Open prices only: 始値のみを利用する。

Use date
対象の日付と時間を選択する。

Period
時間軸(足)を選択する。

Spread
スプレッドを自由に変更できる。デフォルトは対象の商品のデフォルト値。

Visual mode
チェックを入れると実際に値動きと売買を確認しながらバックテストが行える。

Expert properties
EA に関する各種設定(後述)。

Symbol properties
商品に関する各種項目の確認(スプレッド、取引単位、ストップレベル、取引時間など)。

Open chart
チャートウィンドウに取引状況を重ねたものを表示する。

Modify Expert
EA を編集する(Mac 版だと動作せず)。

Open chart をクリックすると対象のチャートウィンドウが現れます。バックテストを行うと、下図のように取引状況がグラフ上に重なった状態で表示されます。

05_012_open_chart.tiff


EA の設定 (Expert properties)

Expert properties には Testing 、 Inputs 、 Optimization の設定項目があります。細かく見てみましょう。

05_02_testing.tiff

Testing では以下の項目を設定できます。

項目
内容
選択内容

Initial deposit
初期口座残高。

Positions
取引に利用するポジションの指定。
Long のみ、 Short のみ、両方

Optimized paramter
どのパラメータで最適化を行うか。
Balnce: 口座残高

Profit Factor: プロフィットファクター (総利益 / 純損失)

Expected payoff: 期待損益 (総損益額 / 総トレード数)

Maximal Drawdown: 最大ドローダウン額

Genetic algorithm
最適化時、遺伝的アルゴリズムでバックテストの時間を短縮する。

05_03_Inputs.tiff

Inputs では使用する EA のパラメータに関する設定が行えます。 Save と Load で保存・読み込みが可能です。

項目
内容

Variable
最適化したい項目を選択する。

Value
使用するパラメータを設定する(最適化しない場合はこの値を利用する)。

Start
最適化の開始値。

Step
最適化時の変化量。

Stop
最適化の終了値。

05_04_optimization.tiff

Optimization では最適化時の制約を設定できます。おそらくあまり弄る必要は無いはずです。


バックテストの実行


確認できる項目

各種項目を設定したら、右下の Start をクリックするとバックテストが始まります。終了後は次の内容が確認できます。

項目
内容

Results
取引履歴が確認できます。

Graph
口座残高の推移が確認できます。

Report
結果の詳細です (後述)。

Journal
各種ログが確認できます。

05_05_report.tiff

Report タブでは次の内容が確認できます。

項目
内容

Bars in test
バックテストに利用したローソク足数

Mismatched charts errors
バックテスト対象の足とより小さい時間足との不一致数

Inital deposit
初期口座残高

Total net profit
総損益 = バックテスト終了時の口座残高 - 初期口座残高

Profit factor
プロフィットファクター = 総利益 / 総損失

Absolute drawdown
初期口座残高からの最大ドローダウン = Initial deposit - 最小口座残高

Total trades
総取引数

Ticks modelled
バックテストに利用したティック数

Modelling quality
バックテストの精度

Spread
スプレッド

Gross profit
総利益

Gross loss
総損失

Expected payoff
1トレードあたり利益 = Total net profit / Total trades

Maximal drawdown
最大ドローダウン = ピーク時口座残高 - 最小口座残高

Relative drawdown
相対ドローダウン = ピーク時口座残高 - 次のドローダウンの最大比率・金額

Short positions
売り取引数 (勝率 %)

Long positions
買い取引数 (勝率 %)

Profit trades
利益が出た取引数 (割合)

Loss trades
損益が出た取引数 (割合)

Largest profit trade
1取引あたりの最大利益

Largest loss trade
1取引あたりの最大損失

Average profit trade
利益が出た取引の平均利益

Average loss trade
損益がでた取引の平均損益

Maximum consecutive wins
最大連続勝ち取引数

Maximum consecutive losses
最大連続負け取引数

Maximal consecutive profit
最大連続利益

Maximal consecutive loss
最大連続損益

Average consecutive wins
平均連続勝ち取引数

Average consecutive losses
平均連続負け取引数

Report タブの領域で右クリックすると、レポートを HTML 形式で保存することが出来ます。

05_052_strategy_tester_result.tiff


最適化

MT4 では EA の各種定数最適化ができます。


最適化の実行

Expert properties を選択後、Testing タブの Optimization parameter を最適化する目的変数(デフォルトだと損益)に設定します。その後 Inputs タブを選択し、最適化したい変数のチェックボックスをチェックします。そして各変数の Start、Step、Stop を設定し、OK をクリック。ストラテジーテスターの Optimization をチェックし、Start をクリックすると最適化計算が始まります。

計算終了後には Optimization Results タブと Optimization Graph タブが出現します。


最適化の結果確認

05_06_optimization_result.tiff

結果のタブを確認すると、各パラメータにおける結果が確認できます(上の結果ほど良い結果)。

05_07_optimization_graph.tiff

またグラフを確認すると、結果のタブにある Pass の番号と目的変数の関係性がプロットされます。

これらの結果から、使用するパラメータを決定し、もう一度バックテストを行い詳細レポートを確認できます。


おわりに

これで作成した EA のバックテストと使用するパラメータの最適化を行うことが可能になりました。ここまでで MT4 内で完結するロジックを自由に組むことが可能になりました。


参考文献