この質問には、アルゴリズム取引と IB TWS API に関するある程度の知識が必要です。
私は現在、同時に取引される可能性のある多くの戦略の概念を実装する方法を検討しています. それらすべてを単一のクライアントでホストする必要があるのか 、それとも1クライアント1アルゴアプローチを使用するべきなのか疑問に思います。唯一のクライアントで並行して実行される多くの戦略を選択した場合 (これは有益かもしれません)、どのパターンが最適な選択ですか?
現時点では、次のようなことを考えています。
1. GUI: I have i.e. buttons:
STRATEGY 1 -> start,stop,view status/details, etc.
STRATEGY 2 -> start,stop,view status/details, etc.
STRATEGY 3 -> start,stop,view status/details, etc.
各戦略は、いくつかの基本的な概念を実装するクラスです
class Strategy{ // Template method approach
public:
void start(); // uses subscribeData(), trade()
private:
virtual void subscribeData();
virtual void trade();
boost::shared_ptr<Model> model;
boost::shared_ptr<Data> data;
boost::shared_ptr<Statistics> stats;
};
したがって、実際の最も重要な部分はtrade()
メソッドで終了し、すべての戦略クラスは、ポインターを含む IB の実装の同じ単一のインスタンス (つまり、1 つのソケット) で動作しPosixClient
ます。EWrapper
EPosixClientSocket
これは正しいアプローチですか?私はリスク管理システム (アルゴリズムなど) の経験はありますが、商用取引システムの実装は見たことがありません。アドバイスをいただけますか?