cBotを最適化する方法

cTraderでは、注文保護レベルやデフォルトの注文量など、動作に影響を与えるさまざまなカスタマイズ可能なパラメーターを使用してcBotを作成できます。これにより、トレーダーがこれらのパラメーターの最適な値をどのように決定するかという疑問が生じます。幸いなことに、cTraderには最適化を処理できる組み込みツールがあり、トレーダーの貴重な時間を節約できます。

このユーザーガイドでは、cBotの最適化方法に焦点を当て、cBotの最適化がアルゴ開発者にとってなぜ重要であるかを示します。

cBotの最適化の仕組み

最適化は一連のバックテストと考えてください。各バックテストの「パス」は同じデータで行われますが、cBotにコーディングされたパラメーターの値が異なります。

例えば、短期/長期移動平均が逆の移動平均を交差する場合(例:短期移動平均が長期移動平均を交差する場合)に反応するcBotを考えてみましょう。cBotがどの期間のデータを受信するかをカスタマイズできるようにしたいとします。

したがって、cBotには次の2つのパラメーターが必要です。

1
2
3
4
5
[Parameter("Slow Periods", Group = "Moving Average", DefaultValue = 10)]
public int SlowPeriods { get; set; }
[Parameter("Fast Periods", Group = "Moving Average", DefaultValue = 5)]
public int FastPeriods { get; set; }

「最適な」パラメーター値を定義するには、cBotがさまざまな市場条件で、上記の2つのパラメーターに対してどのように機能するかを徹底的にテストする必要があります。これらのテストを手動で行うと、結果を解釈しやすいセットを提供せずに多くの時間がかかるでしょう。

幸いなことに、cTraderはこれらのテストを自動的に実行し、最終的にcBotが最良の結果を達成するための特定のパラメーター値を提供してくれます。このプロセスはcBotの最適化として知られています。

cBot最適化にアクセスする方法

cBot最適化にアクセスするには、次の操作を行います。

まず、最適化したいcBotのインスタンスを選択します。必要に応じて、「プラス」アイコンをクリックしてシンボルを選択するか、「三点リーダー」アイコンをクリックしてコンテキストメニューから「インスタンスを追加」を選択して新しいインスタンスを作成します。

その後、「最適化」タブに切り替えます。このタブは「バックテスト」タブの右側にあります。このタブの中央画面は次のようになります。

最適化設定とcBotパラメーターを構成する方法

最適化は一連のバックテストであるため、通常のバックテストと同じ設定を構成できます。これを行うには、「歯車」アイコンをクリックして、新しく開いたメニューで値を変更します。

cTraderが最適化する必要がある正確なパラメーターを選択するには、「歯車」アイコンの右側にある「パラメーター」ボタンをクリックします。

このサブセクションでは、各パラメーター名の左側にあるフラグを有効/無効にして、これらのパラメーターを最適化プロセスに含める/除外することができます。「タイムフレーム」パラメーターは、cBotの構成に関係なくすべてのcBotに存在します。

最適化により、cBotが起動時に考慮する短期および長期の最適な期間値を決定したいと考えています。ただし、他の移動平均タイプを試すことはまだ行いません。

最適化基準とアルゴリズムを定義する方法

cTraderが実行するバックテストパスの中から最適なパラメーター値を選択するために使用する正確な基準を決定することができます。

これを行うには、「上向きの線」アイコンで表される「基準」ボタンをクリックします。次のセクションが表示されます。

各基準の設定には2つのメニューが含まれています。左側のメニューで、その基準を最小化または最大化するかを選択します。右側のメニューで、事前定義されたオプションのセットから最小化または最大化する基準を選択します。新しい基準は「基準を追加」をクリックして追加できます。

上のスクリーンショットでは、cTraderがcBotの純利益と勝利取引数を最大化し、最大エクイティドローダウン率を最小化するように設定しています。

簡潔にするために、この記事ではカスタム最適化基準とGetFitness()メソッドについてはカバーしていません。詳細については、技術文書を参照してください。

特定の最適化アルゴリズムを選択するには、「基準」ボタンの右側にある「アルゴリズム」ボタンをクリックします。次のサブセクションが開きます。

