2

这个问题需要一些算法交易和 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指针(所以一个套接字)。

这是正确的方法吗?我有风险管理系统(即算法)的经验,但还没有看到任何商业交易系统的实施。你能给点建议吗?

4

1 回答 1

0

非常好的问题。

我建议在自己的模块/客户端/JVM 中开发每个策略。

查看算法交易框架 AlgoTrader。

该框架允许您在单独的 JVM 中相互独立地开发/部署/启动/停止/更新策略。它们都位于所谓的 Base 之上,该 Base 负责市场数据连接、数据库的持久性以及向 Broker 下订单。不同的模块/策略甚至可以通过通用事件相互通信。

AlgoTrader 有两个版本可用。

于 2013-06-02T19:53:15.433 回答