- import 修改相对引用为绝对引用
- 重构配置文件读取功能,分为默认配置,用户配置,项目配置
- 重构 main() 的 tear_down 的调用
- get_previous_trading_date(date, n=1) 增加参数 n
- 增加公募基金数据处理相关逻辑
- 修改 mod.tear_down ,如果单个 mod 在 tear_down 抛异常后,不影响其他 mod 继续 tear_down
- scheduler bugfix
- 处理 persist 遇到的异常
- 修复 order get_state / set_state 缺失 transaction_cost, avg_price
- 修复 mod_sys_stock_realtime
- 取消在股票下单函数中对 order_book_id 类型的检查,现在您可以交易 ETF, LOF, FenjiMu, FenjiA, FenjiB, INDX 了
- Merge PR 170 解决自定义 volume limit 时显示数值不正确的问题。
- Fix Issue 148 get_dividend()方法返回的类型是numpy.ndarray,而非pandas.DataFrame
- Fix Issue 169 执行 rqalpha mod install ctp==0.2.0dev0 时错误的记录了库信息的问题
- Fix Issue 158 多次循环 run_file / run_code 时导致的内存泄漏的问题
- Enhance Issue 166 启动参数支持 --no-stock-t1 来屏蔽股票 T + 1 导致今仓的限制
- 性能提升: 使用 bisect_right 代替 searchsorted
[For 开发/运行策略的用户]
3.x 相比 2.x 进行了如下更改,如果您升级到 3.x 版本,请务必阅读以下内容,保证您的策略可以顺利启动和执行:
- 命令行参数做出如下调整
- 不再使用
-sc/--stock-starting-cash
参数 - 不再使用
-fc/--future-starting-cash
参数 - 不再使用
-i/--init-cash
参数 - 不再使用
-s/--security
参数 - 不再使用
-k/--kind
参数 - 不再使用
--strategy-type
参数 - 使用
--account
来替代,具体用法如下
- 不再使用
# 策略通过命令行运行,设置可交易类型是股票,起始资金为 10000
$ rqalpha run --account stock 10000
# 策略通过命令行运行,设置可交易类型为期货,起始资金为 50000
$ rqalpha run --account future 50000
# 策略通过命令行运行,设置可交易类型为期货和股票,起始资金分别为 股票 10000, 期货 50000
$ rqalpha run --account stock 10000 --account future 50000
# 如果您通过 Mod 扩展,自定义了一种可交易类型(假设是huobi),您也可以增加对于火币的支持和起始资金设置
$ rqalpha run --account stock 10000 --account future 50000 --account huobi 20000
- 相应,如果您通过
run_file | run_code | run_func
来启动策略,配置文件及配置信息也做了对应的调整:- 不再使用
base.stock_starting_cash
- 不再使用
base.future_starting_cash
- 不再使用
base.securities
- 使用
base.accounts
来替代,具体用法如下:
- 不再使用
# 策略通过配置,设置可交易类型是股票,起始资金为 10000
config = {
"base": {
"start_date": "...",
"end_date": "...",
"frequency": "...",
"matching_type": "...",
"benchmark": "...",
"accounts": {
"stock": 10000
}
}
}
# 策略通过配置,设置可交易类型是期货,起始资金为 50000
config = {
"base": {
"start_date": "...",
"end_date": "...",
"frequency": "...",
"matching_type": "...",
"benchmark": "...",
"accounts": {
"future": 50000
}
}
}
# 策略通过配置,设置可交易类型为期货和股票,起始资金分别为 股票 10000, 期货 50000
config = {
"base": {
"start_date": "...",
"end_date": "...",
"frequency": "...",
"matching_type": "...",
"benchmark": "...",
"accounts": {
"stock": 10000,
"future": 50000
}
}
}
# 如果您通过 Mod 扩展,自定义了一种可交易类型(假设是huobi),您也可以增加对于火币的支持和起始资金设置
config = {
"base": {
"start_date": "...",
"end_date": "...",
"frequency": "...",
"matching_type": "...",
"benchmark": "...",
"accounts": {
"stock": 10000,
"future": 50000,
"huobi": 20000
}
}
}
[For Mod developer]
本次更新可能导致已实现 Mod 无法正常使用,请按照文档升级您的 Mod,或者使用 2.2.x 版本 RQAlpha
在通过 Mod 扩展 RQAlpha 的时候,由于 RQAlpha 直接定义了 Account 和 Position 相关的 Model, 增加新的 account 和 position 变得非常的困难,想扩展更多类型是一件很麻烦的事情,因此我们决定重构该模块从而解决这些问题。
详情请查看: ricequant#160
主要进行如下更改:
- 增加
AbstractAccount
和AbstractPosition
, 用户可以基于该抽象类进行扩展。 const.ACCOUNT_TYPE
修改为const.DEFAULT_ACCOUNT_TYPE
,并且不再直接使用,您可以通过Environment.get_instance().account_type_dict
来获取包括 Mod 注入的账户类型。- 原先所有使用 ACCOUNT_TYPE 作为 key 的地方,不再使用 Enum 类型作为 Key, 而是修改为对应 Enum 的 name 作为key。比如说原本使用
portfolio.accounts[ACCOUNT_TYPE.STOCK]
更改为portfolio.accounts['STOCK']
Environment
提供set_account_model
|get_account_model
|set_position_model
|get_position_model
API 来注入 自定义Model。Environment
提供set_smart_order
API 来注入自定义账户类型的智能下单函数,从而通过通用的order
|order_to
API 便可以交易对应自定义账户类型。- RQAlpha 将已有的 AccountModel, PositionModel 和 API 抽离至 rqalpha_mod_sys_accounts 中,通过如下方式注入:
from .account_model import *
from .position_model import *
from .api import api_future, api_stock
class AccountMod(AbstractMod):
def start_up(self, env, mod_config):
# 注入 Account
env.set_account_model(DEFAULT_ACCOUNT_TYPE.STOCK.name, StockAccount)
env.set_account_model(DEFAULT_ACCOUNT_TYPE.FUTURE.name, FutureAccount)
env.set_account_model(DEFAULT_ACCOUNT_TYPE.BENCHMARK.name, BenchmarkAccount)
# 注入 Position
env.set_position_model(DEFAULT_ACCOUNT_TYPE.STOCK.name, StockPosition)
env.set_position_model(DEFAULT_ACCOUNT_TYPE.FUTURE.name, FuturePosition)
env.set_position_model(DEFAULT_ACCOUNT_TYPE.BENCHMARK.name, StockPosition)
# 注入 API
if DEFAULT_ACCOUNT_TYPE.FUTURE.name in env.config.base.accounts:
# 注入期货API
for export_name in api_future.__all__:
export_as_api(getattr(api_future, export_name))
# 注入 smart order
env.set_smart_order(DEFAULT_ACCOUNT_TYPE.FUTURE.name, api_future.smart_order)
if DEFAULT_ACCOUNT_TYPE.STOCK.name in env.config.base.accounts:
# 注入股票API
for export_name in api_stock.__all__:
export_as_api(getattr(api_stock, export_name))
# 注入 smart order
env.set_smart_order(DEFAULT_ACCOUNT_TYPE.STOCK.name, api_stock.smart_order)
def tear_down(self, code, exception=None):
pass
- 解决当存在无效 Mod 时,RQAlpha 崩溃无法启动的问题
- 修复期货下单函数默认 style 为 None 导致报错退出的问题
- 增加 IPython Magic 方便在 IPython 中运行回测 run-rqalpha-in-ipython.ipynb 。运行完回测后,会将所有的 mod 的输出结果保存在 results 变量中,并且会将回测报告存储在 report 对象中。
- 修复系统异常、用户异常的区分判断
- 增加
--source-code
参数可以直接在命令行中传入策略源代码进行回测,这个选项目前主要给 IPython 使用。 - 对于
history_bars
当 fields 为 None 的时候,指定为 ["datetime", "open", "high", "low", "close", "volume"] 。 - 重构 rqalpha_mod_sys_funcat 的数据获取
- 修复 order 的 set_state 的 bug
- 优化分红计算
- 提取 inject_mod_commands 给 click 参数注入
# 加载 rqalpha 插件
%load_ext rqalpha
# 运行回测
%% rqalpha -s 20160101 -e 20170101 -sc 100000
- 所有的下单函数进行了扩展,扩展如下:
# 以 order_shares 举例,其他的下单函数同理。
# 原本的下单方式: 以 200 元的价格下单 100 股 000001.XSHE
order_shares("000001.XSHE", 100, style=LimitOrder(200))
# 下单的如下方式都OK:
order_shares("000001.XSHE", 100, 200)
order_shares("000001.XSHE", 100, LimitOrder(200))
order_shares("000001.XSHE", 100, price=200)
order_shares("000001.XSHE", 100, style=LimitOrder(200))
buy_close
和sell_close
API 增加close_today
参数,现在您现在可以指定发平今单了。- Breaking Change: 原本期货中的
buy_close
和sell_close
API 返回的Order
对象。但实际交易过程中,涉及到昨仓今仓的时候,可能会存在发单被拒单的情况,RQAlpha 进行平昨/平今智能拆单的处理,因此在一些情况下会生成多个订单,对应也会返回一个订单列表。期货平仓更新的内容请参考 Issue 116 - Breaking Change: 取消
Order
|Trade
对应的__from_create__
函数中calendar_dt
和trading_dt
的传入,对接第三方交易源,构建订单和成交的 Mod 可能会产生影响,需要进行修改.
# 原先的构建方式
Order.__from_create__(
calendar_dt,
trading_dt,
order_book_id,
amount,
side,
style,
position_effect
)
#修改为
Order.__from_create__(
order_book_id,
amount,
side,
style,
position_effect
)
- iPython 更新至 6.0 版本以后不再支持 Python 2.x 导致在 Python 2.x 下安装RQAlpha 因为 line-profiler 依赖 iPython 的缘故而报错。目前增加了在 Python 2.x 下依赖 iPython 5.3.0 版本解决此问题。
- 不再提供 rqalpha-cmd 命令的扩展和注入,目前只有一个 entry point: rqalpha 第三方 Mod 可以扩展 rqalpha 命令。
- 增加
from rqalpha import subscribe_event
来支持事件订阅(暂时不增加到API中,您如果想在策略里使用,也需要主动 import 该函数), 如下示例所示:
from rqalpha.api import *
from rqalpha import subscribe_event
def on_trade_handler(event):
trade = event.trade
order = event.order
account = event.account
logger.info("*" * 10 + "Trade Handler" + "*" * 10)
logger.info(trade)
logger.info(order)
logger.info(account)
def on_order_handler(event):
order = event.order
logger.info("*" * 10 + "Order Handler" + "*" * 10)
logger.info(order)
def init(context):
logger.info("init")
context.s1 = "000001.XSHE"
update_universe(context.s1)
context.fired = False
subscribe_event(EVENT.TRADE, on_trade_handler)
subscribe_event(EVENT.ORDER_CREATION_PASS, on_order_handler)
def before_trading(context):
pass
def handle_bar(context, bar_dict):
if not context.fired:
order_percent(context.s1, 1)
context.fired = True
# rqalpha run -f ./rqalpha/examples/subscribe_event.py -s 2016-06-01 -e 2016-12-01 --stock-starting-cash 100000 --benchmark 000300.XSHG
- sys_stock_realtime 提供了一个行情下载服务,启动该服务,会实时往 redis 中写入全市场股票行情数据。多个 RQAlpha 可以连接该 redis 获取实时盘口数据,就不需要重复获取数据。详情参考文档 sys stock realtime mod README
- 解决期货策略持仓到交割导致可用资金计算不准确的问题
- 解决 --plot 时候会报错退出的问题
- 增加
run_file
|run_code
|run_func
API, 详情请参见 多种方式运行策略 - Breaking Change: 更改
AbstractStrategyLoader:load
函数的传入参数,现在不需要strategy
了。 - 增加
UserFuncStrategyLoader
类 - 根据 Issue 116 增加如下内容:
POSITION_EFFECT
增加CLOSE_TODAY
类型- 增加调仓函数
order(order_book_id, quantity, price=None)
API- 如果不传入 price 则认为执行的是 MarketOrder 类型订单,否则下 LimitOrder 订单
- 期货
- quantity > 0: 往 BUY 方向调仓 quantity 手
- quantity < 0: 往 SELL 方向调仓 quantity 手
- 股票
- 相当于 order_shares 函数
- 增加调仓函数
order_to(order_book_id, quantity, price=None)
API- 基本逻辑和
order
函数一致 - 区别在于 quantity 表示调仓对应的最终仓位
- 基本逻辑和
- 现有所有下单函数,增加 price option,具体行为和
order
|order_to
一致
- Fix bug in
all_instruments
PR 123 - Fix "运行不满一天的情况下 sys_analyser 报 KeyError" PR 118
- sys_analyser 生成 report 对应的字段进行调整,具体调整内容请查看 commit d9d19f
- 增加
order
和order_to
高阶下单函数 - 更新数据源,现在使用原始数据和复权因子的方式进行回测
- 不再使用 ruamel.yaml 该库在某些情况下无法正确解析 yml 配置文件
- 解决 six 库依赖多次引用导致安装出错的问题
- 解决
rqalpha run
的时候指定-st
|--kind
时报错的问题 --security
/-st
现在支持多种模式,可以使用-st stock -st future
也可以使用-st stock_future
来设置security- 更新 BarDictPriceBoard Issue 115
- 解决
print(context.portfolio)
时因为调用了 abandon property 会报 warning 的问题 Issue 114 - 解决
rqalpha mod install xx
不存在的 Mod 也会导致 mod_config.yml 更新的问题 Issue 111 - 解决
rqalpha plot
无法画图的问题 Issue 109
- 解决 history_bars 在 before_trading 获取的是未来数据的问题
- 解决 before_trading 获取结算价是当前交易日结算价的问题
- 增加 RQAlpha 向前兼容(0.3.x) Issue 100
- 期货增加强平机制: 及当前账户权益<=0时,清空仓位,资金置0 Issue 108
- 解决回测时只有一个交易日时,只有回测数据显示的问题
- Fix Issue 101
- Fix Issue 105
- 解决运行 RQAlpha 时缺少 six | requests 库依赖的问题
- 解决安装RQAlpha时在某些情况下报错的问题
- 解决第三方 Mod 安装后配置文件路径有误的问题
- 现在可以通过 rqalpha mod install -e . 的方式来安装依赖 Mod 了
- 现在运行策略时会检测当前目录是否存在 config.yml 或者 config.json 来作为配置文件
- 解决股票下单就存在 position 的问题,现在只有成交后才会产生 position 了。
- 修复 portfolio 和 future_account 计算逻辑的一些问题
- 修复 transaction_cost 在某个 position 清空以后计算不准确的问题
- 在信号模式下 price_limit 表示是否输出涨跌停买入/卖出的报警信息,但不会阻止其买入/卖出
- 提供
from rqalpha import cli
方便第三方 Mod 扩展 rqalpha command history_bars
增加include_now
option- Fix Issue 90
- Fix Issue 94
- Fix Issue 87
- Fix Issue 89
- Fix 无法通过
env.config.mod
获取全部 mod 的配置信息 - 增加
context.config
来获取配置信息 - 提供
from rqalpha import export_as_api
接口,方便扩展自定义 API
- Fix Issue 81
- 解决 mod_config.yml 文件解析出错以后,所有的命令报错的问题
- 默认在 Python 2.x 下 sys.setdefaultencoding("utf-8")
- 优化 UNIVERSE_CHANGED 事件,现在只有在universe真正变化时才触发
- Fix Issue 78
- is_st_stock | is_suspended 支持 count 参数
- 解决大量 Python 2.x 下中文乱码问题
- 解决在 Python 2.x 下安装 RQAlpha 提示 requirements-py2.txt Not Found 的问题
- 解决 Benchmark 无法显示的问题
- 解决 rqalpha mod list 显示不正确的问题
- 现在可以通过配置 base.extra_vars 向策略中预定义变量了。用法如下:
from rqalpha import run
config = {
"base": {
"strategy_file": "strategy.py",
"start_date": "2016-06-01",
"end_date": "2016-07-01",
"stock_starting_cash":100000,
"benchmark": '000300.XSHG'
},
"extra":{
"context_vars":{
"short":5,
"middle":10,
"long":21
}
}
}
result_dict = run(config)
# 以下是策略代码:
def handle_bar(context):
print(context.short) # 5
print(context.middle) # 10
print(context.long) # 21
- 修改配置的读取方式,不再从 ~/.rqalpha/config.yml 读取自定义配置信息,而是默认从当前路径读取 config.yml,如果没找到,则会读取系统默认配置信息
- 现在不再对自定义信息进行版本检查
rqalpha generate_config
现在会生成包含所有默认系统配置信息的 config.yml 文件。RUN_TYPE
增加LIVE_TRADING
- 修复
history_bars
获取日期错误产生的问题 - 修复执行
context.run_info
会报错的问题 - 修复持久化报错的问题
- 增加 Order Persist 相关内容
2.0.0 详细修改内容请访问:RQAlpha 2.0.0
Portfolio/Account/Position 相关
- 重新定义了
Portfolio
,Account
和Position
的角色和关系 - 删除大部分累计计算的属性,重新实现股票和期货的计算逻辑
- 现在只有在
Portfolio
层级进行净值/份额的计算,Account级别不再进行净值/份额/收益/相关的计算 - 账户的恢复和初始化现在只需要
total_cash
,positions
和backward_trade_set
即可完成 - 精简
Position
的初始化,可以从real_broker
直接进行恢复 Account
提供fast_forward
函数,账户现在可以从任意时刻通过orders
和trades
快速前进至最新状态- 如果存在 Benchmark, 则创建一个
benchmark_portfolio
, 其包含一个benchmark_account
- 策略在调用
context.portfolio.positions[some_security]
时候,如果 position 不存在,不再每次都创建临时仓位,而是会缓存,从而提高回测速度和性能 - 不再使用
clone
方法 - 不再使用
PortfolioProxy
和PositionProxy
Event 相关
- 规范 Event 的生成和相应逻辑, 使用 Event object 来替换原来的 Enum
- 抽离事件执行相关逻辑为
Executor
模块
Mod 相关
- 规范化 Mod 命名规则,需要以 rqalpha_mod_xxx 作为 Mod 依赖库命名
- 抽离
slippage
相关业务逻辑至simulation mod
- 抽离
commission
相关业务逻辑至simulation mod
- 抽离
tax
相关业务逻辑至simulation mod
- rqalpha mod list 命令现在可以格式化显示 Mod 当前的状态了
Environment 和 ExecutionContext 相关
- 现在
ExecutionContext
只负责上下文相关的内容,不再可以通过ExecutionContext
访问其他成员变量。 - 扩展了
Environment
的功能,RQAlpha 及 Mod 均可以直接通过Environment.get_instance()
来获取到环境中核心模块的引用 Environment
还提供了很多常用的方法,具体请直接参考代码
配置及参数相关
- 重构了配置相关的内容,~/.rqalpha/config.yml 现在类似于 Sublime/Atom 的用户配置文件,用于覆盖默认配置信息,因此只需要增加自定义配置项即可,不需要全部的配置内容都存在
- 将Mod自己的默认配置从配置文件中删除,放在Mod中自行管理和维护
- 独立存在 ~/.rqalpha/.mod_conifg.yml, 提供 rqalpha mod install/uninstall/enable/disable/list 命令,RQAlpha 会通过该配置文件来对Mod进行管理。
- 抽离
rqalpha run
的参数,将其中属于 Mod 的参数全部删除,取代之为Mod提供了参数注入机制,所以现在 Mod 可以自行决定是否要注入参数或者命令来扩展 RQAlpha 的功能 - 提供了
rqalpha-cmd
命令,Mod 推荐在该命令下注入自己的命令来实现功能扩展 - 不再使用 --strategy-type, 改为使用 --security 选项
- --output-file | --report | --plot | --plot-save`参数 转移至 `sys_analyser Mod 中
- plot | report 命令,转移至 sys_analyser Mod 中
- --signal | --slippage | --commission-multiplier | --matching-type | --rid 转移至 sys_simulation Mod 中
Risk 计算
- 修复 tracking error 计算错误
- 修改 sharpe , sortino , information ratio , alpha 计算逻辑。参考 晨星 的方法, 先计算单日级别指标, 再进行年化。与原本直接基于年化值计算相比, 在分析时间较短的情况下, 新的指标计算结果会系统性低于原指标结果。
- 引入单日无风险利率作为中间变量计算上述指标。单日无风险利率为通过 中国债券信息网 获取得到对应期限的年化国债到期收益率除以244得到
- 修改指标说明若干
其他
- 修改了
Order
和Trade
的字段和函数,使其更通用 - 为
RqAttrDict
类增加update
方法,现在支持动态更新了 arg_checker
增加is_greater_or_equal_than
和is_less_or_equal_than
函数- 删除
DEFAULT_FUTURE_INFO
变量,现在可以直接通过data_proxy
获取相关数据 - 通过 better_exceptions 提供更好的错误堆栈提示体验
- 对字符串的处理进行了优化,现在可以正确在 Python2.x/3.x 下显示中文了
- 修复
update_bundle
直接在代码中调用会报错的问题 - 增加对于下单量为0的订单过滤,不再会创建订单,也不再会输出警报日志
- 增加
is_suspended
和is_st_stock
API 的支持
- Hotfix
UnboundLocalError: local variable 'signature' referenced before assignment
- 增加股票裸做空的配置参数
--short-stock
POSITION_EFFECT
增加CLOSE_TODAY
ExecutionContext
增加get_current_close_price
get_future_commission_info
get_future_margin
get_future_info
函数- 增加
RQInvalidArgument
来处理用户策略代码异常的问题 - 现在可以正确提示期货主力连续合约和指数连续合约在回测和模拟中的报错信息了
- 现在以
handle_tick(context, tick)
的方式支持tick级别的API支持(未来可能会修改) - 现在回测时的
before_trading
函数输出的时间提前到开盘前半小时
- 优化 setup.py 脚本,只有在 python 2 环境下才安装兼容性依赖库
- 增加
rqalpha install/uninstall/list/enable/disable
命令 - 增加
EVENT.POST_SYSTEM_RESTORED
事件 - 增加 净值和份额的支持,现在的收益和Analyser的计算都是基于净值了。
- 在 AnalyserMod 输出的 Trade 中增加
side
和position_effect
- 修复
total_orders
计算错误 - 修复
inpsect.signature
在 python 2.x 报错的问题。
- 更新本地化翻译,修改系统提示,支持多语言
- 增加
--locale
默认为cn
(中文), 支持cn | en
(中文 | 英文) - 修复
main.run
返回值中stock_position
为None
的问题 - 修复 Windows Python 2.7 下中文显示乱码的问题
- 增加
config.yml
的版本号检查及相关流程 - 增加
plot
关于中文字体的校验,如果系统没有中文字体,则显示英文字段 - 修正
Benchmark
在不设置时某些情况下会导致运行失败的错误 - 修正
inspect.unwrap
在 Python 2.7 下不支持的兼容性问题 - 修正
numpy
在某些平台下没有 float128 引起的报错问题
- 增加
--disable-user-system-log
参数,可以独立关闭回测过程中因策略而产生的系统日志 --log-level
现在可以正确区分不同类型的日志,同时增加none
类型,用来关闭全部日志信息。- 在不指定配置文件的情况下,默认会调用
~/.rqalpha/config.yml
文件 - 支持
rqalpha generate_config
命令来获取默认配置文件 - 指定策略类型不再使用
--kind
参数,替换为--strategy-type
和配置文件呼应 - 重构
events.py
,现在可以更好的支持基于事件的模块编写了 - 将风险指标计算独立成
analyser
Mod - 将事前风控相关内容独立成
risk_manager
Mod - 将 回测 和 实盘模拟 相关功能独立成
simulation
Mod
- 增加几个 technical analysis 的 examples 和自动化测试
- 修复一些在 Python 2 下运行的 bug
- 增加
-mc
/--mod-config
参数来传递参数到 mod 中 - 增加了 simple_stock_realtime_trade, progressive_output_csv,funcat_api 几个 DEMO mod 供开发者参考开发自己的 mod
update_bundle
移到main.py
中,方便直接从代码中调用update_bundle
- 增加了一些自动化的测试用例
- support auto test with Travis [python 2.7 3.4 3.5 3.6]
rqalpha.run
现在支持直接传入source_code
了- 支持
rqalpha.update_bundle
函数
- 增加
from rqalpha import run
接口,现在可以很方便的直接在程序中调用RQAlpha 回测了。
- 本地化模块更具有扩展性
- 修改
rqalpha update_bundle
的目录结构,现在是在指定目录下生成一个 bundle 文件,而不再会直接删除当前文件夹内容了。
- 解决
rqalpha examples -d .
无样例策略生成的问题
- 解决 Windows 10 下 matplotlib 中文字体显示乱码的问题
- 解决 Windows 下 set_locale error 的问题
- 增加 Python 2 的支持
- 支持多周期回测扩展(虽然只有日线数据,但是结构上是支持不同周期的回测和实盘的)
- 支持期货策略
- 支持混合策略(股票和期货混合)
- 支持多种参数配置方式
- 抽离接口层,数据源、事件源、撮合引擎、下单模块全部可以替换或扩展。
- 完善事件定义,采取 pub/sub 模式,可以非常简答的在 RQAlpha 中添加 hook。
- 增加 Mod 机制,极大的增加了 RQAlpha 的扩展性,使其可以轻松完成程序化交易过程中所产生的的特定需求。
- 完善了回测结果显示
- 修正了 Risk 计算和 Benchmark 计算
- 增加会回测进度显示开关
- 完善了回测结果显示
- 在
handle_bar
前用当前的数据更新 portfolio 和 position,因为 ricequant.com 是这样做的。
- 修复了分红计算
- 用户可以通过 context 设置 slippage/commission/benchmark
- 增加了 scheduler
- 修复 history 在 before_trading 调用
- 增加 api 的 phase 检查
- 修改支持 python2
- 修正了 Risk 计算,使用合理的年化收益计算方法
- 格式化代码符合 pep8
- 更新 requirements.txt
- 增加了数据下载
- 修正了 Risk 计算
- 增加了 instrument
- 增加了 position 的
market_value
和value_percent
- 增加了日线回测
- 去掉了涨跌停检查
- 增加了分红处理
- 运行参数如下:
# 生成sample策略
rqalpha generate_examples -d ./
# 运行回测
rqalpha run -f examples/simple_macd.py -s 2013-01-01 -e 2015-01-04 -o /tmp/a.pkl
- 搭建基本的框架,增加基本的 unittest