クロスプラットフォームグリッドEAの開発:マルチカレンシーEAのテスト

7 8月 2020, 16:00
Roman Klymenko
0
849

イントロダクション

この記事は、グリッドEAに捧げる一連の記事の追記のようなものです。

この記事では、EAの作成や改善は行いません。 当マルチカレンシーEAは既に作成済みです。 その新バージョンは、以下にテストレポートとテストに使用したSETファイルに添付します。

本記事の主な目的は、当初意図していなかった相場での平均化・マーチンゲールベースのEAをテストすることです。 ロングポジションのみをトレードするこのEAは、3400米ドルから2200米ドルへのS&P500の下落を乗り切ることができるのでしょうか? このように、下落率は3割を超えました。

トレードシステムの基本ルール

EAで実装されているトレードシステムは、以下のルールで構成されています。

相場. このEAは、米国の取引所の株式のみをトレードします。 ブローカーは、最も人気のある数十の株式へのアクセスを提供するものでなければなりません。 マルチカレンシーEAを試すための銘柄は、利用可能なセットの中から選択されます。

エントリー方向. 全てのポジションはロング方向にのみオープンします。

この方向性の選択は、ほとんどの銘柄の長期の価格チャートを見れば一目瞭然です。 特に2010年から2020年初頭までの期間を分析すると顕著です。 例えば、マイクロソフト株の週足チャートを見てみましょう。

マイクロソフト株、週足チャート

相場の下落を前に、株式は順調に上昇していました。

エントリーポイント. RSIインジケータの値をもとにポジションを開きます。 資産によって解釈が異なります。 一部の資産では、RSIが30を下回った場合にインプットが行われます。 その他の資産では、RSIが70以上に上昇した場合にエントリーします。 したがって、純粋に資産に依存します。

平均化ステップの数. 無制限のステップ数で平均化を利用するのは危険です。 資産価格が長い間一方向に動くと、新しいポジションが爆発的に増えるたびに損失が拡大します。

したがって、各シンボルのグリッド長は、4つのオープンポジション(ステップ)に制限されます。

例えば、あるシンボルのグリッドが最大3ステップで構成されており、シンボル価格がステップ4を開くべきレベルに達した場合、システムは4つ目のステップを開くのではなく、そのレベルにある既存のポジションをすべてクローズします。 平均化アルゴリズムにおけるSLを使用します。

平均化メソッド. 既存のポジションは、新規にオープンしたポジションごとに固定のロットを使用したり、ロットを増やしたりして(安値で追加のポジションをオープンすることで)平均化することができます。

マーチンマーチンゲール方式でロットが増えれば、SLの場合の損失はTPで得た利益よりもはるかに大きくなります。 よって、マーチンゲールを使うことは心理的に難しいのです。 SLで、EAがここ2週間で稼いだ利益を全部失ってしまったことを見ると、悔しい思いをすることになります。 よって、SLは全くない方がいい。

まず、固定ロット平均法で良い結果を示すツールの選択から始めましょう。

マーチンゲールを使用する必要がある場合、ロットは指数機能的に増加するのではなく、新しいステップごとに初期ロット値によって増加します。

下の表は、さまざまな平均化タイプの計算を示します。

平均化タイプ
チェーンステップ数
 SLでの損失
 固定
 2
 3
 固定  3
 6
 固定  4
 10
 初期ロット値による増加
 2
 4
 初期ロット値による増加  3
 10
 初期ロット値による増加  4  20

適当なステップでSLが発生した場合の損失は、ステップ数で規定されています。 つまり、ステップサイズが7ポイントの場合、ステップ4での固定平均化による損失は10*7=70ポイントになります。

このように、初期ロットの分だけロットサイズを大きくすると、チェーンを3段以上長くすることができません。 ステップ4での損失が大きくなりすぎるからです。

グリッドサイズと利確サイズ. グリッドサイズ(開いている2つのポジション間のポイントの距離)とTPサイズの両方が最適化に基づいて選択されます。 SLの場合の損失を制限するために、TPの利益が1~3になるようにパラメータを設定します。

トレードとテスト期間. ほとんどの株価チャートを見てもわかるように、長期にわたって価格は順調に上昇します。 しかし、ここでのキーワードは「長い期間」です。 このトレードシステムは、1年以上の期間を想定します。 最適な期間は4年です。 このトレードシステムを利用しようと思ったら、4年間の期間を考えてみることをおすすめします。

