Skip to content

Releases: yutiansut/QUANTAXIS

QUANTAXIS 1.2.2 RELEASED

17 Dec 01:54
79464c4
Compare
Choose a tag to compare
  1. 重新构建docker compose,把主镜像拆分jupyter, cron和web三个镜像
  2. 修改了QAFetch的mongo查询语句(感谢几何大佬) 优雅的在查询中去掉了_id
  3. 修正期货的DataStruct格式,统一volume字段
  4. 更新交易日历到2019-12-31
mongo文档参见 https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/#return-the-specified-fields-and-the-id-field-only

1.2.1 RELEASED

03 Dec 15:28
77c0200
Compare
Choose a tag to compare

细分功能 拆分项目

QUANTAXIS_WEBSERVER
QUANTAXIS_PUBSUB
QUANTAXIS_xxx_BROKERS

同时的更新

  1. 修改回测的时候的账户结算(终于算对了不容易...) @code-orange
    具体看 期货冻结-释放资金示例
  2. 增加 对于单月合约的存储 save future_all/ future_day_all / future_min_all
  3. 增加对于future_data 的获取的去重处理
  4. @barretthugh 修改了复权部分的代码
  5. 优化了docker部分的使用
  6. 增加对于jqdata的使用示例
  7. 增加了1min的股票采样
  8. 增加CTPtick的获取和采样

QUANTAXIS 1.1.10 RELEASED

26 Oct 17:05
3cbaa9f
Compare
Choose a tag to compare

1.1.10

  1. 减少了一个深圳主站的服务器ip
  2. 优化精简无用代码
  3. 删除pymssql依赖
  4. 优化了实盘易broker的一个小bug
  5. 添加bitmex数据下载
  6. 增加期权部分的列表等修改
  7. 增加了命令行操作
  8. 增加了分布式worker quantaxis_run (单独更新QUANTAXIS/QUANTAXIS_RUN)
  9. QAWEB 单独拆分成独立项目 QUANTAXIS/QUANTAXIS_WEBSERVER

QUANTAXIS 1.1.9 RELEASED

14 Oct 13:27
00b6052
Compare
Choose a tag to compare
  1. 增加了商品期权的分钟线获取
  2. 优化了QA_Account的存储
  3. 修复了QA_PortfolioView的bug
  4. DataStruct 增加了 rolling(N), ndarray的方法
  5. QAWEB增加对策略的存储功能
  6. QADataStruct增加get_data函数,方便获取各种格式的数据
  7. QADataStruct增加 apply函数 方便对自己应用函数
  8. 增加了对于QA_Performance插件中先卖后买算差价的支持
  9. QAMarket=QAShipaneBroker 支持通达信模拟客户端
  10. QAIndicator 增加Talib的形态识别指标
  11. 增加了qarun.exe 直接运行策略,实时输出
  12. QAWEB 增加了/command/run?command=xxxx的命令行
  13. QAWeb 增加了一个socket端口 /command/runbacktest

不兼容修改:

QAWeb 中/accounts/all 返回值修改 为list(之前是dict)

QUANTAXIS 1.1.7 RELEASED

04 Oct 11:19
5fe9208
Compare
Choose a tag to compare
  1. 优化 QA_DataStruct_future_day/min
  2. 增加了QA_fetch_xxx_adv系列中的 QA_fetch_future_day_adv/QA_fetch_future_min_adv函数
  3. 增加了QA_DataStruct的reindex方法, 方便从指标中提取部分行情
  4. 增加了商品期权的支持

to do:

  • 我们考虑在未来将QA_Crawl项目单独列出, 以免过多的无用依赖项

# QUANTAXIS 回测重构完毕/新增爬虫

14 Jun 02:02
b48f065
Compare
Choose a tag to compare

1.0.50 (unreleased)

  1. 添加了获取东方财富个股资金流向保存到sqlite的命令, windows 和 mac 下测试过
  2. crawl eastmoney zjlx 6位股票代码 命令 和获取所有股票资金流向 crawl eastmoney zjlx all 的命令,
  3. 添加了 QUANTAXIS_CRAWLY 目录,一个scrapy的空的项目,后期支持 各种经济新闻,证券报刊信息,热点咨询的获取

1.0.49

  1. @喜欢你 提交了资金流向爬虫(QUANTAXIS CLI/ crawl)
  2. 修复1.0.48-2的引入,使用ImportError错误项
  3. dockerfile更新

released in : JUNE 14, 2018

1.0.48

  1. 修改了QA_Portfolio, 增加init_hold, init_hold_table 字段,可以查看组合的初始化持仓,以及带account的初始化持仓
  2. 修改了QA_Risk的引入, 测试引入import tkinter

