开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (5)
标签 (2)
master
astar-dev
ds
event_driven
gh-pages
v0.2.0
v0.15
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
贡献代码
同步代码
对比差异 通过 Pull Request 同步
同步更新到分支
通过 Pull Request 同步
将会在向当前分支创建一个 Pull
Request,合入后将完成同步
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

QuantDigger 0.4.4

QuantDigger是一个基于python的量化回测框架。它借鉴了主流商业软件(比如TB, 金字塔)简洁的策略语法,同时 避免了它们内置编程语言的局限性,使用通用语言python做为策略开发工具。和 pyalgotrade 相比, QuantDigger的策略语法更接近策略开发人员的习惯。目前的功能包括:股票回测,期货回测。 支持选股,套利,择时, 组合策略。自带了一个基于matplotlib编写的简单的策略和k线显示界面,能满足广大量化爱好者 基本的回测需求。设计上也兼顾了实盘交易,未来如果有时间,也会加入交易接口。开发人员都是量化爱好者,也欢迎感兴趣的新朋友加入开发, 我的QQ交流群:334555399。

除了开发人员,也特别感谢以下朋友给的建议:

北京的 tushare 库的作者 http://www.quantfans.org

安装 ---

克隆github代码后本地安装(推荐)

git clone https://github.com/QuantFans/quantdigger.git
python setupscripts\install.py (会根据情况安装pip, 及依赖包)

依赖库

  • matplotlib
  • numpy
  • logbook
  • pandas
  • progressbar
  • python-dateutil
  • pyqt (可选)
  • Python (2.7.8+, 暂不支持3.x)
  • http://pypi.douban.com/simple --trusted-host pypi.douban.com

    策略组合DEMO

    源码

    #from quantdigger.engine.series import NumberSeries
    #from quantdigger.indicators.common import MA
    #from quantdigger.util import pcontract
    from quantdigger import *
    
    class DemoStrategy(Strategy):
     """ 策略A1 """
    
     def on_init(self, ctx):
     """初始化数据"""
     ctx.ma10 = MA(ctx.close, 10, 'ma10', 'y', 2)
     ctx.ma20 = MA(ctx.close, 20, 'ma20', 'b', 2)
    
     def on_symbol(self, ctx):
     """ 选股 """
     return
    
     def on_bar(self, ctx):
     if ctx.curbar > 20:
     if ctx.ma10[2] < ctx.ma20[2] and ctx.ma10[1] > ctx.ma20[1]:
     ctx.buy(ctx.close, 1)
     elif ctx.pos() > 0 and ctx.ma10[2] > ctx.ma20[2] and \
     ctx.ma10[1] < ctx.ma20[1]:
     ctx.sell(ctx.close, ctx.pos())
    
     def on_exit(self, ctx):
     return
    
    class DemoStrategy2(Strategy):
     """ 策略A2 """
    
     def on_init(self, ctx):
     """初始化数据"""
     ctx.ma5 = MA(ctx.close, 5, 'ma5', 'y', 2)
     ctx.ma10 = MA(ctx.close, 10, 'ma10', 'black', 2)
    
     def on_symbol(self, ctx):
     """ 选股 """
     return
    
     def on_bar(self, ctx):
     if ctx.curbar > 10:
     if ctx.ma5[2] < ctx.ma10[2] and ctx.ma5[1] > ctx.ma10[1]:
     ctx.buy(ctx.close, 1)
     elif ctx.pos() > 0 and ctx.ma5[2] > ctx.ma10[2] and \
     ctx.ma5[1] < ctx.ma10[1]:
     ctx.sell(ctx.close, ctx.pos())
    
     def on_exit(self, ctx):
     return
    
    if __name__ == '__main__':
     set_symbols(['BB.SHFE-1.Minute'], 0)
     # 创建组合策略
     # 初始资金5000, 两个策略的资金配比为0.2:0.8
     profile = add_strategy([DemoStrategy('A1'), DemoStrategy2('A2')], { 'captial': 5000,
     'ratio': [0.2, 0.8] })
     run()
    
     # 绘制k线,交易信号线
     from quantdigger.digger import finance, plotting
     plotting.plot_strategy(profile.data(0), profile.indicators(1), profile.deals(1))
     # 绘制策略A1, 策略A2, 组合的资金曲线
     curve0 = finance.create_equity_curve(profile.all_holdings(0))
     curve1 = finance.create_equity_curve(profile.all_holdings(1))
     curve = finance.create_equity_curve(profile.all_holdings())
     plotting.plot_curves([curve0.equity, curve1.equity, curve.equity],
     colors=['r', 'g', 'b'],
     names=[profile.name(0), profile.name(1), 'A0'])
     # 绘制净值曲线
     plotting.plot_curves([curve.networth])
     # 打印统计信息
     print finance.summary_stats(curve, 252*4*60)
    

    策略结果

    • k线和信号线

    k线显示使用了系统自带的一个联动窗口控件,由蓝色的滑块控制显示区域,可以通过鼠标拖拽改变显示区域。 上下方向键 来进行缩放。

    images/plot.png
    • 2个策略和组合的资金曲线。

      images/figure_money.png
    • 组合的历史净值

      images/figure_networth.png
    • 统计结果

    >>> [('Total Return', '-0.99%'), ('Sharpe Ratio', '-5.10'), ('Max Drawdown', '1.72%'), ('Drawdown Duration', '3568')]
    

    界面控制

    其它 ~~~

    pyquant.py 基于pyqt, 集成了ipython和matplotlib的demo。
    images/pyquant.png

    版本 ~~~

    TODO

    • 清理旧代码和数据文件
    • 改善UI, 补充UI文档

    0.3.0 版本 2015年12月09日

    • 重新设计回测引擎, 支持组合回测,选股
    • 重构数据模块

    0.2.0 版本 2015年08月18日

    • 修复股票回测的破产bug
    • 修复回测权益计算bug
    • 交易信号对的计算从回测代码中分离
    • 把回测金融指标移到digger/finace
    • 添加部分数据结构,添加部分数据结构字段
    • 添加几个mongodb相关的函数

    0.15版本 2015年06月16日

    • 夸品种的策略回测功能
    • 简单的交互
    • 指标,k线绘制
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

基于python的量化交易平台
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/a_star/quantdigger.git
git@gitee.com:a_star/quantdigger.git
a_star
quantdigger
quantdigger
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /