2-12 【实战】:创建你的股票数据库课后作业

来源:2-12 【实战】:创建你的股票数据库

慕粉17780521093

2021-07-04




说明:code2name.csv记录了股票代码和股票名称的对应关系

# 设置全局变量

data_root = "/Users/zhongbo/PycharmProjects/pythonProject1/DelatTrader/Data/"

def get_name(code):

    """

    通过股票代码获取股票名称

    :param code:股票代码

    :return:df.loc[code,'display_name']

    """

    df = pd.read_csv('路径/code2name.csv')

    df.index = df['code']

    return df.loc[code, 'display_name']

def creat_filename_from_code(code):

    """

    通过股票代码,生成文件名称,格式为:"股票代码-股票名称)

    :param code: 要生成文件名称的股票代码

    :return:

    """

    name = get_name(code)

    return code + '-' + name

def save_data(data, filename, types):

    """

    存储股票数据,当股票数据记录文件存在时,更新最新数据;当数据文件不存在时,新建数据记录文件

    :param types: 股票数据类型,可以是price,finance等

    :param data: 要写入CSV文件的内容

    :param filename: CSV文件的名称,建议使用creat_filename_from_code()函数,从code自动生成,格式为'股票代码-股票名称'

    :return:

    """

    file_root = data_root + types + "/" + filename + '.csv'

    # 判断文件夹中是否有该文件,如果有,则更新数据,如果没有,则新建文件

    if os.path.exists(file_root):  # 如果该股票有数据文件,则更新数据

        # 判断data是否为空(例如当日股票停牌等),若为空则不做处理,若不为空,则进行数据更新或文件新建

        if data.empty:

            print(filename, '当日无价格数据')

            return None

        else:

            last_day_in_data = datetime.strftime(data.index[len(data.index) - 1], '%Y-%m-%d')  # 获取data中最后一行的index(日期)

            file_data = pd.read_csv(file_root)

            last_day_in_file = file_data['date'][len(file_data) - 1]  # 获取file中最后一行的data值(日期)

            if last_day_in_file != last_day_in_data:  # 判断最新获取的数据,是否已经在file中存在,若已存在,则不做操作,若不存在,则更新数据

                data.to_csv(file_root, mode='a', header=False)

                print('已成功更新', file_root)

            else:

                print(filename, '当日数据在file中已存在')

    else:  # 如果该股票没有数据文件,则新建文件

        data.to_csv(file_root)

        print('已成功存储到', file_root)

trade_day = st.get_trade_days(end_date=datetime.datetime.today(), count=1)  # 获取最近一个交易日期
# 如果今天是交易日,则更新价格,否则提示今天不是交易日
if trade_day[0] != datetime.date.today():  # 最近一个交易日不是今天,意味着今天不是交易日
    print('今天不是交易日')
else:  # 今天是交易日,执行更新数据代码
    stocks = st.get_all_securities('stock')  # 获取股票列表
    for code in stocks.index:  # 获取每只股票当天价格数据,并更新价格记录文件
        data = st.get_single_price(code=code, start_date=datetime.datetime.today(),
                                   end_date=datetime.datetime.today(), frequency='daily')
        st.save_data(data=data, filename=st.creat_filename_from_code(code), types='price')


写回答

1回答

DeltaF

2021-07-07

棒棒哒,祝学习愉快!

0
0

程序员理财课 Python量化交易系统实战

打造一个自动交易平台,新手也能提升理财收益

1987 学习 · 405 问题

查看课程