released in : JUNE 12, 2018

1.0.47

  1. 修改了QAMARKET 适配t0回测
  2. 增加t0回测示例
  3. 分钟线撮合不再加一分钟
  4. T0回测买入限额,QA_Account.buy_available
  5. 修改示例,使用随机买卖来测试框架 https://github.com/QUANTAXIS/QUANTAXIS/blob/master/test_backtest/T0backtest.ipynb
  6. 增加对于多个标的的t0账户的支持
  7. 修复一个QA_Account下计算account.trade因为pivot_table默认使用np.mean作为arg_func的bug,该bug会导致在相同时间开了方向相反的仓位,会被计算成平均数
  8. 修复了一个QA_fetch_stock_day_full()中set_index的bug

released in : JUNE 12, 2018

1.0.46

  1. 命令行中 添加了 save stock_info_tushare 保存tushare股票列表的信息到数据库中
  2. 修改了实盘易 broker 增加对接
  3. 修改了base_datastruct的 selects,select_time,select_month,get_bar,select_code,增加异常处理(ValueError)
  4. 基于pandas的反馈,使用remove_unused_levels来对索引进行更新
  5. 大幅修改 base_datastruct方法的 select_time_by_gap, splits, add_func方法,优化性能
  6. 增加了一个期货下单接口(QUANTAXIS_trade/WYFFuture)
  7. 成交量复权修正
  8. 实盘易下单对接(单账户)
  9. 删除emoji导致的windows输出不兼容
  10. 增加部分广州ip
  11. 增加一个通达信的成交记录读取接口
  12. 修改存储打印
  13. 修改了分钟线初始化的column请求,使用if in columns来代替
  14. 修改了Backtest内部在获取_quotation时候的dict匹配,使用pd.Timestamp来代替
  15. 修改了threadeng, 使用raise error 报错
  16. 修改了QA_Account/QA_Portfolio的账户初始化过程, init_assets==> init_cash, 新版的init_assets(只读属性)会返回一个dict{'cash':xx,'hold':{}}
  17. 删除了初始化过程中cash/history的输入
  18. QA_Account 增加两个property self.datetime/self.date 均为account运行的时候的实时时间和日期
  19. QA_Account 增加一个close_positions_order 属性, 仅限T0账户使用, 返回一个list,里面都是封装好的QA_Order
  20. 对于QA_Account的T0模式增加一系列适配
  21. 修改一个example,展示T0的使用,更多文档正在补充
  22. QA_RISK 修改了利润的计算模式,以及benchmark的assets(改为从收盘价计算资产)
  23. QA_RISK 增加一个利润构成表 risk.profit_construct
  24. QA_RISK 增加总手续费,总印花税(risk.total_commission,risk.total_tax)
  25. QA_RISK 增加市值表计算(risk.market_value)
  26. 修复了QA_Account的一个计算daily_cash的bug

released in : JUNE 11, 2018

1.0.45

  1. 在安装完毕后,会弹出一个浏览器页面,告知最新更新
  2. 修复1.0.42出现的一个bug (select_code的问题), 同时兼顾1.0.44的写法进行修改
因此先用set_index去重做一次index
影响的有selects,select_time,select_month,get_bar,select_code

released in :JUNE 03, 2018

1.0.44

  1. @2018/06/03 pandas 的索引问题导致
    pandas-dev/pandas#21299

因此先用set_index去重做一次index
影响的有selects,select_time,select_month,get_bar

released in :JUNE 03, 2018

1.0.43

  1. quantaxis 命令行 save 命令错误的 异常处理
  2. QA_Risk 插件增加对于assets计算的修改(如果撮合按不复权撮合,risk也按不复权去计算assets)

released in :JUNE 03, 2018

1.0.42

  1. QDS的DataStruct 删除 reversed 和 reverse方法
  2. QDS增加回__reversed__方法 但是会raise NotImplementError,方便在reversed内置方法调用时报错
  3. _quotation_base 类中 add sub 的测试代码
  4. _quotation_base 类中 getitem 类型判断,的测试代码
  5. QAQuery_Advance 中函数获取数据的参数检查
  6. QA_DataStruct_Indicators 增加指标类
  7. QADATASTRUCT 的selects, select_time,get_bar函数的速度更新
  8. QADataStruct_Indicators 指标类的索引速度更新(详见 QUANTAXIS INDICATOR)

released in :JUNE 01, 2018

