English Русский 中文 Español Deutsch Português
Expert Advisor 内での Expert Advisor コンテスト

Expert Advisor 内での Expert Advisor コンテスト

MetaTrader 4トレーディングシステム | 22 4月 2016, 15:17
1 247 0
Evgeniy Trofimov
Evgeniy Trofimov

はじめに

親愛なる開発者と為替 分析家のみなさん!

数多くのトレーディングシステム(TS)は特定の期間に対しては安定的ですが、バランス曲線は下降し始めることが多いものです。トレーダーはそれにがっかりし、新しい聖杯を考え出し、パラメータを最適化し始める、となるのです。

私は、仮想取引を行うツール-VirtualTrend.mqh、に注目いただきます。提案する関数によって仮想取引をオープン、クローズ、トレールすることができるのです。

それには次のような便利な機能があります。

  1. 前回のトレード結果を受け、仮想取引を有効、無効にする適応型 Expert Advisor を作成する機能。
  2. 複数のトレーディングシステム(本例では、5件のトレーディングシステムが提供されています)を収益性に応じてパーセント表示でレーティング。実マーケットの将来の取引でどのトレーディングシステムがもっとも収益性があるかという判断の元での競争結果。
  3. トレーディング戦略を実装する機能。それはインスツルメントによって、複数のオープンしているトレードを蓄積されたポジションが使用される MetaTrader 5 プラットフォームで利用する機能(この機能は本稿では説明されませんが、用途のバリアントとして提案されます)。

最初の2つについてみていきます。

適応型 Expert Advisor としてCompetition_v1.0.mq4 コードを採用します。そこでは、競争ベースで使用するトレーディングシステムが決定されます。Expert Advisor は5件(お望みならば追加可能です)のトレーディングシステムを使用します。それらは無作為に選ばれるのではなく、EURUSD の日次タイムフレームで多かれ少なかれ暗転して動作することを基に選択されるものです。

重要!!一定の期間に利益を出すか、常に損失を出す安定したトレーディングシステムのみを使用する必要があります。

たとえば、連続勝利が"PPPPPPPLLLLLLLLPPLPPPPPPPP" であるトレーディングシステムはこの Expert Advisor で使用する条件に当てはまりますが、連続勝利が "LLPPLPLLPPPLLPLPPLPLPLLLPPLPL" であれば、それは使用に適していません("L" -敗北トレード、"P" -利益トレード)。

損失を出すトレードが利益を出すトレードより頻繁であるが、利益トレードが前の損失を補うトレーディングシステムも使用できません。というのも、Expert Advisor は単に収益性に適応しないためです。

トレーディングシステムの安定性は、最長期間に対して行う検証結果から『目で』で判断されるのです。取得されるバランス変化の図により、傾向を変えるディールの平均加重数を判断することができます。たとえば、あるトレーディングシステムが以下のような一連のディールを行います。 PPPPPPPPLLLLLLPPPPPPPPPLPLLLLLLLLLLLPPPPPPPLLLLLLLLLLLLLPPPPPPLLLLLLLLLLPLPPPLLPPPPPP。バランス傾向は6~8トレード後に変化しています。レーティングを計算する際は、これらトレードの半分に相当するバランスの平均期間を設定することをお薦めします。それは 3 または 4 です。

Expert Advisor が収益性変化のダイナミクスに適応することに役立つ、レーティングシステムの有効化、無効化は RatingON パラメータによって管理されます。それにより、バランスの平均期間を簡単に見つけ、 Tх.PeriodRating パラメータに対して設定することができます。

トレーディングシステムはそれぞれ、Tх.Enabled パラメータによってみなさんの意志で有効、無効にすることができます。そこで x はの数です。

以下に著されているトレーディングシステムの検証はすべてEURUSD (D1 タイムフレーム)について期間 1999.01.01~2010.06.01 で行われるものです。



トレーディングシステム No.1

  • エンタリング条件:高速移動平均が低速移動平均に交差するとき(T1_SignalOpen() 関数参照)。
  • エグジット条件:逆の交差(T1_SignalClose() 関数参照)。

図1  適応なしのトレーディングシステム No.1 の検証(RatingON = 偽)

検証結果により、18~20件のトレード後、この戦略は収益性のダイナミクスを変える、という結論が導かれます。

T1.PeriodRating パラメータが 20 に設定されるのはそのためです。

適応ありのトレーディングシステム No.1 の検証(RatingON = 真)

図2  適応ありのトレーディングシステム No.1 の検証(RatingON = 真)



