双均线策略Python代码:跨市场适用 代码介绍 以下代码由今日美股网(www.TodayUSStock.com)代码学院提供,双均线策略通过比较短期移动平均线(SMA)和长期移动平均线(LMA)来生成交易信号。当短期均线上穿长期均线时产生买入信号(金叉),当短期均线下穿长期均线时产生卖出信号(死叉)。此策略因其简单和有效性而被广泛应用于各种市场。 代码及加载方法 Python import pandas as pd
import numpy as np
def sma(data, period):
return data.rolling(window=period).mean()
def dual_moving_average_strategy(data, short_window, long_window):
data['Short_MA'] = sma(data['Close'], short_window)
data['Long_MA'] = sma(data['Close'], long_window)
# 生成交易信号
data['Signal'] = 0
data['Signal'][short_window:] = np.where(data['Short_MA'][short_window:] > data['Long_MA'][short_window:], 1, 0)
data['Position'] = data['Signal'].diff()
# 计算策略收益
data['Returns'] = data['Close'].pct_change()
data['Strategy_Returns'] = data['Returns'] * data['Signal'].shift(1)
# 计算累计收益
data['Cumulative_Returns'] = (1 + data['Strategy_Returns']).cumprod()
return data
# 假设我们有一个包含不同市场数据的DataFrame 'data'
# 'data'的结构应至少包含'Date', 'Close'列
# 这里仅作为示例,实际使用时需要替换为真实的数据获取方法
data = pd.DataFrame({
'Date': pd.date_range(start='2023-01-01', periods=1000),
'Close': np.random.randn(1000).cumsum() + 100 # 假设价格随时间缓慢上升
})
# 定义短期和长期均线周期
short_window = 50
long_window = 200
# 应用双均线策略
results = dual_moving_average_strategy(data, short_window, long_window)
# 打印策略表现
print("策略总收益:", results['Cumulative_Returns'].iloc[-1] - 1)
print(results[['Date', 'Close', 'Short_MA', 'Long_MA', 'Signal', 'Position', 'Strategy_Returns', 'Cumulative_Returns']])
# 可视化
import matplotlib.pyplot as plt
plt.figure(figsize=(14, 7))
plt.plot(results['Date'], results['Close'], label='Close Price')
plt.plot(results['Date'], results['Short_MA'], label=f'SMA {short_window}')
plt.plot(results['Date'], results['Long_MA'], label=f'SMA {long_window}')
plt.plot(results['Date'], results['Signal']*results['Close'].max()*1.05, label='Signal', alpha=0.5)
plt.title('Dual Moving Average Strategy')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show() 加载方法: 将上述代码保存为一个Python文件,例如"Dual_MA_Strategy.py"。然后使用Python环境运行此脚本,确保安装了所需的库(pandas, numpy, matplotlib)。你可以通过命令行运行: python Dual_MA_Strategy.py 参数说明 参数 意义 short_window 短期移动平均线的计算周期 long_window 长期移动平均线的计算周期 Signal 交易信号,1表示买入,0表示卖出 Position 持仓变化,1表示新开仓,-1表示平仓 针对不同市场推荐参数 市场类型 短期周期 长期周期 理由 股票 50 200 经典的50/200日均线策略,适用于长期趋势判断 期货 20 60 期货市场波动快,较短周期的均线更能捕捉趋势变化 外汇 21 55 外汇市场波动相对稳定,适中周期的均线适合捕捉中期趋势 加密货币 10 30 加密货币市场波动大,较短周期的均线更敏感 优点和缺点 优点 缺点 简单明了,易于理解和实现 在趋势不明显的市场中信号可能误导 跨市场适用性强 在频繁震荡市场容易产生过多的交易信号 可以轻松调整参数以适应不同市场 均线滞后性,可能会错过趋势的开始或结束 使用建议 双均线策略适合中长期趋势跟踪。在使用时,建议: 结合其他指标如MACD、RSI等,以增强信号的可靠性。 根据市场的波动性和趋势性调整均线周期。 设置止损和止盈策略,管理风险特别是在市场反转时。 注意市场的整体趋势和新闻事件,避免在趋势不明朗时过度交易。 X用户点评 "双均线策略在股票市场长期有效,但要注意市场的整体趋势。" - @TrendFollower "在期货市场,这个策略需要快速反应,因为市场波动大。" - @FuturesDayTrader "外汇市场用双均线策略时,信号可能需要更长时间确认。" - @ForexTrend "加密货币市场的波动性让这个策略需要谨慎使用,调整参数非常关键。" - @CryptoQuant "双均线简单但有效,但记得结合市场其他分析,不要过分依赖单一指标。" - @SimpleTrading 来源:今日美股网lg...