用python双均值策略
时间: 2023-05-27 10:01:23 浏览: 142
双均值策略是一种基于移动平均线的简单交易策略,使用两条移动平均线来发出交易信号。当较短期的均线穿过较长期的均线向上突破时,产生买入信号;当较短期的均线穿过较长期的均线向下突破时,产生卖出信号。
以下是使用Python实现双均值策略的代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('data.csv')
# 计算短期均线和长期均线
short_ma = df['Close'].rolling(window=5).mean()
long_ma = df['Close'].rolling(window=10).mean()
# 交易信号
signals = pd.Series(0, index=df.index)
signals[5:] = np.where(short_ma[5:] > long_ma[5:], 1, 0)
signals[5:] = np.where(short_ma[5:] < long_ma[5:], -1, signals[5:])
# 持仓情况
positions = signals.diff()
# 绘制图表
fig = plt.figure()
ax1 = fig.add_subplot(111, ylabel='Price')
df['Close'].plot(ax=ax1, color='r', lw=2.)
short_ma.plot(ax=ax1, color='g', lw=2.)
long_ma.plot(ax=ax1, color='b', lw=2.)
plt.legend(['Price', 'Short ma', 'Long ma'], loc='upper left')
# 画出买卖信号
ax1.plot(signals[signals == 1].index, df['Close'][signals == 1], '^', markersize=10, color='m')
ax1.plot(signals[signals == -1].index, df['Close'][signals == -1], 'v', markersize=10, color='k')
plt.show()
```
在这个例子中,我们使用了一个名为"data.csv"的数据文件。你可以将其替换为具体的股票或其他资产的历史价格数据。
该代码将股票价格和短期/长期移动平均线绘制在同一图表中,并标记出交易信号(买入信号为向上箭头,卖出信号为向下箭头)。
请注意,这是一个非常简单的交易策略,仅供学习和演示用途。实际上,双均值策略可能无法在真实的市场环境中获得可靠的收益。
阅读全文