B站配套视频教程观看
实时获取股票的数据函数封装
实现股票数据获取的模块及方法
从这节课开始 我们就开始构建所谓的量化交易系统,量化交易平台功能模块。
上面是量化交易系统的功能模块图,主要分为3块,第一块是行情数据,
行情记录与历史数据:主要是股票的标的信息,财务数据,估值数据,存储的历史记录,将数据导出到csv中存储起来。
交易策略和回归测试模块:主要包含择时策略和选股策略,针对这些策略,为了保证数据的有效性和准确性,还需要对数据进行回测。
交易数据管理与查询:主要是自动交易,以及数据管理和查询,比如说递交委托,持仓信息和收益信息。
总的来说 量化交易系统以后端的功能为主,图表可视化
部分相对来说比较粗糙一点,我们可以利用matplotlib
或者echart
这样的可视化库去结合Python后端代码来实现数据的可视化,方便大家理解交易逻辑是什么样子的,如果在加上前端的功能实现的话,就会牵扯很多的功能模块,比如说我要设计页面框架,是选flask
还是django
。所以我们把前端尽量做的简单一点。
一、代码实操
这节课主要做2件事情。
第一个我们会在项目的根目录创建README.md
。
表示对这个项目的说明,如果你是程序员,就应该很熟悉,这个文档的作用就是告诉来使用我们这个项目的人,我这个源代码是干什么的,有哪些模块,调用关系有哪些。
第二个我们会在stock.py
这个文件当中,定义一些常用的数据获取方法。
def 获取所有A股股票列表def 获取单个股票行情数据def 导出股票行情数据def 转换股票行情周期def 获取单个股票财务指标def 获取单个股票估值指标
1.1创建README.md
在项目的根目录创建一个叫做”README.md“文件:
# XuhssQuant## 功能模块### 行情记录(Data)#### stock- 获取所有A股股票列表- 获取单个股票行情数据- 导出股票相关的数据- 将数据转换股票行情指定周期- 获取单个股票财务指标 - 获取单个股票估值指标
1.2定义常用的数据获取方法
然后在stock.py
中创建所有的函数
# 获取所有A股股票列表def get_stock_list():stock_list = list(get_all_securities(['stock']).index)return stock_list
# 获取单个股票行情数据def get_single_price(stock_code, timefrequency, startdate, enddate):data = get_price(stock_code, start_date=startdate, end_date=enddate,count=5, frequency=timefrequency)return data
导出股票行情数据 需要创建一个文件夹 用于存储行情数据:
# 导出股票相关的数据(type:存储的文件夹的名称[Finace/Price])def export_data(data, filename, type):fileroot = 'D:/software/00/01推广/XuhssQuant/Data/' + type +'/' + filename + '.csv'data.to_csv(fileroot)print('已经存储成功,存储路径为', fileroot)
# 将数据转换股票行情指定周期def transfer_price_freq(data, timefrequency):df_trans = pd.DataFrame()df_trans["open"] = data["open"].resample(timefrequency).first()df_trans['close'] = data['close'].resample(timefrequency).last()df_trans['high'] = data['high'].resample(timefrequency).max()df_trans['low'] = data['low'].resample(timefrequency).min()df_trans['volume(sum)'] = data['volume'].resample(timefrequency).sum()df_trans['money(sum)'] = data['money'].resample(timefrequency).sum()return df_trans
# 获取单个股票财务指标 def get_single_finance(code, date, statDate):data = get_fundamentals(query(indicator).filter(indicator.code == code), date = date, statDate=statDate)return data
# 获取单个股票估值指标def get_single_valuation(code, date, statDate):data = get_fundamentals(query(valuation).filter(valuation.code == code), date = date, statDate=statDate)return data