文章目录
显示
实时获取股票的数据函数封装
实现股票数据获取的模块及方法
从这节课开始 我们就开始构建所谓的量化交易系统,量化交易平台功能模块。
上面是量化交易系统的功能模块图,主要分为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
转载请注明:xuhss » Python量化交易实战-10实时获取股票的数据函数封装