1.0.41

  1. 增加了财务表的注释和翻译QAData/financial_means.py
  2. @喜欢你 更新了布林带的回测示例
  3. @roy T.Burns 提交了关于回测Risk插件画图的显示错误
  4. @尧 对于无GUI的机器引入matplotlib做了测试和修改
  5. 增加 QARisk的 benchmark_profit
  6. 新增两个装饰器 关于QUANTAXIS DATAStruct ==> 简称QDS
    @QDS_StockDayWarpper 
    @QDS_StockMinWarpper
    
  7. 将QDS的方法暴露出来 concat,from_tushare
    QDS的装饰器主要是用于将别处获取的数据之间转化为QDS格式
    import QUANTAXIS as QA
    import tushare as ts
    
    
    @QA.QDS_StockDayWarpper
    def get_stockday_adv(code,start,end):
        return QA.QA_fetch_get_stock_day('tdx',code,start,end)
    
    
    @QA.QDS_StockDayWarpper
    def get_stockday_ts(code,start,end):
        return ts.get_k_data(code,start,end)
    
    print(get_stockday_adv('000001','2018-05-01','2018-05-21'))
    print(get_stockday_ts('000001','2018-05-01','2018-05-21'))
    
    
  8. @喜欢你 按照test_backtest中的MACD_JCSC.py的写法移植到了unittest来运行,后期加入assert来自动测试
  9. @喜欢你 修改了QA_Risk的显示,以及更新PR说明

released in :May 30, 2018

1.0.40

  1. 修改base的函数 AVEDEV 返回SERIES
  2. @宋 @喜欢你 修改kernal,kernal_dict --> kernel, kernel_dict
  3. QA_Performance 增加两个属性 pnl_lifo, pnl_fifo
  4. QA_Performance 增加两个方法 plot_pnlmoney.plot_pnlratio
  5. @尧 在无GUI的电脑上的matplotlib引入时报错的兼容处理
  6. @yehonghao 增加了龙虎榜数据的获取和存储

released in :May 28, 2018

1.0.39

  1. 增加seaborn依赖项 需要pip install seaborn
  2. QA_Risk 增加两个画图方法: plot_dailyhold() plot_signal()

released in :May 24, 2018

1.0.38

  1. 修改了COUNT函数,现在返回series格式 在@musicxISSUE 429问题上进行了改进
  2. 修改了PortfolioView类,修改account_cookie为PVIEW_xxx,增加contained_cookie 作为承载的account的cookie集合
  3. @tauruswang 对于QA_fetch_stock_day_adv的异常值进行了修改
  4. @tauruswang 对于代码进行了大量的注释
  5. @royburns 提供了金叉死叉的回测代码 test_backtest/目录下
  6. 修改了QA_RISK 增加了一个画图方法: plot_assets_curve()方法

released in :May 23, 2018

1.0.37

  1. @yssource将log文件都放入~/.quantaxis/log目录中 (* 在windows中,users/username/.quantaxis/log),减少log文件的垃圾输出
  2. @cc/pchaos 的建议: 将log的位置放在setting文件中

released in :May 22, 2018

1.0.36

对于策略示例做了一些适当性的调整

released in :May 21, 2018

1.0.35

  1. 增加 QA_Account 增加一个方法 hold_table(datetime) 方便在复盘的时候查看某一个时间点的账户持仓
  2. 增加 QA_Account 增加一个方法 hold_price(datetime) 使用vwap成交量加权算法计算持仓均价
  3. 增加 QA_Account 增加一个属性 trade_range 返回账户的交易时间段(所有交易日)
  4. 修改 base_datastruct 修改以便兼容多个股票的DataStruct的指标计算

受影响的方法/属性

  • self.max
  • self.min
  • self.mean
  • self.price_diff
  • self.pvariance
  • self.variance
  • self.stdev
  • self.pstdev
  • self.mode
  • self.mean_harmonic
  • self.amplitude
  • self.skew
  • self.kurt
  • self.pct_change
  • self.mad

released in :May 21, 2018

1.0.34

  1. 增加: QA_Account增加一个属性 running_time 用于记录该账户的运行时间(会同步到数据库,所以从数据库取出的account也是当时运行的时间)
  2. @roy T.Burns 对于QAUSER的修改 增加了自定义user_cookie的功能
  3. @几何提出的对于MONGODB uri以及本地文件设置的问题
1.0.34会在本地创建一个.quantaxis目录,用于存储设置等
同时可以对于.quantaxis/setting/config.ini进行修改,配置默认数据库
  1. @tauruswang对于QA的整体注释和代码结构做了系统性的优化

released in :May 19, 2018

1.0.33

  1. 取消初始化quantaxis的时候选择服务器,改成获取事件触发时选取

released in :May 18, 2018

