Metadata-Version: 1.1
Name: QuantDigger
Version: 0.4.4
Summary: 量化交易Python回测系统
Home-page: https://github.com/QuantFans/quantdigger
Author: QuantFans
Author-email: dingjie.wang@foxmail.com
License: MIT
Description: QuantDigger 0.4.0
        ==================
        
        QuantDigger目前是一个基于python的量化回测框架。作者最初是因为对数据处理和机器学习感兴趣而选择了这个行业，
        接触了一些主流的期货交易软件，比如TB, 金字塔。他们的特点是语法比较简单，缺点是编程语言太封闭，有很多表达限制。
        所以选择自己开发一个交易系统，做为交易和研究的工具，甚至尝试过商业化。最初选择c++做为实现语言，但是后面
        发现开发效率太低，重要的是做为研究工具来说，其易用性和和扩展性都比不上基于python的回测框架。相比其它流行的
        回测框架比如 zipline_ , pyalgotrade_ ，QuantDigger的策略语法更简单，类似MC，TB这些商业软件，但并不牺牲灵活性，保留了python这门通用语言的
        所有功能。QuantDigger目前还是定位于研究工具，但是设计上还是会从实盘交易的角度考虑，将来也会接入交易接口。虽然有很多细节还有待完善， 
        但是核心的设计和功能已经实现了。代码也比较简单，大家有兴趣的可以自己拓展。 如果大家有什么问题和建议，欢迎加入我们的QQ交流群--334555399，或者
        联系发起者(yellowblue QQ:33830957) 。 在项目的推进过程中得到很多朋友的帮助, 在这表示感谢！
        除了开发人员，还要特别感谢北京的 vodkabuaa_ 和国元证券的王林峰给出的意见， ongbe_ 帮忙修复代码bug， tushare_ 库的作者 Jimmy_ 和深大的邓志浩帮忙推荐
        这个库，以及所有朋友的支持。
        
        
        文档
        ---
        http://www.quantfans.org
        
        
        安装
        ---
        
        pip安装
           
          ::
               
              按照指示安装ta-lib动态库: https://github.com/mrjbq7/ta-lib
              pip install quantdigger
        
        或者克隆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**)
        * tushare_ (可选, 一个非常强大的股票信息抓取工具)
        * TA-Lib
        
        * 如果要安装tushare必须先安装`lxml`库, `pip install lxml --upgrade`.
        
        如果出现pypi源超时情况,可以通过命令方式进行安装依赖库:
        
             pip2 -r requirements/requirements.txt --upgrade -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
        
        
        
        策略组合DEMO
        -----------
        
        源码
        ~~~~
        
        .. code:: py
        
        
            #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.position() > 0 and ctx.ma10[2] > ctx.ma20[2] and \
                             ctx.ma10[1] < ctx.ma20[1]:
                            ctx.sell(ctx.close, ctx.position()) 
        
                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.position() > 0 and ctx.ma5[2] > ctx.ma10[2] and \
                             ctx.ma5[1] < ctx.ma10[1]:
                            ctx.sell(ctx.close, ctx.position()) 
        
                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线和信号线
        
          .. image:: images/figure_signal.png
             :width: 500px
        
        * 2个策略和组合的资金曲线。
          
          .. image:: images/figure_money.png
             :width: 500px
        
        * 组合的历史净值
          
          .. image:: images/figure_networth.png
             :width: 500px
        
        * 统计结果
        
        ::
               
            >>> [('Total Return', '-0.99%'), ('Sharpe Ratio', '-5.10'), ('Max Drawdown', '1.72%'), ('Drawdown Duration', '3568')]
        
        界面控制
        ~~~~~~~
        k线显示使用了系统自带的一个联动窗口控件，由蓝色的滑块控制显示区域，可以通过鼠标拖拽改变显示区域。
        `上下方向键` 来进行缩放。 
        
        其它
        ~~~
        **mplot_demo.py  matplotlib画k线，指标线的demo。**
          .. image:: images/plot.png
             :width: 500px
        
        **pyquant.py 基于pyqt， 集成了ipython和matplotlib的demo。**
          .. image:: images/pyquant.png
             :width: 500px
        
        .. _TeaEra: https://github.com/TeaEra
        .. _deepfish: https://github.com/deepfish
        .. _wondereamer: https://github.com/wondereamer
        .. _HonePhy: https://github.com/HonePhy
        .. _tushare: https://github.com/waditu/tushare
        .. _Jimmy: https://github.com/jimmysoa
        .. _vodkabuaa: https://github.com/vodkabuaa
        .. _ongbe: https://github.com/ongbe
        .. _pyalgotrade: https://github.com/gbeced/pyalgotrade
        .. _zipline: https://github.com/quantopian/zipline
        
        
        版本
        ~~~
        
        **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线绘制
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