トレーディングシステム No.2

  • エンタリング条件::CCI インディケータが一定レベルを上から下方向へ交差するとき(T2_SignalOpen() 関数参照)。
  • エグジット条件:シグナルが逆方向に出現するとき(T2_SignalClose () 関数参照)。

検証中、同時期に対して安定性は約10件のトレードに等しいことを発見しました。

図3  適応なしのトレーディングシステム No.2 の検証

図4  適応ありのトレーディングシステム No.2 の検証



トレーディングシステム No.3

エンタリングとエグジットのロジックは TS No.1 の一つと同様ですが、移動平均の平均期間が異なります。

少し余談です。 Competition_v1.0.mq4 全体を書き直し、それを異なる期間の移動平均で構成される戦略からコンバインすることが可能です。

私はこのおもしろい調査はやっていませんが、することがあれば、みなさんにご報告します。

図5  適応なしのトレーディングシステム No.3 の検証

この TS は長期の間(ほとんど11年)に数件のトレードしか行いません。この戦略はストラテジーテスタの中での数がひじょうに少ないため、使用はお薦めしません。

この戦略を追加したのは、適応の作成をより明確に示すためです。T3.PeriodRating パラメータはこの戦略では 2 に設定されています。

図6  適応ありのトレーディングシステム No.3 の検証



トレーディングシステム No.4

この戦略は文献で数多くお目にかかっています。

それは適応なしでも魅力的に思えますが、それは長期間のものなので、取引で使うには自動取引は必要ありません。

  • それは、3件の移動平均が注文で設定され、MACD が指定レベル- T4.LimitMACD(T4_SignalOpen() 関数参照)より高い場合、市場に参入します。
  • 価格が2ばんめの移動平均に交差すると退出します(T4_SignalClose() 関数参照)。

図7  適応なしのトレーディングシステム No.4 の検証

このトレーディング戦略は一定の安定性を保つため、レーティング計算のためのデータ処理期間は20トレード以上となります。私は T4.PeriodRating=20 と設定しました。

図8  適応ありのトレーディングシステム No.4 の検証



トレーディングシステム No.5

この TS は私が作成したもので、そのように洗練された方法でみなさんと共有したいと思います。

  • CCI インディケータが指定レベルT5.-LevelCCI 、を下から上向きに交差すると買います(T5_SignalOpen() 関数参照)。トレードクローズのMyLevel レベルはオープンの T5.TralingCCI インディケータポイントによるT5.LevelCCI レベルよりも低く設定します。CCI インディケータを観察し、クローズの MyLevel を指定のステップで CCI インディケータの現値と MyLevel レベルの間の距離が T5.TralingCCI の2倍より大きくならないようにその距離を維持して、引き上げます。
  • CCI インディケータが上から下向きに MyLevel レベルを交差したら、オープンしている買いポジションをクローズします(T5_SignalClose() 関数参照)。

図9 <適応なしのトレーディングシステム No.5 の検証

このチャートは適応なしのままにできますが、とにかくT5.PeriodRating=10 と設定します。

図10  適応ありのトレーディングシステム No.5 の検証



マルチシステム Expert Advisor

適応あり、適応なしの5件の Expert Advisor の動作については以上で実証しました。

ここから、これら Expert Advisor の共同作業例を考察していきたいと思います。

シンボル

EURUSD(ユーロ vs 米ドル)

期間

日次 (D1) 1999.05.24 00:00~2010.07.05 00:00(1999.01.01~ 2010.07.05)

モデル

コントロールポイント(ひじょうに粗い方法。結果は配慮されません)

パラメータ

RatingON=false; FastTest=true; file="virtual.csv"; MinRating=50; _tmp1_="---- Trading system 1 ----"; T1.Enabled=1; T1.Magic=101; T1.lot=0.1; T1.Fast=10; T1.Slow=100; T1.TS=7000; T1.PeriodRating=20; _tmp2_="---- Trading system 2 ----"; T2.Enabled=1; T2.Magic=102; T2.lot=0.1; T2.PeriodCCI=30; T2.LevelCCI=200; T2.SL=500; T2.PeriodRating=10; _tmp3_="---- Trading system 3 ----"; T3.Enabled=1; T3.Magic=103; T3.lot=0.1; T3.Fast=30; T3.Slow=200; T3.TS=5000; T3.PeriodRating=2; _tmp4_="---- Trading system 4 ----"; T4.Enabled=1; T4.Magic=104; T4.lot=0.1; T4.SL=5000; T4.TS=5000; T4.LimitMACD=0.002; T4.PeriodRating=60; _tmp5_="---- Trading system 5 ----"; T5.Enabled=1; T5.Magic=105; T5.lot=0.1; T5.PeriodCCI=90; T5.LevelCCI=100; T5.TralingCCI=100; T5.SL=5000; T5.TS1=5000; T5.PeriodRating=10;






