双均线策略
双均线策略是最经典的趋势跟踪策略之一
策略原理
双均线策略通过计算两条不同周期的移动平均线,利用它们的金叉和死叉信号来判断买卖时机:
短期均线:反映近期价格趋势(如 MA5、MA10)
长期均线:反映中长期价格趋势(如 MA20、MA50、MA200)
核心逻辑:
短期均线上穿长期均线 → 金叉 → 买入信号(趋势转多)
短期均线下穿长期均线 → 死叉 → 卖出信号(趋势转空)
策略实现
class DualMovingAverageCrossStrategy(BaseStrategy):
"""双均线趋势跟踪策略"""
VALID_FUNCS = [ta.sma, ta.ema, ta.wma]
def __init__(self, func: Callable, fast: int=20, slow: int=50):
"""
参数:
fast: 短期均线周期
long_window: 长期均线周期
"""
if func not in self.VALID_FUNCS:
raise ValueError(f"不支持该函数: {func.__name__}")
self.fast = fast
self.slow = slow
self.func = func
def generate_signals(self, df: pd.DataFrame) -> tuple:
"""生成交易信号"""
close = df['close']
# 计算两条移动平均线
fast_ma: pd.DataFrame = self.func(close=close, length=self.fast)
slow_ma: pd.DataFrame = self.func(close=close, length=self.slow)
entries = (fast_ma > slow_ma) & (fast_ma.shift(1) <= slow_ma.shift(1))
exits = (fast_ma < slow_ma) & (fast_ma.shift(1) >= slow_ma.shift(1))
return entries, exits