Python 量化交易入门:移动平均线策略详解

量化交易中,移动平均线(Moving Average,MA)是一个非常重要且实用的技术指标。它通过计算一定时期内的平均价格,帮助交易者过滤掉市场噪音,更好地把握价格走势。本文将详细介绍如何使用 Python 实现移动平均线策略,并结合实例讲解其在量化交易中的应用。

移动平均线基础

移动平均线主要有两种类型:

  1. 简单移动平均线(SMA):对过去 N 个周期的价格进行算术平均
  2. 指数移动平均线(EMA):赋予近期价格更高的权重,对市场变化更敏感

示例代码:计算特斯拉股票的移动平均线

import yfinance as yf
import matplotlib.pyplot as plt

# 下载特斯拉股票数据
df = yf.download('TSLA', start='2023-01-01', end='2024-01-01')

# 计算不同周期的简单移动平均线
df['SMA_20'] = df['Close'].rolling(window=20).mean()  # 20日均线
df['SMA_50'] = df['Close'].rolling(window=50).mean()  # 50日均线
df['SMA_100'] = df['Close'].rolling(window=100).mean()  # 100日均线

# 绘制K线图和均线
plt.figure(figsize=(12, 8))
plt.plot(df.index, df['Close'], label='收盘价', alpha=0.5)
plt.plot(df.index, df['SMA_20'], label='20日均线', alpha=0.8)
plt.plot(df.index, df['SMA_50'], label='50日均线', alpha=0.8)
plt.plot(df.index, df['SMA_100'], label='100日均线', alpha=0.8)
plt.title('特斯拉股票价格与移动平均线')
plt.xlabel('日期')
plt.ylabel('价格(美元)')
plt.legend()
plt.show()

交易信号识别

黄金交叉与死亡交叉

  • 黄金交叉:短期均线上穿长期均线,产生买入信号
  • 死亡交叉:短期均线下穿长期均线,产生卖出信号

示例代码:识别均线交叉信号

# 计算黄金交叉和死亡交叉
df['金叉信号'] = (df['SMA_20'] > df['SMA_50']) & (df['SMA_20'].shift(1) <= df['SMA_50'].shift(1))
df['死叉信号'] = (df['SMA_20'] < df['SMA_50']) & (df['SMA_20'].shift(1) >= df['SMA_50'].shift(1))

# 在图表上标注交叉信号点
plt.figure(figsize=(12, 8))
plt.plot(df.index, df['Close'], label='收盘价', alpha=0.5)
plt.plot(df.index, df['SMA_20'], label='20日均线', color='orange')
plt.plot(df.index, df['SMA_50'], label='50日均线', color='blue')

# 标注金叉和死叉位置
plt.plot(df.index[df['金叉信号']], df['SMA_20'][df['金叉信号']], '^', 
         color='g', markersize=10, label='黄金交叉')
plt.plot(df.index[df['死叉信号']], df['SMA_20'][df['死叉信号']], 'v',
         color='r', markersize=10, label='死亡交叉')

plt.title('特斯拉股票均线交叉信号')
plt.xlabel('日期')
plt.ylabel('价格(美元)')
plt.legend()
plt.show()

常用周期选择

  • 短期:5、10、20 个周期,适合短线交易
  • 中期:50 个周期,用于观察中期趋势
  • 长期:100、200 个周期,适合长期趋势分析

使用注意事项

  1. 移动平均线是滞后指标,可能无法及时反映市场急剧变化
  2. 在震荡市场中容易产生假信号
  3. 建议与其他技术指标配合使用,提高交易成功率

总结

移动平均线是量化交易中不可或缺的技术指标,通过 Python 可以轻松实现均线策略的回测和实盘交易。本文介绍的方法为入门级应用,建议读者在实际交易中结合其他技术指标和风险控制手段,构建更完善的交易系统。

参考文章

  1. Moving Averages Explained:https://centerpointsecurities.com/moving-averages/
  2. Golden Cross vs Death Cross:https://www.investopedia.com/terms/g/goldencross.asp
  3. Support & Resistance Levels:https://www.babypips.com/learn/forex/moving-averages-as-support-and-resistance

来源: 数据科学实战 数据科学研习社

THE END