research: 结构止损对照(step58),止损确实太紧但不是主因
用户提出 B1 做多的止损可能挂在 B2 低点上方,于是在那次正常回抽处被打掉。 观察成立且比预估严重:入场价到结构极值中位 2.90 ATR,2ATR 止损落在结构位 内侧 0.90 ATR,88.6% 的一类做多价格不用回踩到前低就已出局。 修掉有改善但救不活:结构位外侧 1.5ATR 止损把胜率从 16.7% 抬到 33.1%、 PF 从 0.22 到 0.36,仍深度为负。同口径下反手做空 PF 2.15~2.53。 做这个对照时目标必须随止损等比放大(恒定 1.5R 减半/4R 收尾),否则放宽止损 却不放大目标会把盈亏比压到 1 以下,测出来的「放宽无效」是自证的。故 walk_exits 不能用,自带了逐笔止损的模拟器。 最有说服力的读法是结构+1.5 那档:止损宽达 4.4 ATR 仍有 67% 被打掉,即 三分之二的一类信号会在 48 根内跌破结构低点再多走 1.5 ATR。缠论里「B2 回踩 不破前低」在本市场多数时候不成立,趋势确实越过第二类买卖点继续走原方向。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -126,6 +126,10 @@ def collect(sym: str, rows: int, tf: str = "1m") -> pd.DataFrame | None:
|
||||
"i_ext": i_ext, "i_sure": i_sure,
|
||||
"lag_bars": i_sure - i_ext,
|
||||
"atr_bp": a / px_ideal * 1e4,
|
||||
# 结构位:笔末 KLC 的实际极值,不是收盘。止损要挂在它外面
|
||||
# 才谈得上「守住结构」,用收盘价会把插针那一段漏掉
|
||||
"ext_px": float(b.klc.low if d == 1 else b.klc.high),
|
||||
"entry_px": px_real,
|
||||
# 等待期间价格顺着信号方向跑掉了多少(正 = 你追高/追空,吃亏)
|
||||
"drift_atr": (px_real - px_ideal) * d / a,
|
||||
"drift_bp": (px_real - px_ideal) * d / px_ideal * 1e4,
|
||||
@@ -161,6 +165,8 @@ def collect(sym: str, rows: int, tf: str = "1m") -> pd.DataFrame | None:
|
||||
for k in ("g", "r", "c", "b"):
|
||||
r["f_" + k] = rf[f"{cfg}_{k}"].to_numpy()
|
||||
r["atr_pct"] = atr[r.i_sure.values] / cl[r.i_sure.values]
|
||||
# 原始 ATR,供结构止损换算用。atr_pct 除过价格,换不回来
|
||||
r["atr_at_entry"] = atr[r.i_sure.values]
|
||||
return r
|
||||
except Exception as e:
|
||||
print(f" {sym} 失败: {e!r}", flush=True)
|
||||
|
||||
Reference in New Issue
Block a user