跳至正文
全部策略

策略

回测: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”为由放弃;从未进行回测、优化或分析师审查,因此策略可行性从未得到衡量。

假设

逐行移植 geraked 的 MetaTrader 5 专家顾问 CEZLSMA.mq5 v1.6(MIT 许可证,github.com/geraked/metatrader5,提交 d3eb29c)。原版运行于 AUDUSD M15。策略应归功于作者。每根新柱线只读取一次指标,数据取自最近的 CLOSED 根柱线 [1] 以及它之前的柱线 [2]。(1)常规蜡烛图的 Heikin-Ashi 收盘价 HA_C = (O+H+L+C)/4。(2)Chandelier Exit 的周期为 ATR 1,乘数为 0.75:longStop = highest(1) - 0.75*ATR(1),shortStop = lowest(1) + 0.75*ATR(1),两者均按通常方式逐步收紧。收盘价高于前一根柱线的 shortStop 时,方向切换为做多;收盘价低于前一根柱线的 longStop 时,方向切换为做空。买入缓冲区 CE_B 在方向切换为做多的柱线上保存 longStop 值 ONLY(其他情况为 0);CE_S 对卖出侧执行相同操作。开发者应准确复现 geraked 的……展开收起

逐行移植 geraked 的 MetaTrader 5 专家顾问 CEZLSMA.mq5 v1.6(MIT 许可证,github.com/geraked/metatrader5,提交 d3eb29c)。原版运行于 AUDUSD M15。策略应归功于作者。每根新柱线只读取一次指标,数据取自最近的 CLOSED 根柱线 [1] 以及它之前的柱线 [2]。(1)常规蜡烛图的 Heikin-Ashi 收盘价 HA_C = (O+H+L+C)/4。(2)Chandelier Exit 的周期为 ATR 1,乘数为 0.75:longStop = highest(1) - 0.75*ATR(1),shortStop = lowest(1) + 0.75*ATR(1),两者均按通常方式逐步收紧。收盘价高于前一根柱线的 shortStop 时,方向切换为做多;收盘价低于前一根柱线的 longStop 时,方向切换为做空。买入缓冲区 CE_B 在方向切换为做多的柱线上保存 longStop 值 ONLY(其他情况为 0);CE_S 对卖出侧执行相同操作。开发者应准确复现 geraked 的 Indicators/ChandelierExit.mq5,包括其中的 useClose 设置。(3)ZLSMA(50):lsma = linreg(src, 50, 0),lsma2 = linreg(lsma, 50, 0),ZLSMA = 2*lsma - lsma2。EA 会传入第二个参数 'true',在 geraked 的 ZLSMA.mq5 中,这会选择 Heikin-Ashi 收盘价作为数据源。应复现该文件。交易场所映射:将 FX 来源映射为 BINANCE USD-M 永续合约,因为该策略支持做多和做空,并使用保证金(MarginLimit 300%)。选择 LTCUSDT 是因为它在我们的语料中流动性好、流通份额较小,并且在 Binance 上有多年期 15m 历史数据(15m 在 Hyperliquid 上不可行,且 OKX 15m 深度未经核实)。BINANCE 超出配额;鉴于 15m 的历史数据要求,我们接受这一点。按点数计量的距离会根据价格进行换算:AUDUSD 上的 SLDev = 650 点(在 0.68 左右时为 0.0065)换算为价格的 0.95%。源代码中关闭的设置保持关闭:News=false、SpreadLimit=-1、EquityDrawdownLimit=0、MultipleOpenPos=false、Reverse=false、GridTrailingStopLevel=0。亏损时的马丁格尔加仓默认关闭。费用:Binance 每笔市价单每侧收取 USD-M 吃单方费率 0.05%,包括每次网格加仓。注意:忠实复现也会保留源策略的风险。我们提炼出的经验 L167(忠实移植的 FX/零费率脚本会失效)和 L171(网格/库存设计会失效)直接适用于此策略。本策略已预先登记为忠实复现,供回测评判;这并不意味着声称其具有优势。

第 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 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。