徹底的な検索アルゴリズムは非常に正確ですが、リソースを多く消費します。「グリッド」オプションが選択されている場合、cTraderはすべての可能なパラメーター値のグリッドを作成し、それらをテストするために必要なすべてのバックテストを実行します。このプロセスは徹底的ですが、時間がかかることがあります。

幸いなことに、cTraderには「遺伝的アルゴリズム」オプションがあります。このアルゴリズムは、各パスを個体、cBotパラメーターを「遺伝子」、最適化基準への適応度を適応度として自然選択を模倣します。遺伝的アルゴリズムは、特定のパラメーター値に変更を加えることでcBotの効果が減少し始めることを検出すると停止します。

遺伝的アルゴリズムは徹底的な検索よりもリソースを少なく消費しながらも正確な結果を生成するため、この最適化方法を選択することをお勧めします。

リソースを割り当ててcBot最適化を実行する方法

cBot最適化を実行するには、cTraderがバックテストパスを実行するための履歴データの範囲を選択します。これを行うには、「最適化」タブの上部にあるカレンダースライダーまたはその左右のメニューを使用します。

最適化はリソースを多く消費するプロセスであり、完了するまでに時間がかかることがあります。結果を迅速に受け取りたいので、最適化期間として1年を選択します。

cTraderでは、最適化プロセスに割り当てるCPUリソースの正確な割合を決定することもできます。この設定をカスタマイズするには、左側の最も左のカレンダーメニューの左側にある「リソース」ボタンをクリックします。

新しく表示されたセクションで、スライダーをドラッグしてCPU消費量を増減させます。

リソースの割り当てが完了したら、最適化を進める準備が整います。これを行うには、右側のカレンダーメニューの右側にある「再生」ボタンをクリックします。cTraderが履歴データを読み込むと、最適化パスがリアルタイムで中央画面に追加されます。

グリッドの上部には、現在のパス数、経過時間、および残りの最適化時間も表示されます。

完了したパスは緑のチェックマークで表示されます。cBotがストップアウトに達したすべてのパスは、代わりに灰色のチェックマークで表示されます。

注意

最適化結果を保存および読み込むことができ、異なるデバイス間で持ち運ぶことができます。詳細については、こちらをクリックしてください。

最適化の結果を解釈して適用する方法

中央のグリッドには、各バックテストパスのメトリクスが表示されます。これには、cBotが行った勝利トレード数や最大エクイティドローダウン率が含まれます。

特に注目すべきは、「フィットネス」列です。これは、各パスが選択した最適化基準を最大化/最小化した程度を評価するメトリクスを表示します。高いフィットネススコアは、これらの基準に対する適合度が高いことを示します。

最も高いフィットネススコアを持つパスをすばやく選択するには、中央のグリッドの上にある「最適なパスを自動選択」フラグを有効にします。最適化が進行中であっても「最適なパスを自動選択」フラグを有効にでき、cTraderは最適なパラメーター値を動的に検索します。

フィットネス」列を見ると、パス番号33が他のすべてのパスと比較して最良のフィットネススコアを提供していることがわかります。

適用」をクリックすると、このパス中に使用されたパラメーター値がすぐにcBotインスタンスに適用されます。

スロー期間」と「ファースト期間」パラメーターのデフォルト値は、それぞれ10と5でした。

バックテストと同様に、「TradeWatch」ディスプレイは、特定のパス中にcBotが実行したアクションを要約するエクイティチャートと詳細な取引統計を提供します。エクイティチャートは、中央のグリッドから20の最良のパスに対してのみ表示されます。

バランス」と「エクイティ」ラインが着実に増加していることから、パス33がcBotが効果的に機能するために必要なパラメーター値を提供したことが強調されます。

まとめ

要約すると、cBotの最適化は、あなたの自動取引アドバイザーが正しく構成されていることを確認するための強力なツールです。異なる基準を使用して複数回の最適化を行い、自分で開発したcBotや他の開発者から取得したcBotに最適なパラメーター値がどれであるかを把握することを強くお勧めします。

私たちのYouTubeチャンネルに登録してください