复制链接
克隆策略
In [81]:
# 读取日频行情数据
df = DataSource('bar1d_CN_STOCK_A').read(instruments='000002.SZA', start_date='2022-01-01',fields=['open','high',
                      'low','close','volume','amount'])
In [82]:
# 获取每个交易日所处的月份 所处的周,以便按周加工数据
df['month'] = df.date.apply(lambda x:x.month)
df['week'] = df.date.apply(lambda x:x.week)
In [77]:
# 按周降频聚合的函数
def resample(tmp):
    tmp['week_high'] = tmp.high.rolling(5, min_periods=1).max()
    tmp['week_low'] = tmp.low.rolling(5, min_periods=1).min()
    tmp['week_open'] = tmp.open.rolling(5, min_periods=1).apply(lambda x:x.head(1))
    tmp['week_close'] = tmp.close.rolling(5, min_periods=1).apply(lambda x:x.tail(1))
    tmp['week_volume'] = tmp.volume.rolling(5, min_periods=1).sum()
    tmp['week_amount'] = tmp.amount.rolling(5, min_periods=1).sum()
    return tmp
    
In [79]:
# 按月、周进行降频
week_df = df.groupby(['month','week']).apply(resample)
In [80]:
week_df
Out[80]:
instrument date open volume low amount close high month week week_high week_low week_open week_close week_volume week_amount
0 000002.SZA 2022-01-04 3171.752441 194720202.0 3150.596436 3.956476e+09 3334.489746 3360.527832 1 1 3360.527832 3150.596436 3171.752441 3334.489746 194720202.0 3.956476e+09
1 000002.SZA 2022-01-05 3324.725586 193045791.0 3313.333984 4.075048e+09 3445.151367 3516.755615 1 1 3516.755615 3150.596436 3171.752441 3445.151367 387765993.0 8.031524e+09
2 000002.SZA 2022-01-06 3437.014404 138027406.0 3383.311035 2.923511e+09 3425.622803 3524.892578 1 1 3524.892578 3150.596436 3171.752441 3425.622803 525793399.0 1.095503e+10
3 000002.SZA 2022-01-07 3479.326172 226276805.0 3474.444092 4.969780e+09 3562.322266 3655.082520 1 1 3655.082520 3150.596436 3171.752441 3562.322266 752070204.0 1.592481e+10
4 000002.SZA 2022-01-10 3547.675781 152779663.0 3508.618896 3.376585e+09 3606.261230 3687.630127 1 2 3687.630127 3508.618896 3547.675781 3606.261230 152779663.0 3.376585e+09
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
165 000002.SZA 2022-09-07 3052.072266 88338610.0 3007.137939 1.550325e+09 3027.876953 3079.724121 9 36 3090.093506 2889.617676 2913.812988 3027.876953 325557761.0 5.673964e+09
166 000002.SZA 2022-09-08 3031.333496 72336234.0 2981.214355 1.264869e+09 3038.246338 3057.257080 9 36 3090.093506 2889.617676 2913.812988 3038.246338 397893995.0 6.938833e+09
167 000002.SZA 2022-09-09 3022.692139 141202545.0 3008.866211 2.554322e+09 3136.756104 3178.233887 9 36 3178.233887 2889.617676 2913.812988 3136.756104 539096540.0 9.493155e+09
168 000002.SZA 2022-09-13 3129.843018 106021641.0 3100.462891 1.933183e+09 3141.940674 3205.885742 9 37 3205.885742 3100.462891 3129.843018 3141.940674 106021641.0 1.933183e+09
169 000002.SZA 2022-09-14 3110.832520 74322985.0 3083.180664 1.342715e+09 3095.278320 3192.059814 9 37 3205.885742 3083.180664 3129.843018 3095.278320 180344626.0 3.275898e+09

170 rows × 16 columns