1.0.32

  1. 对于账户的修改: 增加了QA_Account.orders 作为委托/订单记录器
  2. 对于base_datastruct的修改 : 增加了部分代码的注释
  3. 对于QA_BACKTESTBROKER做了修改: 增加了对于市价单等的bug修复
  4. 对于QA_BACKTESTBROKER做了修改: 修改了BY_MONEY/BY_AMOUNT的成交机制
  5. 对于QA_DEALER进行了修改,减少成交回报报文,去除MARKET_DATA部分数据
  6. 对于QAUtil.QADate_trade做了修改,更改交易时间为9:15-11:30/1:00-3:00的时间,加入盘前集合竞价的数据
  7. 对于QARisk做了修改,更改了最大回撤的计算

感谢@尧 [email protected] 对于该版本做出的巨大贡献

released in :May 17, 2018

1.0.31

1.0.31 更新了关于DATAStruct的易用性

  1. 增加了一个参数 split_dicts, 以KV对形式拆分DataStruct,可以快速寻找个股的DataStruct
[In1]: datafq.split_dicts

{'000014': < QA_DataStruct_Stock_day with 1 securities >,
 '000037': < QA_DataStruct_Stock_day with 1 securities >,
 '000555': < QA_DataStruct_Stock_day with 1 securities >,
 '000670': < QA_DataStruct_Stock_day with 1 securities >,
 '000677': < QA_DataStruct_Stock_day with 1 securities >,
 '000681': < QA_DataStruct_Stock_day with 1 securities >,
 '000687': < QA_DataStruct_Stock_day with 1 securities >,
 '000801': < QA_DataStruct_Stock_day with 1 securities >,
 '000868': < QA_DataStruct_Stock_day with 1 securities >,
 '002068': < QA_DataStruct_Stock_day with 1 securities >,
 '002077': < QA_DataStruct_Stock_day with 1 securities >,
 '002137': < QA_DataStruct_Stock_day with 1 securities >,
 '002203': < QA_DataStruct_Stock_day with 1 securities >,
 '002258': < QA_DataStruct_Stock_day with 1 securities >,
 '002371': < QA_DataStruct_Stock_day with 1 securities >,
 '002376': < QA_DataStruct_Stock_day with 1 securities >}

example:

从一个DataStruct包里面快速拿到000014的股票,选择2018-04-01以前15天的数据,计算这部分数据的MACD

R=datafq.split_dicts
R['000014'].select_time_with_gap('2018-04-01',15,'<=').add_func(QA.QA_indicator_MACD,1,2)

released in :May 15, 2018

1.0.30

1.0.30更新了关于回测和数据查询的代码

  1. 修改了查询股票info的代码, 支持多个股票同时查询
  2. 修改了QA_Account下单时的cash_available结算bug

released in :May 14, 2018

1.0.29

1.0.29更新了关于数据查询的代码

  1. 更新了前复权/后复权的计算,保证了即使在复权数据全无的时候,返回正确的复权结果
  2. 更新了查询权息数据库的代码,现在支持多个股票同时查询
  3. 加速了复权的效率

released in :May 14, 2018

1.0.28

ATTENTION CHANGELOG 1.0.28
修改了Account的send_order方法, 区分按数量下单和按金额下单两种方式

  • AMOUNT_MODEL.BY_PRICE ==> AMOUNT_MODEL.BY_MONEY # 按金额下单
  • AMOUNT_MODEL.BY_AMOUNT # 按数量下单

在按金额下单的时候,应给予 money参数
在按数量下单的时候,应给予 amount参数

Account=QA.QA_Account()

Order_bymoney=Account.send_order(code='000001',
                                price=11,
                                money=0.3*Account.cash_available,
                                time='2018-05-09',
                                towards=QA.ORDER_DIRECTION.BUY,
                                order_model=QA.ORDER_MODEL.MARKET,
                                amount_model=QA.AMOUNT_MODEL.BY_MONEY
                                 )

Order_byamount=Account.send_order(code='000001',
                                price=11,
                                amount=100,
                                time='2018-05-09',
                                towards=QA.ORDER_DIRECTION.BUY,
                                order_model=QA.ORDER_MODEL.MARKET,
                                amount_model=QA.AMOUNT_MODEL.BY_AMOUNT
                                 )

released in :May 10, 2018

1.0.27

2018-05-06

修改并增加了大量的公式,统一成dataframe格式返回,可以被直接concat合并出来

预计将对于indicator类进行重写并缓存/本地存储,方便快速调用

修改了QA_Account的下单模式, 修复了下单的判断bug

released in :May 10, 2018

1.0.26

