【量化】Python量化交易平台vnpy开发-汇总笔记

文章专栏:https://zhuanlan.zhihu.com/vn-py
开源代码:https://github.com/vnpy/vnpy
[5年前的文章]

0.引言

Python量化交易平台开发教程系列0-引言

1.类CTP交易API的工作原理

ython量化交易平台开发教程系列1-类CTP交易API的工作原理

2.类CTP交易API的Python封装设计

Python量化交易平台开发教程系列2-类CTP交易API的Python封装设计

3.vn.py项目中API封装的编译

Python量化交易平台开发教程系列3-vn.py项目中API封装的编译

4.事件驱动引擎原理和使用

前面的文章太底层,暂不考虑。
文章:Python量化交易平台开发教程系列4-事件驱动引擎原理和使用
(有点深度)

  • 时间驱动:每隔一段时间固定运行一次脚本。 | 处理延时在量化交易中的直接后果就是money:市价单滑点、限价单错过本可成交的价格。
  • 事件驱动:当某个新的事件被推送到程序中时,程序立即调用和这个事件相对应的处理函数进行相关的操作。 | 将所有的操作都写到一个回调函数中无疑变成了非常差的方案,可扩展性差,危险。
    驱动文件在vnpy/event/engine.py文件中.

5.底层接口对接

文章:Python量化交易平台开发教程系列5-底层接口对接
(有点难理解)
将某个API对接到我们的程序中,需要以下两步::
1,将API的回调函数收到的数据推送到程序的中层引擎中,等待处理
2,将API的主动函数进行一定的简化封装,便于中层引擎调用

6.中层引擎设计

文章:Python量化交易平台开发教程系列6-中层引擎设计
(这些文章有点老了,demo都不见了,没法测试和debug,看着难受,越来越不懂了,快放弃了)

7.顶层GUI界面开发(1)

Python量化交易平台开发教程系列7-顶层GUI界面开发(1)

8.顶层GUI界面开发(2)

Python量化交易平台开发教程系列8-顶层GUI界面开发(2)

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种非常流行的编程语言,也是量化交易领域中最常用的编程语言之一。Python具有易学易用、开源免费、生态丰富等优点,因此被广泛应用于量化交易系统的开发Python量化交易系统的开发主要包括以下几个方面: 1. 数据获取:量化交易系统需要获取各种市场数据,包括股票、期货、外汇等市场的实时行情数据、历史行情数据、财务数据等。Python提供了丰富的数据获取工具和库,如pandas-datareader、tushare等。 2. 数据处理:获取到的数据需要进行清洗、整理、计算等处理,以便后续的策略分析和回测。Python中的pandas、numpy等库提供了强大的数据处理功能,可以方便地进行数据清洗、整理和计算。 3. 策略设计:量化交易系统的核心是交易策略的设计。Python提供了丰富的科学计算库和机器学习库,如scikit-learn、TensorFlow等,可以方便地进行策略分析和设计。 4. 回测系统:回测是量化交易系统的重要组成部分,可以通过回测来验证交易策略的有效性。Python中的backtrader、zipline等库提供了强大的回测功能,可以方便地进行回测分析。 5. 交易执行:量化交易系统需要将交易策略转化为实际的交易指令,并通过API接口连接到交易所进行交易。Python中的vnpy、pyalgotrade等库提供了方便的交易执行功能。 以下是一个简单的Python量化交易策略示例,用于计算股票的移动平均线并进行交易决策: ```python import pandas as pd import numpy as np import talib import backtrader as bt class MyStrategy(bt.Strategy): params = ( ('maperiod', 15), ) def __init__(self): self.dataclose = self.datas[0].close self.order = None self.sma = bt.indicators.SimpleMovingAverage( self.datas[0], period=self.params.maperiod) def next(self): if self.order: return if not self.position: if self.dataclose[0] > self.sma[0]: self.order = self.buy() else: if self.dataclose[0] < self.sma[0]: self.order = self.sell() if __name__ == '__main__': cerebro = bt.Cerebro() cerebro.addstrategy(MyStrategy) data = bt.feeds.YahooFinanceData(dataname='AAPL', fromdate=datetime(2010, 1, 1), todate=datetime(2019, 1, 1)) cerebro.adddata(data) cerebro.run() ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值