跳至正文
全部策略

策略

TrendRider LINK 现货,采用含手续费的退出和连续 BTC RSI

结局: 已放弃

TrendRiderLinkSpotTranslation

结局总结

经过四轮迭代,TrendRiderLinkSpotTranslation 测试了一个冻结的仅做多 LINK 小时移植版本,采用含手续费的退出和持久化 BTC RSI 状态。输入审计和账目核对均通过,但 557 笔已平仓交易产生了 -14.84% 的收益率、-1.162 的夏普比率和 -0.310% 的平均净交易收益率。回测复核因期望收益为负而放弃该次运行;没有已证实的缺陷支持再次修正,也未获准进行参数搜索。尚未进行优化和风险复核;此结果仅适用于该 LINK 小时复制版本,复核中也未独立重新测试指标数值一致性。

假设

修订现有 TrendRider 忠实移植合约,同时保留 LINKUSDT。BINANCE_SPOT 仅做多,在已收盘的 1 小时 K 线上交易,使用 LINK 4 小时/日线辅助 K 线、BTCUSDT.BINANCE 小时信号输入、已应用的源参数和入场分支。每项 ROI 和连续提前退出比较都必须使用含手续费的利润:对于未调整的 1x 多头,net_ratio = close * (1 - exit_fee) / (entry_price * (1 + entry_fee)) - 1。使用平台实际手续费,记账时不得重复扣除。这符合 [Freqtrade trade_model.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/persistence/trade_model.py). 中记录的语义。在入场和退出手续费均为 0.1% 时,价格不变会产生 -0.1998%,因此 764 分钟零-ROI 条件为假;达到盈亏平衡需要价格上涨 0.2002%。使用兼容源实现的初始化方式播种一次 BTC RSI14,并在每根新的 BTC K 线上更新持久化的 Wilder 盈亏状态;不得从滚动的 250 根 K 线窗口重新播种。要求与 TA-Lib 数值及阈值一致,包括先跌后平的数据。明确的平台转换:连续市场的收盘决策在信号 K 线收盘价成交,而非单独的下一根开盘事件;保护性止损通过平台撮合在 K 线内触发;未指定的源策略仓位规模设为 1x 时权益的 20%。保留 6% 保护、源策略追踪行为、ROI 时间表、累积自定义退出和重新入场保护。ATR 仅供参考,因为 use_custom_stoploss=False。所有记录的基线参数均已冻结在保存的合约中。任务限定的 JSON 已写入 workspace/outbox/research_lead/6cdb89d4c3/hypothesis_6cdb89d4c3.json。

详细证据指出的是语义不匹配,而非未经支持的执行能力或对策略的科学性否定。修订后的合约明确要求使用含手续费的退出决策和连续 BTC RSI 状态。它保留了提交的品种、周期和阈值,因为沙盒亏损并未授权对忠实移植进行基于表现的改动。知识快照确认了确切的先前运行及其基线参数。这是明确修正后的复制版本,参数固定,且未围绕已观察到的亏损进行搜索。缺少组合和集中度背景;BTC 仍仅作为源策略要求的信号输入。

negative_expectancy:这个经过修正并冻结的 TrendRider 平台移植版本在 557 笔已平仓 LINK 现货多头交易中亏损:平均净交易收益率为 -0.310%,低于 +0.25% 的复核底线;PF 0.703,总收益率为 -14.840%。QA 的担忧在完整历史中得到印证。没有已证实的代码缺陷,也未获准进行参数搜索,因此没有理由继续迭代或优化。此结论否定的是这个 LINK 小时复制版本,并非源作者在其他市场或执行假设下的策略。此次复核未独立重新测试指标数值一致性。

实现

GPL-3.0 TrendRider 移植:LINK现货、源策略中的六个小时级入场分支、LINK根已收盘的4小时/日线信息蜡烛、持续的BTC小时级RSI14、置信度门控、源策略的退出逻辑及重新入场保护。连续交易市场中的决策按信号蜡烛收盘价成交;平台止损按蜡烛内价格撮合。未指定投入比例时,按1x时权益的20%设定。

