如何建立一个基于事件驱动的全自动化交易系统

3 篇文章 0 订阅
2 篇文章 0 订阅
对于量化交易的初学者,建议读读 Ernie P. Chan的书籍: Quantitative Trading: How to build your own algorithmic trading business,这本书是基础。

量化交易系统可以分为半自动化交易和完全自动化交易两种,半自动化系统适合一个星期有几笔交易,推荐使用 Matlab, R语言, 甚至是Excel,具体建议如下:

  • 可以忽略Matlab, 它会带来很多金钱上的成本,并没有许多训练材料如博客或书籍教会你如何使用Matlab编码交易策略。
  • R语言有不少资源可以用来学习如何构建交易策略,推荐阅读:QuantStratTradeR  run by Ilya Kipnis.
  • 如果你没有编程经验,可以使用Microsoft Excel,能够使用Excel进行半自动化交易,但是不能帮助你建立一个完整的交易技术体系。

  下图是半自动化交易框架:

trading

  对于完全自动化交易系统,适合你实时下单,可以使用C#语言,QuantConnect也是使用C#,QuantStart 和Quantopian 使用的是Python,HFT更喜欢使用C++,当然Java也很流行。

自动化交易系统

 

系统架构

  在课程Executive Program in Algorithmic Trading 中,会告诉你一个全自动化交易系统的架构以及其中每个组件的特点,见下图:

全自动化交易系统的架构

  整个架构分三个部分,Application Server和Exchange,核心是复杂的事件处理引擎,市场数据输入到事件处理引擎,由引擎向交易所发出买卖交易。

  下图是来自于 “Algorithmic Trading System Architecture” By: Stuart Gordon Reid:

系统架构

  在系统的界面层使用的是MVC模式和观察者模式,业务层分为数据源层 数据预处理层和智能层以及订单处理层,最后是报表分析层。在数据预处理层,可以使用过滤器等模式进行数据的预先处理,业务核心是CEP事件驱动引擎。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
# flea-market #### 项目介绍 1. 这是一个二手商品交易网站,也可以称之为跳蚤市场; 2. 支持用户上传自己的二手物品【基本信息和照片】; 3. 用户或游客可以搜索并查看所有人发布的二手商品; 4. 部分功能只有登录后才能使用如自身商品的管理,二手商品的发布,交易记录的查询等; 5. 简单的查询过滤功能 #### 技术路线 > 项目是基于python的Django框架开发的,Django是一个开源的Web应用框架,由Python写成,采用了MVC的框架模式;Django的主要目的是简便、 快速的开发数据库驱动的网站,强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django自带有orm,模板渲染引擎及简单的后台管理功能。 项目使用传统的关系型数据库mysql做数据的存储,数据库设计方面分为四张表,分别是用户表,商品表,商品发布表,商品购买表以及表与表之间的关联,前端UI 界面展示使用bootstrap框架,整个系统的实现功能模块主要有:用户的注册与登录、商品的发布与管理、所有商品的浏览、不同商品对应的详情信息展示、用 户的购买行为以及买卖双方交易记录的查询等。 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
编写基于事件驱动的量化交易框架,可以使用Python中的`asyncio`和`asyncio.Queue`来实现。 下面是一个简单的示例代码,用于说明如何设计一个基于事件驱动的量化交易框架: ```python import asyncio class Event: def __init__(self, event_type, data=None): self.type = event_type self.data = data class EventHandler: def __init__(self, loop): self.loop = loop self.queue = asyncio.Queue() async def subscribe(self, event_type, callback): while True: event = await self.queue.get() if event.type == event_type: callback(event) def publish(self, event): self.loop.create_task(self.queue.put(event)) class MarketDataHandler(EventHandler): def __init__(self, loop): super().__init__(loop) async def fetch_market_data(self, symbol): # 从交易所获取行情数据 data = await self.get_market_data(symbol) event = Event('market_data', data) self.publish(event) async def get_market_data(self, symbol): # 从交易所获取行情数据的具体实现 pass class TradingStrategy: def __init__(self, loop, market_data_handler): self.loop = loop self.market_data_handler = market_data_handler async def trade(self, symbol): # 实现交易策略的代码 pass class TradeExecutionHandler(EventHandler): def __init__(self, loop): super().__init__(loop) async def execute_trade(self, order): # 执行交易的代码 pass if __name__ == '__main__': loop = asyncio.get_event_loop() market_data_handler = MarketDataHandler(loop) trading_strategy = TradingStrategy(loop, market_data_handler) trade_execution_handler = TradeExecutionHandler(loop) loop.create_task(market_data_handler.fetch_market_data('AAPL')) loop.create_task(trading_strategy.trade('AAPL')) market_data_handler.subscribe('market_data', trading_strategy.on_market_data) trading_strategy.subscribe('order', trade_execution_handler.execute_trade) loop.run_forever() ``` 在这个示例代码中,我们设计了3个事件处理器: - `MarketDataHandler`,用于获取市场数据并发布事件。 - `TradingStrategy`,用于实现交易策略,并订阅市场数据事件。 - `TradeExecutionHandler`,用于执行交易并订阅交易指令事件。 我们使用`asyncio.Queue`来实现事件队列,并使用`asyncio`来实现协程。事件处理器可以通过订阅事件来接收数据,也可以通过发布事件来发送数据。 在`__main__`函数中,我们创建了3个事件处理器,并使用`loop.create_task`来启动它们的任务。我们还使用`subscribe`方法来订阅事件,并使用`run_forever`方法来启动事件循环。 这只是一个简单的示例代码,实际的量化交易框架需要更复杂的设计和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值