量化交易Python代码
时间: 2023-03-21 11:01:46 浏览: 227
以下是一个简单的使用Python进行量化交易的示例代码,包括获取历史股票数据、计算移动平均线、判断买卖信号等。
```
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import yfinance as yf
# 获取股票数据
data = yf.download('AAPL', start='2010-01-01', end='2022-02-28')
# 计算10日和30日移动平均线
data['MA10'] = data['Close'].rolling(window=10).mean()
data['MA30'] = data['Close'].rolling(window=30).mean()
# 买入信号:10日均线上穿30日均线
data['signal'] = np.where(data['MA10'] > data['MA30'], 1, 0)
# 计算持仓情况
data['position'] = data['signal'].diff()
# 绘制股票价格和移动平均线图表
plt.figure(figsize=(12, 6))
plt.plot(data['Close'], label='AAPL')
plt.plot(data['MA10'], label='MA10')
plt.plot(data['MA30'], label='MA30')
plt.legend()
# 绘制买卖信号图表
plt.figure(figsize=(12, 6))
plt.plot(data['signal'], label='signal')
plt.plot(data['Close'], label='AAPL', alpha=0.5)
plt.plot(data[data['position'] == 1].index,
data['Close'][data['position'] == 1],
'^', markersize=10, color='g', label='buy')
plt.plot(data[data['position'] == -1].index,
data['Close'][data['position'] == -1],
'v', markersize=10, color='r', label='sell')
plt.legend()
# 输出收益情况
returns = np.log(data['Close']/data['Close'].shift(1))
returns = returns * data['position'].shift(1)
print('Cumulative Returns: %.2f%%' % (np.exp(returns.cumsum()[-1]) - 1))
```
以上代码使用了yfinance库来获取股票数据,计算了10日和30日的移动平均线,并使用交叉验证法判断买入信号。最后绘制了股票价格和移动平均线图表以及买卖信号图表,并计算了收益情况。请注意,这只是一个简单的示例代码,实际上的量化交易需要更复杂的模型和策略。
阅读全文
相关推荐
















