Python量化交易实战-22按照时间范围从本地读取数据

auto-trade xuhss 926℃ 0评论

从本地读取数据(按照时间范围)

当完成数据存储之后,我们会先从本地去读取数据,我们直接来实现本地读取数据的功能吧。

一、实战

首先将“每日获取数据”这个函数 加一個提示的信息:

# 每日获取数据
def update_daily_price(stockCode, type='Price'):
    # 0是否存在文件:不存在-再次获取,存在-3.2
    finalname = absolutePath + type + '\\' + stockCode + '.csv'
    if os.path.exists(finalname):
        # 1获取增量数据(code, startdate=对应股票csv中日期,enddate=今天)
        startdate = pd.read_csv(finalname, usecols=['date'])['date'].iloc[-1]
        print(startdate)
        df = get_single_price(stockCode, 'daily', startdate, datetime.datetime.today())
        # 2追加到已有文件中(是否存在文件:创建csv,追加数据)
        export_data(df, stockCode, 'Price', 'a')
    else:
        # 再次获取股票行情数据
        df = get_single_price(stockCode, 'daily', None, None)
        export_data(df, stockCode, 'Price')

    print("股票数据已经获取成功:", stockCode)

我们之前写过一个函数叫做:get_csv_data

def get_csv_data(code, type):
    finalname = absolutePath + type + '\\' + code + '.csv'
    return pd.read_csv(finalname)

我们可以基于这个函数来改写。

因为我们这里想要获取的是price的数据,所以我想要写一个更明确的函数名称,我们再创建一个函数,get_csv_price

def get_csv_price(code, start_date, end_date, type='Price'):
    # 使用update获取
    update_daily_price(code, type=type)
    # 读取数据库对应的股票csv文件
    finalname = absolutePath + type + '\\' + code + '.csv'
    data = pd.read_csv(finalname, index_col='date')
    # 根据起始终止日期筛选数据
    return  data[(data.index >= start_date) & (data.index <= end_date)]

然后调用这个函数 在example中:

import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

import Data.Stock as st

code = '000001.XSHE'

# 从本地读取数据
data = st.get_csv_price(code=code, start_date='2021-02-01', end_date='2021-03-01')
print(data)

以后就可以批量从本地读取股票所有的數據,就可以用这个函数了,而且它是自带增量获取数据功能的。

转载请注明:xuhss » Python量化交易实战-22按照时间范围从本地读取数据

喜欢 (8)

您必须 登录 才能发表评论!