根据源文件重建了修正后的复现,并保留记录的基准参数。ROI以及所有累计自定义退出比较均使用close*(1-exit_fee)/(entry*(1+entry_fee))-1,读取实际应用的交易品种吃单手续费,并保留入场费率。手续费仍仅由平台记账。在价格不变且收取0.1%手续费时,该指标为-0.1998002%;零ROI要求价格上涨至高于0.2002002%。BTCRSI先对最初的14个差值进行一次初始化,随后持续保存标量Wilder涨跌状态,并且仅处理不同的蜡烛;价格先下跌后持平时,不会因窗口重新初始化而产生虚假的中性RSI。源代码时期的TA-Lib默认情况下,若涨跌幅总和为零,则RSI取零。信息性输入要求收盘时间不晚于决策时间。ATR仅供参考。只有蜡烛收盘后,蜡烛最高价才能上调止损;已有保护性止损会在蜡烛内触发,而新发现的从最高价到收盘价的跌破会按收盘价退出。未更改任何基于表现的阈值。简报报告了无效/缺失的optimization_plan;所有已保存的基准值必须保持冻结,且未授予更广泛的调参权限。手续费语义参考:https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/persistence/trade_model.py;源代码时期的RSI参考:https://github.com/TA-Lib/ta-lib/blob/v0.6.4/src/ta_func/ta_RSI.c.

验证结果

在复现报告中保留此执行限制,并在解读结果时区分已有的蜡烛内止损成交与收盘时的跟踪止损更新。

追踪保护根据已完成小时 K 线的最高价逐步上调。现有止损按 K 线内价格撮合,但新达到的高点无法在同一根 K 线内收紧止损;若高点至收盘价之间穿越止损价位,则在收盘时退出。此处披露的 K 线收盘移植方式可能导致成交结果不同于源策略持续更新的追踪止损。

冒烟测试窗口报告了 191 笔已平仓多头交易,-0.383% 的平均净交易收益率以及 0.599 的利润因子。完整历史复核应评估固定的源策略入场条件和连续提前退出在现货手续费及冲击成本后是否仍有足够的毛优势;这些亏损并不能证明存在正确性缺陷。

回测评审

夏普
-1.16
总收益率
-14.84%
最大回撤
14.89%
总交易数
557
胜率
26.2%
盈利因子
0.70

所有 557 笔交易都是已平仓的 LINK 现货多头。频繁的 2 小时/4 小时退出符合连续退出结构;仓位规模随权益下降。

代码使用含手续费的退出比较和持久化 BTC Wilder RSI 状态。输入审计和账目核对均通过。

在 2,477 天内,平均净交易收益率为 -0.310%,低于 +0.25% 的现货复核底线;PF 为 0.703,总收益率为 -14.840%。QA 的担忧得到印证。

七个实质性日历年中有六年亏损,三个波动率阶段也全部亏损。夏普比率为 -1.162。

基线参数已冻结,没有已证实的实现缺陷支持再次修正或优化。

提供的 LINK/BTC 组合收益约为 765.16%,抽样回撤为 87.19%。它并非纯粹的仅 LINK 基准,也不是放弃该次运行的依据。

分析

研究负责人REVISED这一假设,因为先前的前提行不通。请从头实现REVISED假设(见假设说明)——不要复用先前策略。 修订理由:详细证据表明,问题在于语义不匹配,而非执行能力缺乏依据或对策略的科学性否定。修订后的合约明确要求退出决策包含手续费,并持续维护BTCRSI状态。保留提交的交易品种、周期和阈值,因为沙盒亏损并不授权对忠实移植进行基于表现的修改。知识快照确认了确切的先前运行及其基准参数。这是明确的修正复现,参数固定,不围绕观察到的亏损进行搜索。缺少投资组合和集中度背景;BTC仍仅作为源代码要求的信号输入。

迭代历史

验证失败(第 3 层——数据):extra_bar_types 没有目录数据,即使按需采集后仍然如此:BTCUSDT.BINANCE-1-HOUR-LAST-EXTERNAL。缺少一条交易腿,策略无法评估(对齐屏障将永远等待)。请选择有数据的交易腿(参见 /data-coverage)或移除该交易腿。

