写一个量化交易策略双均线策略
时间: 2023-10-10 08:06:49 浏览: 72
好的,以下是一个简单的双均线策略的实现:
1. 策略思路:
双均线策略是一种常见的趋势跟踪策略,它的核心思想是通过计算不同时间段的移动平均线来判断市场的趋势,并根据移动平均线之间的交叉信号进行买入或卖出操作。
2. 策略参数:
选择两条不同的移动平均线,一条是较短期的,一条是较长期的。例如,可以选择5日移动平均线和20日移动平均线。
3. 交易信号:
当短期移动平均线上穿长期移动平均线时,产生买入信号;当短期移动平均线下穿长期移动平均线时,产生卖出信号。
4. 代码实现:
```python
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
# 下载数据
data = yf.download('AAPL', start='2010-01-01', end='2021-01-01')
# 计算5日移动平均线和20日移动平均线
data['MA5'] = data['Close'].rolling(window=5).mean()
data['MA20'] = data['Close'].rolling(window=20).mean()
# 计算交易信号
data['Signal'] = 0
data['Signal'][5:] = np.where(data['MA5'][5:] > data['MA20'][5:], 1, 0)
data['Signal'][5:] = np.where(data['MA5'][5:] < data['MA20'][5:], -1, data['Signal'][5:])
# 计算每日收益率
data['Return'] = np.log(data['Close']/data['Close'].shift(1))
# 计算策略收益率
data['Strategy'] = data['Signal'].shift(1) * data['Return']
# 计算累计收益率
data['Cumulative_Return'] = np.cumsum(data['Strategy'])
# 绘制图形
plt.plot(data['Cumulative_Return'])
plt.xlabel('Date')
plt.ylabel('Cumulative Return')
plt.title('Dual Moving Average Strategy')
plt.show()
```
这里以苹果公司的股票价格为例,下载了2010年至2021年的日线数据,计算出了5日移动平均线和20日移动平均线,并根据交叉信号计算出了交易信号。最后计算出了策略的收益率,并绘制了累计收益率曲线。