research: 一类线重开——病根是选样×止损的交互,不是没机会
用户问「修改 B1/B2 的识别规则呢」,查下来推翻了 §3.399 的关闭结论。 step65 先量机会本身:直接取 seg_list(不经过检测器),线段中位幅度 11.4 ATR, 扣掉 2.9 ATR 确认成本还剩 8.5,是止损的 4.26 倍,93% 的线段装得下。 五币四级别一致。**滞后不是瓶颈**,与原先预期相反。 但这与 §3.397 矛盾(空间在却拿不到),step66 给出解答:之前六次进攻每次只动 一半。完美选样配 2ATR 止损是 0.70/0.83,无选样配结构止损是 0.36, **两个一起是 2.29(5m)/4.11(15m)**,胜率 36%→63% / 44%→70%。是交互不是叠加。 机制来自 MFE/MAE:真底那批逆向行程中位仅 2.24 ATR,2 ATR 止损打掉了 51~58% 的好单;非真底那批逆向行程中位 4.76,放宽只是亏更多。固定 2 ATR 同时做错两件事。 ⚠️ 上界含两个未来函数(线段端点选样、sure_time 入场),是靶子不是策略。 顺带证伪一个我自己的猜测:step58 首轮用 r_scale=True 把 3.9 ATR 止损对应的 runner 目标推到 15.6 ATR(比整段行情还长)。加 --abs-targets 改绝对目标重跑, PF 仍是 0.36,与 r_scale 版完全相同。首轮结论正确,只是理由错了。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -117,6 +117,12 @@ def main() -> None:
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("--tf", default="5m")
|
||||
ap.add_argument("--rows", type=int, default=200_000)
|
||||
# step65 发现线段中位幅度只有 11.4 ATR,而 r_scale 会把 3.9 ATR 的结构止损
|
||||
# 对应的 runner 目标推到 15.6 ATR —— 比整段行情还长,永远打不到。
|
||||
# 本脚本首轮全程用了 r_scale=True,等于「放宽止损」和「目标够不着」同时生效,
|
||||
# 两个效应互相抵消,那轮的结论无效。绝对目标才是与 11.4 ATR 相容的口径。
|
||||
ap.add_argument("--abs-targets", action="store_true",
|
||||
help="目标位用绝对 ATR(3/8)而非按止损等比放大")
|
||||
args = ap.parse_args()
|
||||
|
||||
d = pd.read_feather(SRC)
|
||||
@@ -149,7 +155,7 @@ def main() -> None:
|
||||
df = fetch_ohlcv(f"{sym}/USDT:USDT", args.tf, args.rows)
|
||||
cache[(sym, args.tf)] = TF_DF(df, 1, args.tf).dataframe
|
||||
|
||||
print("目标随止损等比放大,恒定 1.5R 减半 / 4R 收尾,与实盘的 2/3/8 同构。")
|
||||
print(f"目标位口径:{'绝对 3/8 ATR(装得进 11.4 ATR 的线段)' if args.abs_targets else '随止损等比放大(恒定 1.5R/4R)'}")
|
||||
for flip in (False, True):
|
||||
for label, margin in [("固定2ATR", None), ("结构+0.25", 0.25),
|
||||
("结构+0.5", 0.5), ("结构+1.0", 1.0),
|
||||
@@ -166,7 +172,7 @@ def main() -> None:
|
||||
# 入场价另一侧同样宽度处,否则两组比的不是同一个东西
|
||||
sl = (np.full(len(x), 2.0) if margin is None
|
||||
else (x.to_ext.values + margin))
|
||||
res = simulate(cdf, t, sl)
|
||||
res = simulate(cdf, t, sl, r_scale=not args.abs_targets)
|
||||
ok = res.g.notna().values
|
||||
gs.append(res.g[ok])
|
||||
rs.append(res.r[ok])
|
||||
|
||||
Reference in New Issue
Block a user