また、2016年1月から2020年1月までの4年間、テストと最適化を実施しました。 見つかったトレードツールのセットは、株式相場が下落した2020年4月までの期間に追加でテストされます。

トレードロット. テストと最適化は固定ロットで行います。 各シンボルには個別のロットサイズを使用します。

出来上がったマルチカレンシーこのEAは、徐々に増えていくトレードロットで追加テストを行います。 この場合、残高が2倍になればロットも2倍になります。 このインクリメントは、タスクロットが初期ロット25個分の値に達するまで繰り返されます。

ロットはインプットパラメータを介して増加します。 パラメータは、デポジットサイズを指定するために使用され、タスクロットを増加させる必要があります(下の図を参照してください)。

タスクロットを増やすためのインプットパラメータ

結論. これらがトレードシステムが動作するためのすべてのルールです。 システムの採算性を単一のツールでテストしてみましょう。


個々のツールの最適化パラメータ

個別の最適化の詳細は、記事の考え方が違うので割愛させていただきます。

最適化は、リアルティックに基づくティックモードで実行されました。

最適化の結果は、リカバリーファクタでソートされました。 テストパスで利益が出た場合は、リカバリーファクタの値を返します。 パスが負けている場合は、リカバリーファクターの代わりに口座残高が減少した割合(負の符号付き)が表示されます。 テスト期間中にEAが30回以下のトレードを行った場合、客観的な統計を取るには不十分な少ないトレード数であるため、0が返されます。

このソート方法は、標準オプションの中では利用できません。 EAに実装されています。 使用するには、ストラテジーテスターの設定タブを開き、カスタムマックスを選択します(下図参照)。

カスタム基準の最高値

また、単一シンボルの最適化とテストの間にフォワードテストが使用されました。 4年間隔の最適なフォワード期間は、1/4です。 最初の3年はバックテストに、直近の1年はフォワードテストに使うということです。

マルチカレンシーEAに選択されたシンボル

では、テスト結果を考えてみましょう。 ここでは、マルチカレンシーEAの中に最終的に含まれている商品のバランスチャートをご紹介します。 そのようなツールは11種類になります。 まず、EAはより多くの商品をトレードするために設計されたものではありません。 第2に、相関のないシンボルのポジションを拾うのは難しい。

AAPL:

AAPL、2016年~2020年

BRK.B:

BRK.B, 2016-2020

PEP:

PEP、2016年~2020年

WMT:

WMT、2016年~2020年

CVX:

CVX、2016年~2020年

EBAY:

EBAY、2016年~2020年

MSFT:

MSFT、2016年~2020年

DIS:

DIS、2016年~2020年

JPM:

JPM、2016年~2020年

JNJ:

JNJ、2016年~2020年

S&P500:

S&P500、2016年~2020年

チャートエンドに近い大きな下げは、実は下げではありません。 ここではバックテストの終わりと、フォワードの始まりを示します。 フォワードテストは、最初の入金額ではなく、バックテストの残高で開始するためです。

ここでは、選択されたトレードツールのテスト結果を表にします。

 銘柄 リカバリーファクタ(バック/フォワード)
