コンテンツにスキップ

cBotを最適化する方法

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

このユーザーガイドでは、ユーザーがcBotを最適化する方法と、cBotの最適化がAlgo開発者にとってなぜ重要であるかを説明します。

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が起動時に考慮する低速および高速期間の最適な値を決定したいと考えます。 ただし、他の移動平均タイプを試すことはまだ望んでいません。

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

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

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

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

上記のスクリーンショットでは、cTraderに純利益とcBotが行う勝利取引の数を最大化させたいと考えています。 同時に、最大有効証拠金ドローダウンパーセンテージを最小化したいと考えています。

簡潔にするため、この記事ではカスタム最適化基準とGetFitness()メソッドについては説明しません。 これらについて詳しく知りたい場合は、技術ドキュメントを参照してください。

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

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

幸いなことに、cTraderには遺伝的アルゴリズムオプションが含まれています。 このアルゴリズムは、各パスを個体、cBotパラメーターを遺伝子、最適化基準への適合度を適応度として見なすことで、自然選択を模倣します。 遺伝的アルゴリズムは、特定のパラメーター値を変更してもcBotの有効性に対する収益が逓減すると検出した時点で停止します。

遺伝的アルゴリズムは網羅的検索よりもリソースを消費せず、それでも正確な結果を生成するため、この最適化方法を選択することをお勧めします。

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

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

最適化はリソースを大量に消費するプロセスであり、完了までに時間がかかる場合があることに注意してください。 結果を比較的早く得たいため、最適化期間として1年を選択します。

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

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

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

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

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

注意

最適化結果を保存および読み込むことができ、これにより異なるデバイス間で最適化結果を引き継ぐことができます。

最適化結果の解釈と適用

中央のグリッドには、cTraderが各バックテストパスのいくつかのメトリクスを表示します。これには、cBotが行った勝ちトレードの数と最大の有効証拠金ドローダウンパーセンテージが含まれます。

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

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

フィットネス列で確認できるように、パス番号33は他のすべてのパスと比較して最高のフィットネススコアを提供しました。

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

Slow periodsFast periodsパラメータのデフォルト値は、それぞれ10と5でした。

バックテストの場合と同様に、トレードウォッチ表示には、特定のパス中にcBotが実行したアクションを要約した有効証拠金チャートと詳細な取引統計が表示されます。 有効証拠金チャートは、中央グリッドの上位20パスに対してのみ表示されることに注意してください。

着実に増加する口座残高有効証拠金のラインは、パス33がcBotが効果的に機能するために必要なパラメータ値を提供したことを裏付けています。

概要

簡単に言えば、cBotの最適化は、自動取引アドバイザーが適切に設定されていることを保証するための強力なツールです。 異なる基準で複数回の最適化を実施し、自分で開発したcBotや他の開発者から取得したcBotに最適なパラメータ値を把握することを強くお勧めします。