1
0

修复代码问题

This commit is contained in:
2026-01-28 09:46:44 +08:00
parent 9a46bd7e4c
commit 5cc140259e
3 changed files with 86 additions and 113 deletions

View File

@@ -5,7 +5,7 @@ SMA 双均线交叉策略
- 当短期均线上穿长期均线时 (金叉),买入
- 当短期均线下穿长期均线时 (死叉),卖出
指标计算:
指标计算 (使用 ta-lib):
- SMA10: 10 日简单移动平均线
- SMA30: 30 日简单移动平均线
- SMA60: 60 日简单移动平均线
@@ -21,19 +21,25 @@ def calculate_indicators(data):
"""
计算策略所需的技术指标
使用 ta-lib 库计算 SMA 指标
参数:
data: DataFrame, 包含 [Open, High, Low, Close, Volume, factor]
返回:
DataFrame, 添加了指标列
DataFrame, 添加了指标列:
- sma10: 10 日简单移动平均线
- sma30: 30 日简单移动平均线
- sma60: 60 日简单移动平均线
- sma120: 120 日简单移动平均线
"""
data = data.copy()
# 计算不同周期的移动平均线
data["sma10"] = data["Close"].rolling(window=10).mean()
data["sma30"] = data["Close"].rolling(window=30).mean()
data["sma60"] = data["Close"].rolling(window=60).mean()
data["sma120"] = data["Close"].rolling(window=120).mean()
data["sma10"] = talib.SMA(data["Close"], timeperiod=10)
data["sma30"] = talib.SMA(data["Close"], timeperiod=30)
data["sma60"] = talib.SMA(data["Close"], timeperiod=60)
data["sma120"] = talib.SMA(data["Close"], timeperiod=120)
return data
@@ -85,3 +91,7 @@ class SmaCross(Strategy):
elif crossover(self.data.sma30, self.data.sma10):
self.position.close() # 先平掉现有仓位
self.sell() # 开空仓
# 导入 talib (必须在文件末尾,因为 calculate_indicators 函数中使用了 talib)
import talib