1. 从github上下载glib源码
https://github.com/microsoft/qlib
2. 根据官方文档指引,进行python setup.py install
提示缺少msvc++,之前想走捷径,安装了很多库,均不行,这次换了台电脑,下载提示信息中的安装工具
一定要选择第一个桌面开发,不要有裁剪,之前试过好几次自己选,然后不成功的。
安装后再执行后显示如此:
下载完后,将继续执行python setup.py install。会提示一系列库没有安装,可以通过
pip install -U liba libb来安装缺少的库。
对于库版本不对的,需要通过
pip install -U liba=1.0.1这样的方式将库版本调整正确。
重复上述操作至没有错误为止。可以进行下载数据的测试程序进行测试,也可以先打印出version测试一下
示例1:
import qlib
qlib.__version__
我这边测试用的是0.8.6
示例2
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn
上述命令是从qlib官方路径中下载已有的数据,数据源来自yahoo finance。
我这里经常失败,可能网站对下载有限制或者我的网络不好
这里是个大坑.乘着下载不成功等待的时间,大致分析一下get_data.py这个源码,这是个工具,可以通过python get_data.py qlib_data --help进行查看帮助,源码中
通过fire库,将GetData类转换成命令行,下一步看一下GetData类
类中的入口方法
def qlib_data(
self,
name="qlib_data",
target_dir="~/.qlib/qlib_data/cn_data",
version=None,
interval="1d",
region="cn",
delete_old=True,
exists_skip=False,
):
"""download cn qlib data from remote
Examples
---------
# get 1d data
python get_data.py qlib_data --name qlib_data --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn
# get 1min data
python get_data.py qlib_data --name qlib_data --target_dir ~/.qlib/qlib_data/cn_data_1min --interval 1min --region cn
-------
"""
#判断是否存在文件,和跳过
if exists_skip and exists_qlib_data(target_dir):
logger.warning(
f"Data already exists: {target_dir}, the data download will be skipped\n"
f"\tIf downloading is required: `exists_skip=False` or `change target_dir`"
)
return
qlib_version = ".".join(re.findall(r"(\d+)\.+", qlib.__version__))
def _get_file_name(v):
return self.QLIB_DATA_NAME.format(
dataset_name=name, region=region.lower(), interval=interval.lower(), qlib_version=v
)
file_name = _get_file_name(qlib_version)
if not self.check_dataset(file_name, version):
file_name = _get_file_name("latest")
self._download_data(file_name.lower(), target_dir, delete_old, dataset_version=version)
也可以自己拼一下url下载
# REMOTE_URL = "https://qlibpublic.blob.core.windows.net/data/default/stock_data" # QLIB_DATA_NAME = "{dataset_name}_{region}_{interval}_{qlib_version}.zip"
这里我拼出来的是不带版本号的
https://qlibpublic.blob.core.windows.net/data/default/stock_data/qlib_data_cn_1d.zip
下载下来后数据就是历史数据,截至2020年9月
=================接下来研究一下数据结构和更新方法=====================
对于更新方法,源码中提供的更新工具
script/data_collector中存放了不同类别的帮助文件,和collector.py工具
此处我测试一下,刚才的数据更新至2022年
python scripts/data_collector/yahoo/collector.py update_data_to_bin --qlib_data_1d_dir <user data dir> --trading_date <start date> --end_date <end date>
python data_collector\yahoo\collector.py update_data_to_bin --qlib_data_1d_dir testdata01 --trading_date 2022-06-01 --end_date 2022-12-06
参考文档
Data Layer: Data Framework & Usage — QLib 0.8.6.99 documentation
此时会下载文件
qlib_data_cn_1d_latest.zip
//该命令下载后的数据仍然是到2020年9月,那么可以认为当前qlib服务器上没有存最新的。那么我们再看一下如何从其他渠道获取。
另外也可以从众筹数据源获取,参考文档
https://github.com/microsoft/qlib/tree/main/scripts
上述拿数据,目前还不是实时数据,但是历史数据可以通过多种渠道获取,并且转换成qlib所需要的格式。其他数据更新方式目前不研究了,下面研究一下数据如何使用。