https://mrjbq7.github.io/ta-lib/install.html
https://stackoverflow.com/questions/24215492/pip-install-line-profiler-fails
未成功 先放着
(1)首先传入一个yml格式的配置文件:config.yml
(2)通过 load_config 函数进行解析,其结果是一个嵌套字典的格式。
(3)将 load_config 的结果构建为一个 RqAttrDict 对象: config = RqAttrDict(config)
(4)使用该配置去运行策略: result = run(config=config)
(5) 更新数据: update_bundle()
(1) 创建env实例: env = Environment(config)
(2) 配置 env 的 strategy_loader
(3) 配置 env 的 global_vars
(4) 配置 env 的 data_source: env.set_data_source(BaseDataSource(config.base.data_bundle_path))
数据从 /data/bundle 中 bcolz 格式的数据转换而来
数据源接口需要实现的方法:见 interface.py 中的 AbstractDataSource
1. get_all_instruments(self) : 获取所有的合约信息
2. get_trading_calendar(self): 获取交易日历
3. get_yield_curve(self, start_date, end_date, tenor=None): 获取国债利率
4. get_dividend(self, order_book_id): 获取股票基金的分红信息
5. get_split(self, order_book_id): 获取拆股信息
6. get_bar(self, instrument, dt, frequency): 根据dt来获取对应的 Bar 数据
7. get_settle_price(self, instrument, date): 获取期货品品种在 dt 的结算价
8. def history_bars(self, instrument, bar_count, frequency, fields, dt, skip_suspended=True, include_now=False, adjust_type='pre', adjust_orig=None): 获取历史数据, adjust_type: 复权类型,'pre', 'none', 'post'; datetime.datetime adjust_orig: 复权起点;
9. current_snapshot(self, instrument, frequency, dt): 获取当前市场的快照数据
10. get_trading_minutes_for(self, instrument, trading_dt): 获取证券某天的交易时段,用于期货回测
11. available_data_range(self, frequency) : 此数据源能够提供数据的时间范围
12. get_margin_info(self, instrument): 获取该合约的保证金数据
13. get_commission_info(self, instrument): 获取合约的手续费信息
14. get_merge_ticks(self, order_book_id_list, trading_date, last_dt=None): 获取合并的 ticks ??
(5) 配置 env 的数据代理: env.set_data_proxy(DataProxy(env.data_source)),需要将数据源作为参数传入,主要数据代理的作用是将数据源组织成一定的调用格式…
(6) 为调度器配置交易日: Scheduler.set_trading_dates_(env.data_source.get_trading_calendar())
(7) 配置调度器的触发频率: scheduler = Scheduler(config.base.frequency)
(8)此调度器同时也作为扩展模块的调度器: mod_scheduler._scheduler = scheduler
(9)配置_universe对象: env._universe = StrategyUniverse()
(10)调整起始时间: _adjust_start_date(env.config, env.data_proxy)