数字量化系统之分析股票行情数据
金融数据获取
1、安装tushare
pip install tushare
2、获取股票数据
get_k_data(coe, start, end, ktype)

3、时序数据操作
pd.to_datetime():数据类型转换为时间类型
重采样
- 将时间序列从一个频率转换到另一个频率的过程。
- reample(freq).sum(), resampe(freq).mean(),resample(freq).last()...
- freq:基础频率
MA5:5日均线,表示将过去五日的数据加起来求平均值。
滚动统计rolling:
- rolling(window).func()
- window:窗口大小
- func: 滚动统计操作的函数
计算5日均线:
rolling(5).mean()
二、代码实战
import os
import pandas as pd
import matplotlib.pyplot as plt
import tushare as ts
# 股票编码
stock_code = '600519'
# 结果保存路劲
output_path = './output'
if not os.path.exists(output_path):
os.makedirs(output_path)
# 获取数据
def collect_data():
"""
获取数据
"""
stock_df = ts.get_k_data(code=stock_code, start='2010-01-01', end='2015-01-01', ktype=60)
return stock_df
def process_data(stock_df):
"""
数据处理
"""
stock_df['date'] = pd.to_datetime(stock_df['date'])
stock_df.set_index('date', inplace=True)
resampled_stock_df = stock_df.resample('D').last()
resampled_stock_df = resampled_stock_df.dropna(inplace=True)
return resampled_stock_df
def analyze_data(stock_df):
"""
分析数据
"""
stock_df['MA 5'] = stock_df['close'].rolling(window=5).mean()
stock_df['MA 30'] = stock_df['close'].rolling(window=30).mean()
stock_df['MA 60'] = stock_df['close'].rolling(window=60).mean()
return stock_df
def save_plot_results(stock_ext_df):
"""
结果展示(将5、30、60日均线画在一张图中)
"""
stock_ext_df.to_csv(os.path.join(output_path, 'stock_ext.csv'))
#pd数据可以直接调用plot方法画图
stock_ext_df[['close', 'MA 5', 'MA 30', 'MA 60']].plot()
plt.tight_layout()
plt.savefig(os.path.join(output_path, 'stock_ext.png'))
plt.show()
def main():
#数据获取
stock_df = collect_data()
# 处理数据
pro_stock_df = process_data(stock_df)
# 数据分析
stock_ext_df = analyze_data(pro_stock_df)
save_plot_results()
if __name__ == '__main__':
main()
知识点
- 金融数据获取 tushare
- 时序数据重采样 resample
- 时序数据滚动 rolling
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)