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运行的结果:

你可能感兴趣的:(python量化交易2——用tushare获取指数行情)