Files
vnpy/examples/alpha_research/download_data_rq.ipynb
2025-03-26 19:44:33 +08:00

195 lines
4.8 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 准备数据"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# 加载模块\n",
"from datetime import datetime\n",
"\n",
"from tqdm import tqdm\n",
"import rqdatac as rq\n",
"\n",
"from vnpy.trader.database import DB_TZ\n",
"from vnpy.trader.datafeed import get_datafeed\n",
"from vnpy.trader.constant import Exchange, Interval\n",
"from vnpy.trader.object import HistoryRequest\n",
"from vnpy.alpha import AlphaLab, logger"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# 设置下载参数\n",
"task_name = \"csi300\"\n",
"index_symbol = \"000300.SSE\"\n",
"rq_index_symbol = \"000300.XSHG\"\n",
"\n",
"start_date = \"2007-01-01\"\n",
"end_date = \"2024-10-31\""
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# 创建投研实验室\n",
"lab = AlphaLab(f\"./lab/{task_name}\") # 指定数据文件夹"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Python313\\Lib\\site-packages\\rqdatac\\client.py:257: UserWarning: Your account will be expired after 279 days. Please call us at 0755-22676337 to upgrade or purchase or renew your contract.\n",
" warnings.warn(\"Your account will be expired after {} days. \"\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 初始化数据服务这里配置使用的RQData\n",
"datafeed = get_datafeed()\n",
"datafeed.init()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# 下载指数成分股\n",
"data = rq.index_components(rq_index_symbol, start_date=start_date, end_date=end_date)\n",
"\n",
"# 转换合约代码\n",
"index_components = {}\n",
"for dt, rq_symbols in data.items():\n",
" vt_symbols: list = []\n",
"\n",
" for rq_symbol in rq_symbols:\n",
" vt_symbol = rq_symbol.replace(\"XSHG\", \"SSE\").replace(\"XSHE\", \"SZSE\")\n",
" vt_symbols.append(vt_symbol)\n",
"\n",
" index_components[dt.strftime(\"%Y-%m-%d\")] = vt_symbols\n",
"\n",
"# 保存到数据中心\n",
"lab.save_component_data(index_symbol, index_components)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# 加载指数成分股代码\n",
"component_symbols = lab.load_component_symbols(index_symbol, start_date, end_date)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 859/859 [01:52<00:00, 7.66it/s]\n"
]
}
],
"source": [
"# 转换时间格式\n",
"start = datetime.strptime(start_date, \"%Y-%m-%d\")\n",
"start = start.replace(tzinfo=DB_TZ)\n",
"\n",
"end = datetime.strptime(end_date, \"%Y-%m-%d\")\n",
"end = end.replace(tzinfo=DB_TZ)\n",
"\n",
"# 除了成分股,还要下载指数数据\n",
"task_symbols = component_symbols + [index_symbol]\n",
"\n",
"# 遍历下载数据\n",
"for vt_symbol in tqdm(task_symbols):\n",
" symbol, exchange_str = vt_symbol.split(\".\")\n",
"\n",
" req = HistoryRequest(symbol, Exchange(exchange_str), start, end, Interval.DAILY)\n",
" bars = datafeed.query_bar_history(req)\n",
"\n",
" if bars:\n",
" lab.save_bar_data(bars)\n",
" else:\n",
" logger.error(f\"下载{vt_symbol}数据失败\")\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# 添加回测参数配置\n",
"for vt_symbol in component_symbols:\n",
" lab.add_contract_setting(\n",
" vt_symbol,\n",
" long_rate=5/10000,\n",
" short_rate=10/10000,\n",
" size=1,\n",
" pricetick=0.0001,\n",
" )"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}