加入一个回测,

This commit is contained in:
ddrwode
2026-03-05 17:46:34 +08:00
parent 6b1a707e3f
commit 79f4e03d6a
7 changed files with 422739 additions and 7 deletions

View File

@@ -30,6 +30,8 @@ class BBDelayReversalConfig:
# 布林带参数
BB_PERIOD = 10
BB_STD = 2.5
BB_DDOF = 1 # 与回测pandas rolling.std()默认一致
BB_USE_FORMING_CANDLE = False # True更贴近网页实时指标False更稳健
# 仓位管理(从框架获取)
LEVERAGE = "50"
@@ -206,7 +208,7 @@ class BBDelayReversalTrader:
return None
arr = np.array(closes[-self.cfg.BB_PERIOD:], dtype=float)
mid = arr.mean()
std = arr.std(ddof=0)
std = arr.std(ddof=self.cfg.BB_DDOF)
upper = mid + self.cfg.BB_STD * std
lower = mid - self.cfg.BB_STD * std
return mid, upper, lower
@@ -424,6 +426,10 @@ class BBDelayReversalTrader:
logger.info(f"布林带延迟反转策略启动")
logger.info(f"BB({self.cfg.BB_PERIOD}, {self.cfg.BB_STD}) | "
f"{self.cfg.LEVERAGE}x {self.cfg.OPEN_TYPE}")
logger.info(
f"BB细节: ddof={self.cfg.BB_DDOF} | "
f"forming_candle={self.cfg.BB_USE_FORMING_CANDLE}"
)
logger.info("=" * 60)
# 设置杠杆
@@ -492,7 +498,8 @@ class BBDelayReversalTrader:
continue
# 计算布林带
closes = [k['close'] for k in closed_klines]
bb_source = klines if self.cfg.BB_USE_FORMING_CANDLE else closed_klines
closes = [k['close'] for k in bb_source]
bb = self.calc_bollinger(closes)
if bb is None:
time.sleep(self.cfg.POLL_INTERVAL)
@@ -500,11 +507,8 @@ class BBDelayReversalTrader:
bb_mid, bb_upper, bb_lower = bb
# 获取当前价
current_price = self.get_current_price()
if current_price is None:
time.sleep(self.cfg.POLL_INTERVAL)
continue
# 当前价优先使用当前5m实时K线close避免1m收盘价滞后导致观感偏差
current_price = float(current_kline['close'])
cur_high = current_kline['high']
cur_low = current_kline['low']