编写一段由5日均线、10日均线、20日均线、40日均线、80日均线组合而成的量化交易程序
时间: 2023-03-02 22:08:36 浏览: 196
利用均线间隔距离来进行交易的系统方案.pdf
以下是一段基于Python的量化交易程序,它使用5日均线、10日均线、20日均线、40日均线和80日均线组合来进行交易决策。请注意,这个程序只是示例,并不是真正的投资建议。在实际交易中使用时,需要根据个人投资目标和风险承受能力进行适当的调整。
```python
import pandas as pd
import yfinance as yf
# 获取股票历史数据
stock = yf.Ticker('AAPL')
df = stock.history(period='max')
# 计算均线
df['MA5'] = df['Close'].rolling(window=5).mean()
df['MA10'] = df['Close'].rolling(window=10).mean()
df['MA20'] = df['Close'].rolling(window=20).mean()
df['MA40'] = df['Close'].rolling(window=40).mean()
df['MA80'] = df['Close'].rolling(window=80).mean()
# 定义交易策略
def trade_signal(data):
if data['MA5'] > data['MA10'] > data['MA20'] > data['MA40'] > data['MA80']:
return 'Buy'
elif data['MA5'] < data['MA10'] < data['MA20'] < data['MA40'] < data['MA80']:
return 'Sell'
else:
return 'Hold'
# 计算交易信号
df['Signal'] = df.apply(trade_signal, axis=1)
# 计算每天持仓情况
df['Position'] = df['Signal'].apply(lambda x: 1 if x == 'Buy' else -1 if x == 'Sell' else 0)
df['Position'] = df['Position'].shift(1).fillna(0)
# 计算每天收益
df['Returns'] = df['Close'].pct_change() * df['Position']
# 计算累计收益率
df['Cumulative Returns'] = (1 + df['Returns']).cumprod()
# 输出结果
print(df)
```
这段程序首先使用了`yfinance`库来获取苹果公司(AAPL)的历史股票价格数据。然后,它计算了5日、10日、20日、40日和80日的简单移动均线。接下来,它定义了一个交易策略,如果这五个均线依次上升,那么就买入股票;如果这五个均线依次下降,那么就卖出股票;否则就持有不动。程序接着计算了每天的持仓情况,每天的收益和累计收益率,并将这些数据输出。
阅读全文