(1)导入沪深300指数2022.4.1日-2023.3.30日,1分钟高频数据,画出5分钟高频数据的k线图(不会画k线图的话,就直接resample,计算出5分钟数据的close); (2)计算5分钟数据的移动均线SMA(5)以及均线SMA(10),计算采用双移动均线策略的收益(直接用1分钟数据) (3)计算1分钟、5分钟、10分钟、15分钟数据的动量策略收益(直接用1分钟数据)
时间: 2024-02-17 14:02:27 浏览: 136
NOIP CSP-J CSP-S 初赛 第1轮 学习资料集(F)-2023.07.24.pdf
好的,以下是一个简单的Python量化实例,用于完成上述任务:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取1分钟高频数据
df = pd.read_csv("HS300_20220401_20230330_1min.csv")
# 转换时间序列格式
df['datetime'] = pd.to_datetime(df['datetime'])
# 将时间序列设置为索引
df.set_index('datetime', inplace=True)
# 计算5分钟数据的收盘价
df_5min = df['close'].resample('5T').last()
# 计算5分钟数据的移动均线SMA(5)和SMA(10)
df_5min['SMA(5)'] = df_5min['close'].rolling(window=5).mean()
df_5min['SMA(10)'] = df_5min['close'].rolling(window=10).mean()
# 计算双移动均线策略的收益
df_1min = df.copy()
df_1min['SMA(5)'] = df_1min['close'].rolling(window=5).mean()
df_1min['SMA(10)'] = df_1min['close'].rolling(window=10).mean()
df_1min['position'] = np.where(df_1min['SMA(5)'] > df_1min['SMA(10)'], 1, -1)
df_1min['returns'] = df_1min['close'].pct_change() * df_1min['position'].shift(1)
cumulative_returns = (1 + df_1min['returns']).cumprod() - 1
# 计算动量策略收益
df_1min['returns_momentum_1min'] = df_1min['close'].pct_change()
df_5min['returns_momentum_5min'] = df_5min['close'].pct_change()
df_10min = df['close'].resample('10T').last()
df_10min['returns_momentum_10min'] = df_10min['close'].pct_change()
df_15min = df['close'].resample('15T').last()
df_15min['returns_momentum_15min'] = df_15min['close'].pct_change()
# 绘制5分钟数据的K线图
fig, ax = plt.subplots()
df_5min['close'].plot(ax=ax)
df_5min['SMA(5)'].plot(ax=ax)
df_5min['SMA(10)'].plot(ax=ax)
ax.legend(['Close', 'SMA(5)', 'SMA(10)'])
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.set_title('HS300 5-minute Data')
plt.show()
# 输出结果
print("双移动均线策略收益为:", cumulative_returns[-1])
print("1分钟数据的动量策略收益为:", df_1min['returns_momentum_1min'].sum())
print("5分钟数据的动量策略收益为:", df_5min['returns_momentum_5min'].sum())
print("10分钟数据的动量策略收益为:", df_10min['returns_momentum_10min'].sum())
print("15分钟数据的动量策略收益为:", df_15min['returns_momentum_15min'].sum())
```
其中,该实例使用了pandas、numpy和matplotlib库来进行数据处理、计算和可视化。首先读取沪深300指数2022.4.1日-2023.3.30日的1分钟高频数据,然后根据时间序列将数据转换为5分钟数据,并计算5分钟数据的移动均线SMA(5)和SMA(10)。接着,使用1分钟数据计算双移动均线策略的收益,并使用1分钟、5分钟、10分钟和15分钟数据计算动量策略的收益。最后,绘制5分钟数据的K线图,并输出结果。
阅读全文