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

what can be the proper way of strategies implementation in a trading client?

本文关键字:策略 方式 客户 交易 什么      更新时间:2023-10-16

这个问题需要一些算法交易和IB TWS API的知识。

我目前正在考虑如何实施许多策略的概念可以同时交易。我想知道我是否应该把他们都放在一个房间里客户机-或者可能使用一个客户机-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的同一个单一实例上运行带EPosixClientSocket指针的IB EWrapper的实现套接字)。

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

问得好。

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

看看算法交易框架AlgoTrader。

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

AlgoTrader有两个版本。

  • 您可以从这里免费下载的开源版本
  • 商业版本(包括支持和专业服务)可在此处获得