fix: entry_price改用最新成交价(last_trade_price)而非VWAP

VWAP是30分钟加权均价,快速行情下与实际价偏差可达1-2%
历史587笔entry_price+596笔pnl_r已用agg_trades真实价修正
平均偏差31.9bps, 最大189.4bps(1.9%)
V5.1: 42.18R→15.32R | V5.2: 29.83R→0.76R
This commit is contained in:
dev-worker 2026-03-03 02:53:56 +00:00
parent 66b094c711
commit 262594f16e

View File

@ -291,6 +291,7 @@ class SymbolState:
self.win_vwap = TradeWindow(WINDOW_VWAP) self.win_vwap = TradeWindow(WINDOW_VWAP)
self.atr_calc = ATRCalculator() self.atr_calc = ATRCalculator()
self.last_processed_id = 0 self.last_processed_id = 0
self.last_trade_price = 0.0
self.warmup = True self.warmup = True
self.prev_cvd_fast = 0.0 self.prev_cvd_fast = 0.0
self.prev_cvd_fast_slope = 0.0 self.prev_cvd_fast_slope = 0.0
@ -312,6 +313,7 @@ class SymbolState:
self.win_day.trim(now_ms) self.win_day.trim(now_ms)
self.win_vwap.trim(now_ms) self.win_vwap.trim(now_ms)
self.last_processed_id = agg_id self.last_processed_id = agg_id
self.last_trade_price = price # 最新成交价用于entry_price
def compute_p95_p99(self) -> tuple: def compute_p95_p99(self) -> tuple:
if len(self.win_day.trades) < 100: if len(self.win_day.trades) < 100:
@ -346,7 +348,7 @@ class SymbolState:
atr_pct = self.atr_calc.atr_percentile atr_pct = self.atr_calc.atr_percentile
p95, p99 = self.compute_p95_p99() p95, p99 = self.compute_p95_p99()
self.update_large_trades(now_ms, p99) self.update_large_trades(now_ms, p99)
price = vwap if vwap > 0 else 0 price = self.last_trade_price if self.last_trade_price > 0 else vwap # 用最新成交价非VWAP
cvd_fast_slope = cvd_fast - self.prev_cvd_fast cvd_fast_slope = cvd_fast - self.prev_cvd_fast
cvd_fast_accel = cvd_fast_slope - self.prev_cvd_fast_slope cvd_fast_accel = cvd_fast_slope - self.prev_cvd_fast_slope
self.prev_cvd_fast = cvd_fast self.prev_cvd_fast = cvd_fast