記事「多通貨エキスパートアドバイザーの開発(第28回):決済マネージャの追加」についてのディスカッション

 

新しい記事「多通貨エキスパートアドバイザーの開発(第28回):決済マネージャの追加」はパブリッシュされました:

複数の戦略を並列で実行する場合、定期的にすべての未決済ポジションを決済し、戦略を最初から再開したい場合があります。しかし、現行のコードでは、この動作は手動でしか実現できません。そこで、この処理を自動化してみましょう。

第12回では、多通貨EAに、日次および全体のドローダウンを制限するためのリスクマネージャモジュールを追加しました。このモジュールは利益を増やすものではありませんが、不利な相場環境において資金を保護するために重要な役割を果たします。このモジュールは、プロップトレーディングのルールに基づいており、通貨単位、残高に対する割合、または当日の開始時点を基準としたドローダウンを柔軟に設定できます。

このモジュールはCVirtualRiskManagerクラスとして実装されており、残高や利益を追跡し、各種制限をチェックするためのメソッドを備えています。また、利益を確保して取引を停止する機能も提供しており、目標利益に到達すると、すべての未決済ポジションを決済して取引を停止します。

一般的な取引口座では、目標利益に到達した後、自動的に取引を再開できるほうが望ましいでしょう。しかし、現在はこの操作を手動でおこなう必要があります。そろそろこの部分も自動化すべきです。

目標利益に達した際に取引戦略を再開するにあたり、私は2つの選択肢を検討しました。

  1. 現在のリスクマネージャを拡張する

  2. 別のモジュールを作成する

今回は後者を採用しました。現在のリスクマネージャは戦略から独立して動作しており、実際のポジションのみを決済し、仮想ポジションには影響を与えません。このロジックを変更するとアーキテクチャが複雑になり、モジュール間の独立性も損なわれます。

また、リスクマネージャはテスト時の負荷も増加させます。そのため、新しい機能は別モジュールとして実装するほうが適切です。このモジュールは、リスクマネージャを使用していない環境でも利用できます。

新たな目標は、利益・損失・時刻などの指定した条件を満たした際に、取引履歴に依存することなく、手動操作も不要で、すべての戦略を再開できるモジュールを作成することです。この新しいモジュールを決済マネージャと呼ぶことにします。これは独立したオプションモジュールですが、追加によって結果が改善する可能性があります。また、実際のポジションと仮想ポジションを含む、すべての未決済ポジションを完全に決済する処理を管理します。


作者: Yuriy Bykov