策略
回测:CEZLSMA移植(MIT),吊灯退出翻转 + 平均 K 线收盘价对比 ZLSMA(50),50%移动止损,1.5x网格加仓,LTCUSDT.BINANCE 15m 多空 | Stratmill
结局: 已放弃
CezlsmaChandelierZlsmaGridLS
结局总结
CezlsmaChandelierZlsmaGridLS 尝试复刻 geraked 的 CEZLSMA MT5 专家顾问,在 LTCUSDT 15 分钟 Binance 永续合约上运行:吊灯退出翻转由平均 K 线收盘价相对 ZLSMA(50) 的位置过滤,并使用移动止损和 x1.5 均价网格。假设本身已警示,教训 L167(忠实移植 FX 会失败)和 L171(网格设计会失败)适用于此策略。编码三次超时后,运行以“coding_stuck_3_timeouts”为由放弃;从未进行回测、优化或分析师审查,因此策略可行性从未得到衡量。
假设
第 2 次迭代修复了第 -3 层沙盒超时,交易逻辑未变。(1)每根 K 线的成本会随历史增长:每根有未平仓篮子的 K 线都会调用基类 _close_pending(),它会遍历 cache.orders()(所有曾创建的订单);篮子还会每根 K 线撤销并重新提交其移动止损 / TP / 网格订单,因此订单缓存每根 K 线约增加 2 个订单。结果为 O(n^2)。(2)篮子的待平仓检查现在只扫描 cache.orders_open()(少量订单)。(3)静置订单通过 _sync_orders() 处理:将目标订单集(类型、方向、数量、按合约精度处理的价格)与未平仓订单比较,只有集合发生变化时才撤单并重新提交。现在每根 K 线的工作量为 O(zl_period + 未平仓订单),与回测跨度无关。保留第 1 次迭代中的 K 线级近似:将 EA 的 30 秒计时器替换为在每个 15 分钟收盘时重新评估的交易场所静置止损/限价订单。注意(根据 L167/L171):忠实移植 FX 脚本的网格策略预计难以抵御 Binance 手续费;由回测来评判。
coding_stuck_3_timeouts
实现
在 LTCUSDT.BINANCE 15 分钟周期上忠实移植 geraked 的 CEZLSMA v1.6(MIT)。Chandelier Exit 翻转时入场(Heikin-Ashi 蜡烛图上的 ATR(1),乘数 0.75),并由 HA 收盘价与 HA 收盘价对比 ZLSMA(50) 进行过滤。SL 距离 = CE 止损 ± 价格的 0.95%;按 3% 风险确定仓位,保证金上限为 3x。单仓:50% 移动止损。网格:篮子逆向每隔 pd 加入 1.5x 交易量;篮子在首仓风险加费用时 TP。篮子净盈利时,在 HA/ZLSMA 交叉时平仓。
迭代历史
sandbox_timeout:验证失败(第 3 层——沙盒回测):在约 20000 根 K 线的窗口(LTCUSDT.BINANCE-15-MINUTE-LAST-EXTERNAL 的 208 天)上,冒烟测试超过了 300 秒墙钟时间限制。这几乎总是意味着每根 K 线的工作量会随历史数据增加,例如反复扫描完整的资金费率/补充序列,或在每根 K 线上于 calculate_signal()/on_bar() 内重建列表并调用 min()/sorted()。在 __init__ 中预先计算排序后的时间戳数组 ONCE 并使用 bisect,或按时间戳缓存查找结果,使每根 K 线的成本为 O(log n),而非 O(n)。
结局总结
多文件 MT5 专家顾问(自定义指标加上 EAUtils 网格、跟踪和成交量逻辑)的逐行移植可能过于庞大,无法在编码时限内完成,因此应在开始编码前缩小移植范围或拆分任务。
运行在编码阶段以“coding_stuck_3_timeouts”为由放弃,共进行了 3 次迭代。未进入验证、回测、回测审查、优化、分析师审查或风险审查阶段。
忠实移植 geraked 的 MIT 许可版 MT5 专家顾问 CEZLSMA v1.6,从 AUDUSD M15 转为在 LTCUSDT.BINANCE 15 分钟永续合约上运行:吊灯退出(ATR 1,x0.75)方向翻转时进场做多或做空,并由平均 K 线收盘价相对 ZLSMA(50) 的位置确认;策略使用 50% 移动止损和 x1.5 均价网格加仓。该假设登记为复刻测试,并非优势声明。
没有绩效数据:回测报告为空,也未生成优化报告,因此没有收益、夏普比率或交易次数数据。
分析
CEZLSMA
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。