核验失败(第 4 层 — QA 复核)[类别=hypothesis_mismatch]: - [edge_concern] 冒烟测试中 179 个仓位的平均净交易收益率为 -0.233%;完整历史下的盈利性仍待评估。推算的部署规模约为权益的 19.7%,与指定的 20% 配置一致。 - [关键] 假设明确要求 BTCUSDT.BINANCE 小时情绪数据。代码和额外品种配置改用了 BTCUSDT.BINANCE_SPOT。开发者给出的理由并非获准的假设修订;期货和现货 RSI 可能产生不同交易。(第 128 行)— 修复:在处理程序、extra_bar_types 和 extra_instruments 中恢复 BTCUSDT.BINANCE;获取所需数据,而非替换交易场所。 - [关键] 仓位提供的是 ts_opened,而非 ts_open(docs/nautilus/concepts/positions.md)。回退方案从首次后续退出评估时开始计算持仓时钟,通常比入场晚一小时。这会延迟每次 ROI 状态转换及后续时间退出。(第 283 行)— 修复:从 int(position.ts_opened)……展开收起

核验失败(第 4 层 — QA 复核)[类别=hypothesis_mismatch]: - [edge_concern] 冒烟测试中 179 个仓位的平均净交易收益率为 -0.233%;完整历史下的盈利性仍待评估。推算的部署规模约为权益的 19.7%,与指定的 20% 配置一致。 - [关键] 假设明确要求 BTCUSDT.BINANCE 小时情绪数据。代码和额外品种配置改用了 BTCUSDT.BINANCE_SPOT。开发者给出的理由并非获准的假设修订;期货和现货 RSI 可能产生不同交易。(第 128 行)— 修复:在处理程序、extra_bar_types 和 extra_instruments 中恢复 BTCUSDT.BINANCE;获取所需数据,而非替换交易场所。 - [关键] 仓位提供的是 ts_opened,而非 ts_open(docs/nautilus/concepts/positions.md)。回退方案从首次后续退出评估时开始计算持仓时钟,通常比入场晚一小时。这会延迟每次 ROI 状态转换及后续时间退出。(第 283 行)— 修复:从 int(position.ts_opened) 设置持仓时钟,并根据实际成交时间戳核验退出。 - [关键] 锁定的源代码在第 58-64 行声明了 MaxDrawdown 保护:回看 1440 小时、回撤 10%、至少五笔交易并锁定 300 小时。should_enter 和 should_exit 均未实现此保护。移除该保护并非获准的平台差异。[锁定的源代码](https://github.com/freqtrade/freqtrade-strategies/blob/f3340ce11f5bdf62f598522e64d1f5638eaa13f5/user_data/strategies/TrendRiderStrategy.py).(第 269 行)— 修复:实施源策略的已平仓交易回撤保护和入场锁定,并采用等效的单交易对语义。 - [关键] 辅助 EMA200 每根 K 线都会根据有界日线双端队列重新播种。经过 300 个日线观测值后,移除最早的观测值会改变种子并丢弃递归历史。4 小时 EMA200 也会在 250 个观测值后重置。这些结果与源代码连续的 TA-Lib EMA 序列不同,并会改变日线入场门槛和置信度筛选。(第 125 行)— 修复:每个辅助 EMA 只播种一次,随后在每根不同的已收盘 K 线上增量更新其保留值;与锁定版本的源指标进行核验。 - [警告] 固定保护和追踪保护使用小时收盘价及仅基于收盘价的峰值,因此会漏掉 K 线内的止损触发和追踪保护激活。(第 289 行)— 修复:使用平台的仅减仓市价止损辅助工具,并在不使用 emulation_trigger 的情况下逐步上调追踪止损,同时保留源策略的激活条件和距离。

在处理程序、extra_bar_types 和 extra_instruments 中恢复 BTCUSDT.BINANCE;获取所需数据,而非用其他交易场所替代。

假设明确要求 BTCUSDT.BINANCE 小时情绪数据。代码和额外品种配置改用了 BTCUSDT.BINANCE_SPOT。开发者的理由并非获准的假设修订;期货和现货 RSI 可能产生不同交易。

从 int(position.ts_opened) 设置持仓时钟,并根据实际成交时间戳核验退出。

仓位提供的是 ts_opened,而非 ts_open(docs/nautilus/concepts/positions.md)。回退方案从首次后续退出评估时开始计算持仓时钟,通常比入场晚一小时。这会延迟每次 ROI 状态转换及连续时间退出。

实施源策略的已平仓交易回撤保护和入场锁定,并采用等效的单交易对语义。

锁定的源代码在第 58-64 行声明了 MaxDrawdown 保护:回看 1440 小时、回撤 10%、至少五笔交易并锁定 300 小时。should_enter 和 should_exit 均未实现此保护。移除该保护并非获准的平台差异。[锁定的源代码](https://github.com/freqtrade/freqtrade-strategies/blob/f3340ce11f5bdf62f598522e64d1f5638eaa13f5/user_data/strategies/TrendRiderStrategy.py).

每个辅助 EMA 只播种一次,随后在每根不同的已收盘 K 线上增量更新其保留值;与锁定版本的源指标进行核验。

辅助 EMA200 每根 K 线都会根据有界日线双端队列重新播种。经过 300 个日线观测值后,移除最早的观测值会改变种子并丢弃递归历史。4 小时 EMA200 也会在 250 个观测值后重置。这些结果与源代码连续的 TA-Lib EMA 序列不同,并会改变日线入场门槛和置信度筛选。

使用平台的仅减仓市价止损辅助工具,并在不使用 emulation_trigger 的情况下逐步上调追踪止损,同时保留源策略的激活条件和距离。

固定保护和追踪保护使用小时收盘价及仅基于收盘价的峰值,因此会漏掉 K 线内的止损触发和追踪保护激活。

hypothesis_revised:在 CONTRACT 问题上,核验已用尽 3 次编码尝试;问题不是代码错误,而是复核发现研究合约中的一项要求开发者无法实现或无权更改

对 ROI 和提前退出比较,使用经手续费调整的开仓和预期平仓交易价值,并应用本平台实际现货手续费。对于简单的 1x 多头情形,net_ratio = close * (1 - exit_fee) / (entry_price * (1 + entry_fee)) - 1。保留给定阈值。

该移植通过close/entry_price-1计算利润,并将其用于所有ROI及级联提前退出比较(第429-431行)。源代码中的minimal_roi(第23-27行)和custom_exit(第554-561行)使用Freqtrade包含手续费的利润率。在价格不变时,移植代码认为764分钟盈亏平衡ROI已满足,尽管入场和退出手续费0.1%意味着净收益约为-0.1998%。这会改变退出决策,与任何盈利能力判断无关。包含手续费的语义记录于[Freqtrade trade_model.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/persistence/trade_model.py).

从初始历史数据播种一次 BTC RSI14,随后每根新的 BTC K 线更新一次持久化平均盈亏及前收盘状态,与主要 RSI 实现一致。将所得序列和阈值决策与源代码的 TA-Lib RSI 进行核验。

源代码第 212 行在辅助数据框上计算 BTC RSI14。移植版本第 174-178 行却每小时在最近 250 根 K 线上重新播种 Wilder 平均值。丢弃此前的平滑状态会改变 BTC RSI、>35 入场门槛和置信度评分。一个确定性的先跌后平序列显示,连续计算结果为 RSI14=0,而移植版本最近 -250 根 K 线的 RSI=50,因此允许连续计算会拒绝的入场。这是未披露的指标定义变更。

考虑采用具有兼容源代码种子和递推公式的增量指标状态;在保留所有品种和历史数据的同时核验数值一致性。

沙盒处理 20,000 根 K 线耗时 76.2 秒,并标记需进行运行时间复核;完整历史的咨询性估算为 258 秒。主要 DMI 和辅助 ADX 均在反复从滚动历史数据重新计算。

结局总结

含手续费的退出和持久化指标状态,并未证明这个冻结的 LINK 小时移植版本具有盈利优势。

回测审查因预期收益为负且平均交易回报低于+0.25%现货审查下限,结论为放弃。没有已证实的实现缺陷,也没有获授权的参数搜索,因此没有理由继续;尚未进入优化、优化后分析和风险审查阶段。

将 TrendRider 移植为仅做多的 LINK 现货小时线交易策略,采用更高时间周期的 LINK 筛选、连续 BTC RSI、含手续费的退出和冻结的源参数。

在 2,477 天和 557 笔已平仓交易中,总收益率为 -14.84%,夏普比率为 -1.162,最大回撤为 14.89%。平均净交易收益率为 -0.310%,利润因子为 0.703,三个波动率阶段均亏损。

分析

TrendRiderStrategy

Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。