記事「多通貨エキスパートアドバイザーの開発(第6回):インスタンスグループ選択の自動化」についてのディスカッション

 

新しい記事「多通貨エキスパートアドバイザーの開発(第6回):インスタンスグループ選択の自動化」はパブリッシュされました:

取引戦略を最適化した後、パラメータのセットを受け取ります。これらを使用して、1つのEAに複数の取引戦略のインスタンスを作成することができます。以前は手動でおこないましたが、ここでは、このプロセスの自動化を試みます。

前回の記事では、戦略のオプションとして、ポジションサイズを一定にする方法と可変にする方法を選択できるようにしました。これによって、戦略の結果を最大ドローダウンに従って正規化することができ、最大ドローダウンも指定された範囲内にあるグループにまとめることができるようになりました。デモンストレーションのために、1つの戦略インスタンスの最適化結果から、最も魅力的な入力の組み合わせを手作業でいくつか選び、それらを1つのグループ、あるいは3つの戦略からなる3つのグループにまとめることを試みました。後者のケースで最高の結果を得ました。

しかし、グループ内の戦略の数を増やし、異なるグループの組み合わせ数を増やす必要がある場合、ルーチンの手作業が大幅に増えます。 

まず、各銘柄について異なる最適化基準で戦略の単一インスタンスを最適化する必要があります。さらに、各銘柄について、異なる時間枠に対して個別に最適化をおこなう必要がある場合もあります。私たちの特定のモデル戦略では、出した注文のタイプ(ストップ、リミット、成り行きポジション)別に最適化を実行することもできます。

第二に、結果として得られた約2~5万個のパラメータから、少数(10~20個)の最適なものを選択する必要があります。ただし、これらは単独で最良であるだけではなく、グループで連携されるべきです。戦略のインスタンスを1つずつ選んで追加していくのも、時間と忍耐が必要です。

第三に、得られたグループを順次上位グループに統合し、標準化を実施します。これを手作業でやると、2、3レベルしか出せません。これ以上のグループ分けは手間がかかりすぎるように思えます。

作者: Yuriy Bykov

 

ありがとう!:)

 

素晴らしい記事とシステムだ :)

- それぞれに対して最小-最大スケーリングを適用し、[0; 1]の範囲になるようにします。接尾辞'_s'で追加のカラムを取得 します、

ユーリ、どうやったんだい?exelで検索しましたが、関数の中にそのようなものは見当たりませんでした。自分で計算式を書いたのですか?エクセルでクエリの最小-最大スケーリングをググっても、普通のものは出てこなかった...。

 
Viktor Kudriavtsev #:

素晴らしい記事とシステムだ。)

- それぞれに対して最小から最大のスケーリングを適用し、[0; 1]の範囲になるようにします。接尾辞'_s'を持つカラムが追加されます

ユーリ、どうやったんだ?exelで検索しましたが、そのような関数は見当たりませんでした。

Victorさん、ご意見ありがとうございます!

僕もエクセルの特別な関数は知らないんだ:

 
Yuriy Bykov #:

ビクター、フィードバックありがとう!

私もエクセルの特別な関数は知りません:

ユーリ、ありがとう。

でも、ProfitExpected PayoffProfit FactorRecovery FactorSharpe RatioEquity DD%、Trades、に_を付けて列を追加すると書いてありましたね。どのような順序で追加すればうまくいくのでしょうか?元の列の後にそれぞれの列を追加するのか、それともテーブルの最後にすべて追加するのか。既に編集されたテーブルから行うように、列名のスクリーンショットを作成するか、サンプルとして既に編集された小さなファイルを添付してください。

また、Expert Advisorを最適化する際、複雑な基準を設定するのでしょうか、それとも単にバランス最大値を設定するのでしょうか?試してみたところ、5年間で100-180トレード程度と、あまり多くないトレード数が見つかりました。

また、EAがシグナルを読み取り、指定されたタイムフレームで新しいバーのオープニングで取引を開始するようにしたいのですが、現在動作しているようにティックごとに取引を伴います。このように動作させるには、新しいバーの発生をチェックする機能をどこに追加すればよいでしょうか?

 

足し算の順序が重要なのは、いかに速く行うかという点だけである。表の最後にこれらの列を追加し(AC:AI列)、次にいくつかの新しい列で偏差を計算し(AJ: AP)、AQでAJ:APを 合計し、ARで最大スケーリングファクターScaleを求め、ASで比率Res = AR/AQを計算 する方が早かった。これでソートするには、ASの値のみを新しいAT列にコピーする必要があります。例を添付します。

複雑な基準で最適化を開始し、次に他のすべての基準で最適化を行う。案件の数は、比較的少ないものも含め、さまざまです。それはSLとTPレベルの大きさによります。

次回は、新しいバーをチェックする機能と、そこでの適用方法についてお話しする予定です。

ファイル:
 
Yuriy Bykov 案件の数は、比較的少ないものも含め、さまざまです。それはSLとTPレベルの大きさによります。

次回は、新しいバーをチェックする機能と、そこでの適用方法についてお話しする予定です。

ユーリさん、テーブルの例をありがとうございます。前回の記事(7)のものだと理解していますので、それも役に立つと思いますが、この記事(6)のOptGroupClusterExpert.mq5 Expert Advisorの入力にフィードするテーブルの例をお聞きしました。私の理解では、このテーブルは Params_SV_EURGBP_H1-with_cluster.csv と Params_SV_EURGBP_H1.csv と呼ばれています。それが私がお尋ねしたものです。例としてこれらのテーブルを添付してください。

次の記事について!待ちましょう:)もしストラテジーに、各ストラテジーの時間フィルター(取引期間の開始時間と終了時間を指定)とインジケーターのフィルター(2-3個)を追加できたら、市場全体を取引するための素晴らしいEAになると思います :).

 

ビクター、確かに、前のテーブルの例では少し先走りすぎた。

CSVファイルに数式が含まれなくなるので、Params_SV_EURGBP_H1.xlsxの 例を添付しました。CSVファイルに保存する必要がありますが、Excelが区切り文字として';'を使用している場合は、CSVファイル全体で';'を','に置き換える必要があります。Params_SV_EURGBP_H1-with_cluster.csv ファイルは、記事中にあるParams_SV_EURGBP_H1.csv から Python コードを使用して自動的に取得されます。

時間フィルタ と追加指標を追加することに関して:使用されているアーキテクチャはそれを可能にします - あなたは任意のフィルタと指標を持つ取引戦略の新しいクラス(CVirtualStrategyの後継)を作成することができます。私自身は時間フィルターを使うつもりはありません。時間制約を導入することで取引結果を改善できたことがないからです。一つのストラテジーで多くのインディケータを使うつもりはありません。なぜなら、入力シグナルの強力なフィルタリングは私にとってそれほど重要ではないからです。例えば、1つずつ異なるインディケータを使用するストラテジーのインスタンスをいくつか組み合わせることで、間接的に得ることができます。

ファイル:
 
こんにちは。