用 Python 写了个简单的股票量化交易框架

本文介绍了一个基于Python的简单股票量化交易框架,集成了easytrader和easyquotation库,支持实时行情获取及自动交易功能。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

摘抄他人的文章,方便存个底。


集成了以前写的 [easytrader]( http://github.com/shidenggui/easytrader ) 和 [easyquotation](https:// github.com/shidenggui/easyquotation )

[Github 地址](https://github.com/shidenggui/easyquant) 欢迎 `star` 和 `fork`

因为行情的获取用到了 `async / await` 所以暂时只支持 `Python3.5`

交易

支持 佣金宝 和 华泰 两家券商的自动登录和买卖。

行情

使用的是新浪的免费行情,大概一秒钟推送一次 所有的 3000 多只股票的实时数据。
也可以自己引入 tushare 这个免费的财经信息获取包 或者 引入 wind

策略

其中的事件驱动引擎 和 策略模板 是模仿的 vnpy 的框架

编写非常简单,因为功能比较有限。可以查看下面的 `策略_Demo1`

```
引入策略模板
from easyquant import StrategyTemplate


class Strategy(StrategyTemplate):
    # 主要实现下面这个 `strategy` 函数就可以了
    def strategy(self, event):
        """:param event event.data 为所有股票的信息,结构如下
        {'162411':
        {'ask1': '0.493',
         'ask1_volume': '75500',
         'ask2': '0.494',
         'ask2_volume': '7699281',
         'ask3': '0.495',
         'ask3_volume': '2262666',
         'ask4': '0.496',
         'ask4_volume': '1579300',
         'ask5': '0.497',
         'ask5_volume': '901600',
         'bid1': '0.492',
         'bid1_volume': '10765200',
         'bid2': '0.491',
         'bid2_volume': '9031600',
         'bid3': '0.490',
         'bid3_volume': '16784100',
         'bid4': '0.489',
         'bid4_volume': '10049000',
         'bid5': '0.488',
         'bid5_volume': '3572800',
         'buy': '0.492',
         'close': '0.499',
         'high': '0.494',
         'low': '0.489',
         'name': '华宝油气',
         'now': '0.493',
         'open': '0.490',
         'sell': '0.493',
         'turnover': '420004912',
         'volume': '206390073.351'}}
        """
        # 使用 self.user 来操作账户,使用 self.user.buy() / self.user.sell() 来买卖,用法同 easytrader 用法
        # 使用 self.log.info('message') 来打印你所需要的 log
        print('\n\n策略1触发')
        print('行情数据: 万科价格: ', event.data['000002'])
        print('检查持仓')
        print(self.user.balance)
        print('\n')
```

Demo

运行之后基本是下面这样

```
启动主引擎
[2015-12-28 14:05:36.649599] INFO: main_engine.py: 加载策略: 策略 1_Demo
[2015-12-28 14:05:36.650250] INFO: main_engine.py: 加载策略: 策略 2_Demo
[2015-12-28 14:05:36.650713] INFO: main_engine.py: 加载策略完毕


触发每秒定时计时器

策略 1 触发

行情数据: 万科价格:  {'ask4': 0.0, 'ask1': 0.0, 'bid2_volume': 0, 'bid3': 0.0, 'bid5_volume': 0, 'name': '万  科A', 'ask4_volume': 0, 'close': 24.43, 'volume': 0.0, 'ask3_volume': 0, 'bid5': 0.0, 'bid1': 0.0, 'ask2': 0.0, 'bid4_volume': 0, 'high': 0.0, 'ask5': 0.0, 'bid4': 0.0, 'ask5_volume': 0, 'turnover': 0, 'ask2_volume': 0, 'sell': 0.0, 'open': 0.0, 'bid3_volume': 0, 'bid2': 0.0, 'bid1_volume': 0, 'buy': 0.0, 'ask3': 0.0, 'low': 0.0, 'now': 0.0, 'ask1_volume': 0}
检查持仓
[{'asset_balance': 2758.98, 'market_value': 2740.9, 'enable_balance': 18.08, 'current_balance': 18.08, 'money_name': '人民币', 'fetch_balance': 18.08, 'money_type': '0'}]


策略 2 触发
行情数据: 华宝油气 {'ask4': 0.5, 'ask1': 0.497, 'bid2_volume': 4594100, 'bid3': 0.494, 'bid5_volume': 851300, 'name': '华宝油气', 'ask4_volume': 15650706, 'close': 0.5, 'volume': 138149552.799, 'ask3_volume': 19611307, 'bid5': 0.492, 'bid1': 0.496, 'ask2': 0.498, 'bid4_volume': 313700, 'high': 0.501, 'ask5': 0.501, 'bid4': 0.493, 'ask5_volume': 10108300, 'turnover': 277462973, 'ask2_volume': 10747730, 'sell': 0.497, 'open': 0.5, 'bid3_volume': 997500, 'bid2': 0.495, 'bid1_volume': 5507952, 'buy': 0.496, 'ask3': 0.499, 'low': 0.495, 'now': 0.497, 'ask1_volume': 14948518}
检查持仓
[{'asset_balance': 2758.98, 'market_value': 2740.9, 'enable_balance': 18.08, 'current_balance': 18.08, 'money_name': '人民币', 'fetch_balance': 18.08, 'money_type': '0'}]
```

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

## 讲师介绍: 近 5 年个人投资理财年化收益平均超 25%。如果你也想提升自己的睡后收入,轻松赚钱,那么这门课就是为你量身打造。课程基于一个完整真实的量化交易业务来讲授,并融入老师的理财经验以及使用编程技术辅助投资的技巧,让你面对各种复杂投资情况也能做到游刃有余。 ## 学习目标: 从不懂“理财”开始到实现自动交易,成为一个“技术流”理财高手 编程技术 + 核心量化策略 + 交易系统开发 + 讲师经验分享,学会用技术辅助理财 本课程从最基础的什么是量化开始讲起,即使对投资理财不了解同样可以学习,轻松入门无压力。 从如何获取数据开始,到实现实盘交易,课程对量化交易的每一步都进行细致讲解,为你铺开量化交易的每一个细节。 不仅仅只是教你学会使用某种工具,更会教给你量化交易的投资思想,让你面对各种情况都游刃有余。 ## 课程亮点: 设计适合自己并能适应市场的交易策略,才是量化交易的灵魂 课程亲手带你设计并实现两种交易策略,快速培养你的策略思维能力 1. 择时策略:通过这个策略学会如何利用均线,创建择时策略,优化股票买入卖出的时间点。2. 选股策略:掌握选股策略的核心逻辑,并基于收益率创建动量选股策略,并验证其有效性。 手把手带你打造一个易扩展、更安、效率更高的量化交易系统 第三方平台大而,不易扩展,效率还差,信息安也是大问题,打造自己的交易平台才是更优解
EasyQuant 是一款基于 Easytrader 与 Easyquotation 两大开源组件构建的自动化交易系统框架,其事件驱动引擎的设计借鉴了成熟架构。该框架交易执行层面兼容华泰证券、佣金宝、银河证券以及雪球模拟交易账户;在行情数据获取方面,默认接入新浪财经提供的市场实时推送服务,更新频率为每秒一次,同时支持集成来自集思路平台的分级基金行情数据以及 Leverfun 提供的十档盘口深度信息。 用户需在对应的配置文件内预先设置交易账户参数,随后可通过运行测试脚本快速验证环境配置。策略开发采用模块化设计,用户需在指定目录下编 Python 策略类,继承内置的策略模板基类。每个策略需定义唯一名称,并通过重事件处理函数实现核心逻辑。当行情事件触发时,系统将自动调用策略函数并传入包含市场证券代码与多层报价字段的标准化数据字典,其中涵盖买卖五档挂单量、最新成交价、当日开盘最高最低价、成交量及换手率等关键字段。 该框架通过分离交易接口、行情源与策略逻辑,实现了高内聚低耦合的系统架构,便于开发者专注于策略模型构建与回测验证。所有外部依赖组件均遵循开源协议,用户可根据实际需求灵活替换数据源或扩展交易通道。策略文件需遵循预定义的类结构规范,通过事件响应机制实现实时行情处理与交易指令生成。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值