什么是交易客户中策略实施的正确方法?

时间:2013-05-24 00:19:43

标签: c++ algorithmic-trading

这个问题需要一些算法交易和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()方法结束 策略类在我的PosixClient的同一单个实例上运行 IB EWrapper的实现,其中带有EPosixClientSocket指针(所以一个 插座)。

这是正确的做法吗?我有风险管理系统(Algorithmics ie)的经验,但没有看到任何商业交易系统实施。你能提一些建议吗?

1 个答案:

答案 0 :(得分:0)

非常好的问题。

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

查看Algorithmic交易框架AlgoTrader。

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

AlgoTrader有两个版本。

  • 您可以从here
  • 免费下载的开源版本
  • 商业版(包括支持和专业服务)可用here