検証のバー

2994

モデル化されたティック

219840

モデル化するクオリティー

n/a

初期デポジット

500000.00





総純利益

617173.70

粗利益

1342671.82

総損失

-725498.13

プロフィットファクター

1.85

期待利得

2373.74



絶対ドローダウン

76798.13

最大ドローダウン

172676.05 (28.98%)

相対ドローダウン

28.98% (172676.05)


総トレード

260

ショートポジション(勝利 %)

126 (29.37%)

ロングポジション(勝利 %)

134 (33.58%)


利益トレード(トータルの %)

82 (31.54%)

損失トレード(トータルの %)

178 (68.46%)

最大

利益トレード

78151.67

損失トレード

-18831.39

平均

利益トレード

16374.05

損失トレード

-4075.83

最大

連続勝利(資金における利益)

6 (89681.19)

連続敗北(資金における損失)

21 (-100325.23)

最大

連続利益(勝利数)

95057.65 (3)

連続敗北(敗北数)

-100325.23 (21)

平均

連続勝利

2

連続敗北

4


図11  適応なしのマルチシステム Expert Advisor の検証

トレーディングシステムの組み合わせによる結果は、利益、ドローダウン、トレード数を増加する、というものです。

次に、同じ検証を RatingON パラメータを有効にして見ます。

期間

日次 (D1) 1999.05.24 00:00~2010.07.05 00:00(1999.01.01~ 2010.07.05)

モデル

コントロールポイント(ひじょうに粗い方法。結果は配慮されません)

パラメータ

RatingON=true; FastTest=true; file="virtual.csv"; MinRating=1; _tmp1_="---- Trading system 1 ----"; T1.Enabled=1; T1.Magic=101; T1.lot=0.1; T1.Fast=10; T1.Slow=100; T1.TS=7000; T1.PeriodRating=20; _tmp2_="---- Trading system 2 ----"; T2.Enabled=1; T2.Magic=102; T2.lot=0.1; T2.PeriodCCI=30; T2.LevelCCI=200; T2.SL=500; T2.PeriodRating=10; _tmp3_="---- Trading system 3 ----"; T3.Enabled=1; T3.Magic=103; T3.lot=0.1; T3.Fast=30; T3.Slow=200; T3.TS=5000; T3.PeriodRating=2; _tmp4_="---- Trading system 4 ----"; T4.Enabled=1; T4.Magic=104; T4.lot=0.1; T4.SL=5000; T4.TS=5000; T4.LimitMACD=0.002; T4.PeriodRating=60; _tmp5_="---- Trading system 5 ----"; T5.Enabled=1; T5.Magic=105; T5.lot=0.1; T5.PeriodCCI=90; T5.LevelCCI=100; T5.TralingCCI=100; T5.SL=5000; T5.TS1=5000; T5.PeriodRating=10;

検証のバー

2994

モデル化されたティック

219840

モデル化するクオリティー

n/a

初期デポジット

500000.00

総純利益

227123.75

粗利益

388438.79

総損失

-161315.05

プロフィットファクター

2.41

期待利得

2341.48

絶対ドローダウン

10921.17

最大ドローダウン

76482.03 (12.48%)

相対ドローダウン

12.48% (76482.03)

総トレード

97

ショートポジション(勝利 %)

50 (40.00%)

ロングポジション(勝利 %)

47 (46.81%)

利益トレード(トータルの %)

42 (43.30%)

損失トレード(トータルの %)

55 (56.70%)

最大

利益トレード

71192.28

損失トレード

-12680.47

平均

利益トレード

9248.54

損失トレード

-2933.00

最大

連続勝利(資金における利益)

5 (80463.85)

連続敗北(資金における損失)

13 (-50753.48)

最大

連続利益(勝利数)

80463.85 (5)

連続敗北(敗北数)

-50753.48 (13)

平均

連続勝利

2

連続敗北

3


図12  適応ありのマルチシステム Expert Advisor の検証

バランスラインは水平で、急激なドローダウン数は減少し、利益は2.71倍増加、ドローダウンは2.32倍減少、トレード数は2.68倍減少、 プロフィットファクターは1.3倍増加しました。

図 12では、前の検証とは異なり、ボリュームの図が出現しています。それはアクティブなレーティングシステム結果として発生したのです。

それは次のように行われます。まず、クローズされた仮想取引すべての利益 Tх.PeriodRating が合計され、取得された値はトレードが行われた日数で除算されます。取得された値は オープンしているポジションすべての累乗利益ごとに加算され、ポジションがアクティブである日数で除算されます。

