1
0

优化代码风格

This commit is contained in:
2026-01-28 09:54:38 +08:00
parent 5cc140259e
commit a2a261769b
2 changed files with 17 additions and 43 deletions

View File

@@ -38,7 +38,7 @@ def calculate_indicators(data):
返回:
DataFrame, 添加了指标列:
- dif: MACD 线 (dif)
- macd: MACD 线 (macd)
- signal: MACD 信号线 (DEA)
- hist: MACD 柱状图 (Histogram)
- ema: 日指数移动平均线
@@ -49,7 +49,7 @@ def calculate_indicators(data):
# talib.MACD 返回三个值: (macd, macdsignal, macdhist)
macd, macdsignal, macdhist = talib.MACD(data["Close"], fastperiod=10, slowperiod=20, signalperiod=9)
data["dif"] = macd
data["macd"] = macd
data["signal"] = macdsignal
data["hist"] = macdhist
@@ -92,10 +92,10 @@ class MacdTrendStrategy(Strategy):
注册指标到 backtesting 框架
"""
# 注册 MACD 线
self.macd = self.I(lambda x: x, self.data.dif)
self.macd = self.I(lambda x: x, self.data.macd)
# 注册 MACD 信号线
self.macd_signal = self.I(lambda x: x, self.data.signal)
self.signal = self.I(lambda x: x, self.data.signal)
# 注册 EMA 趋势线
self.ema = self.I(lambda x: x, self.data.ema)
@@ -113,12 +113,11 @@ class MacdTrendStrategy(Strategy):
- 或价格 < EMA (趋势转向,强制平仓)
"""
# 买入条件: MACD 金叉 AND 价格 > EMA
if crossover(self.macd, self.macd_signal) and self.data.Close[-1] > self.ema[-1]:
self.position.close() # 先平掉现有仓位
if crossover(self.macd, self.signal) and self.data.Close[-1] > self.ema[-1]:
self.buy() # 开多仓
# 卖出条件: MACD 死叉 OR 价格 < EMA
elif crossover(self.macd_signal, self.macd) or self.data.Close[-1] < self.ema[-1]:
elif crossover(self.signal, self.macd) or self.data.Close[-1] < self.ema[-1]:
self.position.close() # 平掉多仓