2018-05-02

1.0.26 对于回测进行了一些优化

  1. 增加了对于RISK类的参数
  • 增加了init_assets, last_assets参数,更方便查看

...

Read more

重构版本 测试

19 Jan 06:54
Compare
Choose a tag to compare
重构版本 测试 Pre-release
Pre-release

在这次重构中:

  • 增加了一个多线程事件引擎 QAENGEINE模块

  • 重写了QAMARKET逻辑, 新增broker模式

  • 重写了QAARP

QUANTAXIS回测初步成型

06 Oct 03:01
Compare
Choose a tag to compare
  • 日线(自1990年)回测 [定点复权] (T+1)
  • 分钟线 [1min/5min/15min/30min/60min]回测 (T+1)
  • 股指期货日线(T+0)
  • 股指期货分钟线 [1min/5min/15min/30min/60min] (T+0)
  • 基于tushare/pytdx/各种爬虫的数据源
  • 实时交易数据
  • 基于Vue.js的前端网站
  • 自定义的数据结构
  • 指标计算
  • 自定义的事件驱动

V0.4.2

09 Sep 20:21
Compare
Choose a tag to compare

1.分钟线回测
2.回测引擎修改
3.数据源更新
4.自定义数据库结构

0.4.0-beta

06 Aug 00:38
Compare
Choose a tag to compare

1.34 QABACKTEST回测引擎更新

2017/8/1-8/4

重大更新:
现在大量使用@装饰器来扩展回测引擎的能力

import QUANTAXIS as QA
from QUANTAXIS import QA_Backtest_stock_day as QB


"""
写在前面:
===============QUANTAXIS BACKTEST STOCK_DAY中的变量
常量:
QB.account.message  当前账户消息
QB.account.cash  当前可用资金
QB.account.hold  当前账户持仓
QB.account.history  当前账户的历史交易记录
QB.account.assets 当前账户总资产
QB.account.detail 当前账户的交易对账单
QB.account.init_assest 账户的最初资金



QB.strategy_stock_list 回测初始化的时候  输入的一个回测标的
QB.strategy_start_date 回测的开始时间
QB.strategy_end_date  回测的结束时间


QB.today  在策略里面代表策略执行时的日期

QB.benchmark_code  策略业绩评价的对照行情




函数:
获取市场(基于gap)行情:
QB.QA_backtest_get_market_data(QB,code,QB.today)
获取市场自定义时间段行情:
QA.QA_fetch_stock_day(code,start,end,model)


报单:
QB.QA_backtest_send_order(QB, code,amount,towards,order: dict)

order有三种方式:
1.限价成交 order['bid_model']=0或者l,L
  注意: 限价成交需要给出价格:
  order['price']=xxxx

2.市价成交 order['bid_model']=1或者m,M,market,Market
3.严格成交模式 order['bid_model']=2或者s,S
    及 买入按bar的最高价成交 卖出按bar的最低价成交

查询当前一只股票的持仓量
QB.QA_backtest_hold_amount(QB,code)


"""


@QB.backtest_init
def init():
    #
    QB.setting.QA_util_sql_mongo_ip='192.168.4.189'

    QB.account.init_assest=2500000
    QB.benchmark_code='hs300'

    QB.strategy_stock_list=['000001','000002','600010','601801','603111']
    QB.strategy_start_date='2017-03-01'
    QB.strategy_end_date='2017-07-01'

@QB.before_backtest
def before_backtest():
    global risk_position
    QA.QA_util_log_info(QB.account.message)
    
    
    
@QB.load_strategy
def strategy():
    print(QB.account.message)
    print(QB.account.cash)
    input()
    for item in QB.strategy_stock_list:
        if QB.QA_backtest_hold_amount(QB,item)==0:
        #获取数据的第一种办法[这个是根据回测时制定的股票列表初始化的数据]
            QB.QA_backtest_send_order(QB,item,10000,1,{'bid_model':'Market'})

    
        else:
            print(QB.QA_backtest_hold_amount(QB,item))
            QB.QA_backtest_send_order(QB,item,10000,-1,{'bid_model':'Market'})
    
@QB.end_backtest
def after_backtest():
    pass

1.35 QA_fetch_stock_list 函数更新

一个获取股票代码的函数

import QUANTAXIS as QA
QA.QA_fetch_stock_list()


# 自定义数据库的模式
import pymongo
QA.QA_fetch_stock_list(pymongo.MongoClient(ip='192.168.4.189',port=27017).quantaxis.stock_list)

1.36 回测框架新增一个一键平仓函数

2017/8/6

一键平仓:
QB.QA_backtest_sell_all(QB)