取得値が負であれば、ゼロに設定されます。 この操作は各 TS に対して行われます。

レーティングシステムは、Tх.Magic の初期パラメータ内のアクティブなトレーディングシステムに割り当てられたマジックナンバーによってトレーディングシステムごとに伝えます。それは利益の最大値によってもっとも収益性のある TS を検索し、このシステムに対して100%のレーティングを設定します。

その他 TS はすべて先導する TS のレーティングに相対的にレーティングが割り当てられます。 最後に3列のテーブルが作成されます。

マジック 履歴 レーティング( %)
1940.9
200.0
3313.6
41045.5
500.0
61777.3
700
81254.5
900.0
1022100.0

実取引中は、取得されるレーティング値は Tх.lot のベット額で掛けて100で割られます。この場合、ゼロより大きいレーティングを伴うトレーディングシステムはすべて実取引に参加することとなります。

主要なトレーディングシステムのみ実取引に参加させたい場合は、Competition_v1.0 Exper Advisor のパラメータを100に設定します。



おわりに

書かれている方法論は、利益を得ることを100%保証するものではありません。ただ、バランス曲線を平滑化することは保証します。すなわち、利益、ドローダウン、行うトレード数を減らすことは保証されます。プロフィットファクターの増加も、たぶん。

それがよいかどうかの判断はみなさん次第です。

Competition_v1.0.mq4 Expert Advisor のパラメータ表記:

  • RatingOn - レーティングの切り替え(無効になると、ファイル内のトレードは実トレードに適応します)
  • FastTest - 検証中仮想取引の配列の各変化でファイルを変更しません。
  • file -仮想取引のファイル(TerminalPath()+"\experts\files"フォルダに表示されます)
  • MinRating -実ポジションオープンに必要な最低レーティング(パーセント表示)
  • Tх.Enabled -TS 切り替え
  • Tх.Magic -マジックナンバー
  • Tх.lot -レーティングが100%のとき、取引に使用する最大ボリューム
  • Tх.Fast -高速 МА の期間
  • Tх.Slow -低速 МА の期間
  • Tх.SL -ポイント表示のストップロス
  • Tх.TS1 -ポイント表示の一度限りのトレーリングストップ(ストップロスを損益分岐レベルに移動します)k-even level)
  • Tх.TS -ポイント表示のトレーリングストップs
  • Tх.PeriodRating -レーティングの平均期間(履歴トレード数)
同様トピックへのリンク: https://www.mql5.com/ru/forum/118249

MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/1578

添付されたファイル |
RealTrend.mqh (8.17 KB)
VirtualTrend.mqh (36.03 KB)
ユニットテストの助けを借りたコードのクオリティー向上 ユニットテストの助けを借りたコードのクオリティー向上
シンプルなプログラムにさえ信じられないようなエラーがよくあるものです。「どうしてそんなふうになったんだろう?」というのが、そのようなエラーが明らかになったとき最初に思うことです「どうしたらエラーを出さずにすむのだろう?」というのは、あまり頻繁に心に浮かばない第2の問いです。完璧に欠点のないコードを作成するのは不可能です。特に大規模なプロジェクトでは。ですが、ちょうどよいタイミングでエラーを検出するために技術を利用できるものです。本稿では、一般的なユニットテスト方法の助けを借りてコードのクオリティーを向上する方法を説明します。
フィルターの魔法 フィルターの魔法
ほとんどの自動売買システム開発者はなんらかのトレードシグナルフィルター機能を利用しています。本稿では、帯域通過と Expert Advisor 用の個別フィルターの作成と実装を探り、自動売買システムの特性を向上させます。
グラフィカルインタフェース  II:ライブラリのイベントハンドラの設定(チャプター3) グラフィカルインタフェース II:ライブラリのイベントハンドラの設定(チャプター3)
以前の記事には、メインメニューの構成部分を作成するためのクラスの実装が含まれています。ここで、主要な基本クラスと作成されたコントロールのクラスでイベントハンドラを細かく見ることにします。また、マウスカーソルの位置に応じたチャートの状態の管理にも特別な注意が払われます。
ろうそく方向の統計的回帰研究 ろうそく方向の統計的回帰研究
やってくる短い時間間隔に対して、ろうそく足インディケータの定期的な傾向を基に、1日の特定時刻の市場動向を予想することは可能なのでしょうか?まず第一にそのような発生が検出されるなら、可能です。この疑問はおそらくどのトレーダーの心にも浮かんだことのあるものでしょう。本稿の目的は、ろうそく足の方向の統計的回帰に基づき、特定の時間間隔で市場動向の予想を試みることです。