重新设计量化交易软件的思考

任何工程,可能都需要从需求出发,所以我在这里先把自己对量化交易软件的想法先理清晰。
其实,我觉得TB是挺好用的,就是有些思想受限制,不能自由发挥,而且行情数据比较慢(其实做中低频的策略也够用了),再一个就是策略的安全性(这个不好说),最后,就是收费的问题(加收25%,相对MC和文华来说,算是便宜的了。)
第一、希望软件做出来之后,支持多品种、多柜台的,例如期货(CTP/恒生),期权,股票(好像现在开放的接口不多),外汇,数字货币等。这就要求接口要统一起来。
第二、希望软件上面能给K线形式显示出来。这里有个开放的源代码,使用的是MFC平台下的,那么,K线数据结构就要参考源码中的Bar数据的结构,或者自己再把源代码修改修改来迎合自己的数据结构了。
第三、既然是要做量化的,肯定需要做的就是要支持量化策略自动运行。但是现在有可能是单一策略加载到多品种中,后续也有可能是每个品种需要加载的策略也是不一样的,所以现在就要决定清楚。
第四、之前做的程序都是结构式的,现在用于做服务的软件都要求多并发,所以我也想让自己的程序是多并发的,目前暂时参考VNPY的事件驱动机制。

由于上述的需求,现在目前在学习C++的设计模式,当前学到策略模式,觉得第一点有点头绪,于是写了个测试代码(附后),基本架构如图
在这里插入图片描述
代码:

#include <stdio.h>
#include <stdlib.h>


//业务逻辑中最顶层的抽象行情类
class MD
{
public:
	virtual void StartMd() = 0;     //纯虚函数,具体实现在子类中
};


class CCTPMd
{
public: 
	virtual void pri() {
		printf("This is CCTPMd");
	}
};

//业务逻辑中,针对CTP接口的行情实现
class CTPMd:public MD
{
public:
	void StartMd();     //具体实现,使用成员对象来实现具体算法流程
private:
	CCTPMd* m_CTPmd;    //此类对象继承于CTP的行情接口
};

void CTPMd::StartMd()
{
	m_CTPmd = new CCTPMd();
	m_CTPmd->pri();
}



void main()
{
	MD* md = new CTPMd();
	md->StartMd();
}

运行结果如下:
在这里插入图片描述
因为还是不断学习中,今天就写到这里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值