这个问题需要一些算法交易和 IB TWS API 的知识。
我目前正在考虑如何实现可以同时交易的许多策略的概念。我想知道我是否应该将它们全部托管在一个客户端中 - 或者可能使用 1 client-1 algo 方法。如果我选择在我的唯一一个客户端中并行运行许多策略(这可能是有益的),那么哪种模式是最佳选择?
目前我正在考虑这样的事情:
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()
方法中结束,所有策略类都在我PosixClient
的 IB 实现的同一个实例上运行,EWrapper
其中包含EPosixClientSocket
指针(所以一个套接字)。
这是正确的方法吗?我有风险管理系统(即算法)的经验,但还没有看到任何商业交易系统的实施。你能给点建议吗?