python量化交易2——用tushare获取指数行情
一、在cmd中开启MongoDB
在目录G:\MongoDB\bin的地址栏输入cmd:
输入mongod.exe --dbpath=G:\mongoDB\data 新开一个cmd,输入mongo.exe创建索引:
输入db.daily.createIndex({'code':1,'date':1,'index':1},{'background':true})代码如下:
from pymongo import MongoClient
from pymongo import UpdateOne
import tushare as ts
from datetime import datetime
# 指定数据库的连接,quant_01是数据库名
DB_CONN = MongoClient('mongodb://127.0.0.1:27017')['quant_01']
# 从tushare获取日K数据,保存到本地的MongoDB数据库中
class DailyCrawler:
def __init__(self):
"""
初始化
"""
# 创建daily数据集
self.daily = DB_CONN['daily']
# 创建daily_hfq数据集
self.daily_hfq = DB_CONN['daily_hfq']
def crawl_index(self, begin_date=None, end_date=None):
"""
抓取指数的日K数据。
指数行情的主要作用:
1. 用来生成交易日历
2. 回测时做为收益的对比基准
:param begin_date: 开始日期
:param end_date: 结束日期
"""
# 指定抓取的指数列表,可以增加和改变列表里的值
index_codes = ['000001', '000300', '399001', '399005', '399006']
# 当前日期
now = datetime.now().strftime('%Y-%m-%d')
# 如果没有指定开始,则默认为当前日期
if begin_date is None:
begin_date = now
# 如果没有指定结束日,则默认为当前日期
if end_date is None:
end_date = now
# 按照指数的代码循环,抓取所有指数信息
for code in index_codes:
# 抓取一个指数的在时间区间的数据
df_daily = ts.get_k_data(code, index=True, start=begin_date, end=end_date)
# 保存数据
self.save_data(code, df_daily, self.daily, {'index': True})
if __name__ == '__main__':
dc = DailyCrawler()
dc.crawl_index('2019-04-01')
在jupyter notebook运行的结果: