在股票量化交易时,经常会使用到日K、周K及月K数据,那么我们如何利用日K的数据得到我们想要的周K及月K数据呢?
pandas中有一个专门处理周期的resample函数,可以很方便的对周期进行转换,下面以日K数据转化为周K及月K数据为例进行说明。
示例中使用的‘000001.XSHE.csv’文件,已上传至csdn资源中,可直接下载
导入数据
import pandas as pd
# 读取CSV文件 df = pd.read_csv('./000001.XSHE.csv') # 显示前n行,默认是5 df.head()
# 将交易日期字符串变为日期类型 df['date'] = pd.to_datetime(df['date']) # 将日期列设为索引 df.set_index('date', inplace = True) df.head(10)
计算周K线数据,求每周的开盘价、收盘价、最大值、最小值
# 定义一个空的df week_df = pd.DataFrame()
# 求每周的开盘价 week_df['open'] = df['open'].resample('W').first() # 求每周的收盘价 week_df['close'] = df['close'].resample('W').last() # 求每周的最大值 week_df['high'] = df['high'].resample('W').max() # 求每周的最小值 week_df['low'] = df['low'].resample('W').min() week_df.head(10)
以上我们便通过股票的日K数据得到了周K数据。
定义周期转换函数,方便求周K与月K等数据
为了后续更方便的进行数据转换,我们可以直接封装一个函数,只需传输数据及想要转换的周期参数,即可得到相应周期的K线数据,函数定义如下:
def transfer_price_freq(data, time_freq): """ 将数据转化为指定周期:开盘价(周期第一天)、收盘价(周期最后一天)、最高价(周期)、最低价(周期) :param data:日数据,包含每天开盘价、收盘价、最高价、最低价 :param time_freq: 转换周期,周:‘W’,月:‘M’ :return: """ df_trans = pd.DataFrame() df_trans['open'] = data['open'].resample(time_freq).first() df_trans['close'] = data['close'].resample(time_freq).last() df_trans['high'] = data['high'].resample(time_freq).max() df_trans['low'] = data['low'].resample(time_freq).min() return df_trans
# 我们传入df,及"M"参数即可得到月K数据 month_df = transfer_price_freq(df, 'M') month_df.head()
同理如果我们有每分钟的股票数据,我们也可以通过该函数得到5分钟K线、10分钟K线、30分钟K线等。
如果内容对你有帮助,记得点赞、关注哦!也欢迎小伙伴们和我共同学习交流。
更多干货内容持续更新中…
也欢迎关注下方我的公众号,共同学习交流,获取更多学习资源。