修复代码问题
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user