最適化のためのカスタムフィットネス関数
cBotの最適化は、ライブ取引に展開する前にcBotの最適なパラメーター値を決定するプロセスです。 cTraderでは、利益の最大化や有効証拠金ドローダウンの最小化など、幅広い組み込み基準に対してcBotを最適化できます。 ただし、独自のフィットネス関数を記述して最適化することもできます。これは、cBotにカスタムパフォーマンス基準を適用したい場合に役立ちます。 この記事と対応する動画では、カスタムフィットネス関数の仕組みについて説明します。
なお、この記事では、組み込み基準を使用したcBotの最適化プロセスについては説明しません。
カスタムフィットネス関数を定義する
カスタムフィットネス関数は、GetFitness()メソッドのオーバーライドです。
1 2 3 4 | |
オーバーライドは、GetFitness argsタイプの単一の引数を受け入れる必要があり、これがカスタムフィットネス関数としてカウントされます。
カスタムフィットネス関数を記述する
GetFitness()メソッドはdoubleを返す必要があるため、メソッドの本体にはこのタイプの値を結果とする計算を含める必要があります。
たとえば、cBotが行った勝利取引の総数を2乗し、この値を損失取引の総値で割る簡単なカスタムフィットネス関数を記述できます。 これにより、勝利取引に重みをより多く割り当て、ある意味で最適化されたcBotにいくつかのリスクのあるプレイを許可します。
これがフィットネス関数の例です。
1 2 3 4 | |
この時点で、任意のcBotにオーバーライドを追加し、保存してビルドできます。
最適化でカスタムフィットネス関数を使用する
関数を追加した後、選択したcBotのインスタンスを追加し、バックテストタブに切り替える必要があります。 カスタム関数を使用して最適化を行うには、最適化基準セクションを開き、カスタムオプションを選択するだけです。 その後、通常通り最適化を実行できます。
最適化中、cBotが勝利取引数の2乗と損失取引数の比率を最大化したパスに高いフィットネススコアが割り当てられます。
カスタムフィットネス関数を変更する
カスタム関数に戻り、次のように変更することもできます。
1 2 3 4 5 6 7 8 9 10 11 | |
この関数は以前のアルゴリズムに従いますが、cBotが20回以上の取引を行った場合にのみカスタム計算を適用します。 それ以外の場合、関数は可能な限り低いdoubleを返します。 理論的には、これにより統計的バイアスの可能性を減らすことで結果が改善されるはずです。
ボットをリビルドして最適化を再度実行すると、cBotが行った総取引数が少ないため、いくつかのパスが非常に低いフィットネススコアを取得するはずです。
最後に、アクティブな取引を奨励しながら有効証拠金ドローダウンを最小化したいと考えています。
1 2 3 4 5 6 7 8 | |
再度最適化を実行すると、取引戦略に基づいて可能な限り最良のパスが表示されるはずです。
カスタムフィットネス関数は、独自の取引アプローチに適した最適なパラメーター値を決定するための優れたツールを提供します。