写期货量化交易均线策略及源代码
时间: 2023-05-31 21:04:24 浏览: 247
量化交易均线策略是一种经典的交易策略,它通过计算价格的均线来判断市场趋势和买卖信号。在期货市场中,均线策略同样适用。下面是一种基于均线的期货量化交易策略及对应的Python源代码。
策略描述:
1. 计算5日均线和20日均线;
2. 当5日均线上穿20日均线时,产生买入信号;
3. 当5日均线下穿20日均线时,产生卖出信号;
4. 每次交易只持仓一张期货合约;
5. 设定止盈和止损点位。
Python源代码:
```
import numpy as np
import pandas as pd
import tushare as ts
# 读取期货数据
df = ts.get_k_data('rb2101', start='2020-01-01', end='2021-12-31', ktype='D')
# 计算5日均线和20日均线
df['MA5'] = df['close'].rolling(5).mean()
df['MA20'] = df['close'].rolling(20).mean()
# 产生交易信号
df['signal'] = np.where(df['MA5'] > df['MA20'], 1, 0)
df['signal'] = np.where(df['MA5'] < df['MA20'], -1, df['signal'])
# 计算持仓情况和收益
df['position'] = df['signal'].shift()
df['position'] = np.where(df['position'].isnull(), 0, df['position'])
df['pnl'] = df['position'] * (df['close'] - df['close'].shift())
# 计算止盈和止损点位
df['stop_loss'] = df['entry_price'] * 0.98
df['take_profit'] = df['entry_price'] * 1.02
# 回测结果
df['cum_pnl'] = df['pnl'].cumsum()
df['cum_return'] = df['cum_pnl'] / df['close'][0]
print(df.tail())
```
在以上代码中,我们使用了TuShare库来获取期货数据,并通过rolling()函数计算5日均线和20日均线。接着,我们使用了numpy库中的where()函数来产生交易信号,当5日均线上穿20日均线时产生买入信号,当5日均线下穿20日均线时产生卖出信号。我们还计算了持仓情况和收益,并设定了止盈和止损点位。最后,我们计算了回测结果,包括累计收益和累计收益率。
需要注意的是,以上策略仅供参考,实际交易中还需要考虑其他因素,如手续费、滑点等。
阅读全文