プロフィットファクタ(バック/フォワード  最大ドローダウン(バック/フォワード 取引数 (バックテスト/フォワードテスト)
 AAPL
 7.25 / 11.04
 3.93 / 37.99
 49.41 / 30.36
 134 / 58
 BRK.B  7.41 / 1.79
 3.11 / 2.01
 15.06 / 14.96
 70 / 29
 PEP  5.2 / 3.26
 2.49 / 5.42
 13.96 / 10.42
 55 / 15
 WMT  5.9 / 3.19
 2.51 / 2.56
 25.52 / 20.7
 67 / 25
 CVX  6.51 / 3.25
 3.03 / 4.26
 19.17 / 14.82
 78 / 24
 EBAY  4.57 / 1.95
 8.87 / 8.85
 20.7 / 12.96
 43 / 12
 MSFT  7.41 / 3.13
 6.69 / 5.26
 16 / 20.93
 72 / 44
 DIS  3.97 / 1.19
 2.32 / 1.84
 26.97 / 32.02
 101 / 49
 JPM  4.34 / 3.07
 1.75 / 2.81
 12.69 / 10.86
 164 / 54
 JNJ  6.24 / 1.23
 5.66 / 2.31
 28.94 / 44.36
 68 / 29
 S&P500  2.55 / 1.98
 1.65 / 1.57
 17.81 / 21.18
 85 / 91

この記事の最後に、すべてのストラテジーテスターのレポートを添付しています。

フォワードテストを行うことで、より正確な結果を得ることができ、また過剰最適化を避けることができると考えられています。 この指摘には賛成できません。 とはいえ、最適化の際にはこのようなテストも行っていました。

私の考えでは、これはフォワードテストのメリットは1つです。 2つの異なる出発点を使ってEAをテストすることができます。 これより、時間を節約することができます。

あとは、フォワードテストでは結果の解釈が複雑になることがあります。

例えば、バックテストとフォワードテストの結果を足しただけでは、テスト期間全体の総リカバリーファクタを受け取ることはできません。 最大ドローダウンが期間で異なるのが普通のためです。 しかし、最初のトレード量または最低保証金を決定するために、この共通の最大ドローダウンが必要です。 このように、ドローダウン値が最も高いものを全期間の最大値とする必要があります。 この場合、ドローダウンが少ない期間に算出されたリカバリーファクタは正確ではありません。

また、バランスチャートを見ることができれば、フォワードテストをしなくてもEAのイベントを最適化しすぎてしまうことはありません。 テスト期間全体を通してバランスチャートが着実に成長している場合は、適切なパラメータが選択されていることを意味します。 残高チャートの最初に主な伸びが登録されているのに、資金レベルがチャートの右端で止まっていたり、下がっていたりすると、パラメータが合わなくなります。

相場下落前のマルチカレンシーEAのテスト

選択したトレード商品を1つのEAにまとめると、どのような効果があるのでしょうか? 各シンボルを別々にトレードした場合よりも結果が良くなるのでしょうか? 固定ロットをトレードしたときのバランスチャートとテスト結果です。

11種類の商品を一度にトレードした場合の残高チャート(固定ロット)

肉眼で見ても、単品トレードに比べてバランスチャートがどれだけ滑らかになったかがわかります。 テスト結果のある表を追加で確認してみましょう。

 リカバリーファクター  利益率 当期純利益
 最大ドローダウン 取引数
 20.56  2.94
 1 992
 96.91
 1 308

多様化の効果は、この表にも示されています。

最初のデポジットは200米ドルでした。 4年後には1,992ドルあります。 固定ロットでトレードすると4年間の利益が900%近くになるということです。

良い結果になっているようです。 しかし、現実には少し事情が悪化します。 まず、200米ドルの初回入金が少なすぎる。

最大ドローダウンは97米ドルでしました。 しかし、97米ドルの資産でこのシステムをトレードするのに十分であることを意味するものではありません。 また、オープンポジションを維持するために確保した証拠金の大きさも考慮する必要があります。

テスト後、EAはテスト中に登録した最大ドローダウンの情報をジャーナルタブに追加します。 この場合、最大ドローダウンは190米ドルでした。 快適なトレードは、少なくともUSD 97 + USD 190 = USD 280がある必要があることを意味します。 300ドルまで切り上げましょう。 つまり、4年間の利益は600%近くになります。

この利益は、固定ロットトレードという形で達成されました。 初回入金額で残高が増えるたびにロットを増やしていくのはどうでしょうか? このEAは、初期ロットを最大25倍まで増やすことができます。 この制限は、テストには十分にきれいだと思います。

11種類の商品を一度にトレードした場合のバランスチャート(ロット増加)

今回のチャートはあまり滑らかではありません。 しかし、最終的な利益は感動的ですね! デポジットは200米ドル(または必要な300米ドル)から20,701米ドルに増加しました。 4年間で約7,000%に相当します。

この場合、EAは7,100米ドルの入金で最大ロットを使い始めました。 制限を利用しなければ、さらにタスクロットを増やすことができたということです。

マーケットドロップ期間を含むマルチカレンシーEAテスト

この結果はとても良かったです。 しかし、最近の相場の下落時にEAはどう振る舞うのでしょうか?

この部分は、本題の記事に関連します。 次回のテスト期間は2016.01.01~2020.04.01です。

同じ設定でマルチカレンシーEAのテスト結果、固定ロットをトレード。

11種類の商品を一度にトレードした場合の残高チャート(固定ロット)

一見すると、ほとんど気づかれないような落ち方をします。 では、検査結果を見ていきましょう。

 リカバリーファクター  利益率 当期純利益
 最大ドローダウン 取引数
 13.91  2.54
 1 971
 141.69
 1 400

差がわかりますね。 回復率は7低下しました。 最大ドローダウンが1.5倍になりました。 利益はほぼ横ばいでした。 実際に1月から2月末までに稼いでいたものを失ってしまいました。 これは3割以上の下落です。

では、25回まで徐々に大きくなるロットを使ったテスト結果を見てみましょう。

11種類の商品を一度にトレードした場合のバランスチャート(ロット増加)

この場合でも、落下はほど大きな意味を持ちません。 利益は20,180ドルで、2020年初頭に比べて600ドルしか減っていません。

まとめてみましょう。

一般的には、トレードの平均化やマーチンゲールを活用したシステムであっても、そこまで危険なものではないことを証明できたのではないかと思います。 もちろん、平均化に責任ある限度額を設定してください。 ストップロスも平均化やマーチンゲールと一緒に使うべきだということです。

結論

2008年の前回の大暴落から10年以上が経過しました。 相場はその頃から着実に成長してきました。 おそらく同じような10年成長が2020年の暴落後に始まるかもしれません。 この記事で紹介しているようなトレードシステムには最適なタイミングでしょう。

説明したシステムを元にトレードしたロボットを、必ず実際の口座で立ち上げようと思います。 EAは下記に添付していますので、そちらもご利用ください。

MetaQuotes Software Corp.によりロシア語から翻訳された
元の記事: https://www.mql5.com/ru/articles/7777

添付されたファイル |
article_files.zip (4164.36 KB)
griderKatMultiEA.ex4 (482.52 KB)
griderKatMultiEA.ex5 (615.21 KB)
griderKatMultiEA.mq4 (410.15 KB)
griderKatMultiEA.mq5 (410.15 KB)
連続的なウォークフォワード最適化(その6):オートオプティマイザの論理部分と構造 連続的なウォークフォワード最適化(その6):オートオプティマイザの論理部分と構造

記事3と4以前、我々は自動ウォークフォワード最適化の作成を検討しました。 今回は、オートオプティマイザツールの内部構造について進めていきます。 この記事は、作成したプロジェクトをさらに稼働したい方、修正したい方はもちろん、プログラムのロジックを理解したい方にも役立つ内容となっています。 今回の記事では、プロジェクトの内部構造とオブジェクト間の関係を示すUML図を掲載します。 また、最適化開始までの過程が記述されていますが、オプティマイザの実装過程が記述されていない状態です。

MQLプログラムのグラフィカルインターフェイスのマークアップツールとしてのMQL 第2部 MQLプログラムのグラフィカルインターフェイスのマークアップツールとしてのMQL 第2部

本論文では、MQLプログラムのウィンドウインタフェースを記述するための新しい概念をMQLの構造体を用いて確認します。 MQLマークアップに基づいてGUIを自動的に作成することで、要素をキャッシュして動的に生成したり、イベントを処理するためのスタイルや新しいスキームを制御したりする関数が追加されます。 標準のコントロールライブラリの強化版が添付されています。

連続的なウォークフォワード最適化(その7)。オートオプティマイザの論理部分をグラフィックスでバインドし、プログラムからグラフィックスを制御する 連続的なウォークフォワード最適化(その7)。オートオプティマイザの論理部分をグラフィックスでバインドし、プログラムからグラフィックスを制御する

この記事では、オートオプティマイザプログラムのグラフィカルな部分と論理的な部分の接続について説明します。 ボタンクリックから最適化マネージャへのタスクリダイレクトまで、最適化の起動プロセスを考慮します。

DoEasyライブラリの時系列(第39部): ライブラリに基づいた指標 - データイベントと時系列イベントの準備 DoEasyライブラリの時系列(第39部): ライブラリに基づいた指標 - データイベントと時系列イベントの準備

本稿では、DoEasyライブラリを適用して複数の銘柄の複数期間の指標を作成する方法について説明します。指標内で機能するライブラリクラスを準備し、指標のデータソースとして使用される時系列の作成をテストします。時系列イベントの作成と送信も実装します。