从本地读取数据(按照时间范围)
当完成数据存储之后,我们会先从本地去读取数据,我们直接来实现本地读取数据的功能吧。
一、实战
首先将“每日获取数据”这个函数 加一個提示的信息:
# 每日获取数据
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按照时间范围从本地读取数据