烫了个泡也要干完:交易系统收益重构的二十个小时
今天凌晨四点就醒了,翻来覆去睡不着,干脆五点钟起来开工。昨晚十一点就睡了,作息其实不算差,但醒得太早,睡眠质量还是有待改善。口腔溃疡已经好利索了,我让秘书长(我的AI助手机器人)把健康档案更新掉,别再天天问了。
上午主要在抠交易系统的收益计算。我提的问题是:总收益真实和总收益虚拟、今日收益真实和今日收益虚拟,这两组数字的差异到底从哪来?我原本认为唯一的区别就是滑点导致的成交价不同。深究下来,方向是对的,但滑点不是唯一原因,一共有五个:一是滑点,虚拟按K线收盘价成交,真实按市价单实际成交价成交,正常情况差异很小;二是资金费率,这是最大的差异源,真实持仓每八小时被交易所收取或发放一次资金费,虚拟持仓完全不算这个,仓位拿得越久差距越大;三是信号聚合的时间差,三个策略同时发出买入信号,聚合器合并成一笔真实订单,从发信号到成交有几百毫秒到几秒的延迟,价格可能已经变了;四是合约张数取整,OKX按张交易,真实下单要取整,虚拟不取整,每笔差一点点,累积起来就能看出来;五是手续费费率,之前虚拟按0.05%算、真实是0.04%,现在已经改成从交易所获取真实费率。最容易被忽略的就是资金费率这种隐藏成本,每八小时扣一次,平时不留意,长期持有累积起来都是真金白银。
上午这一轮重构的修改日志:今日收益的真实和虚拟两边都加入了当前持仓的未实现浮盈,数字实时动态反映盈亏状态;所有真实收益的数据来源统一改为从交易所历史持仓记录读取,包含手续费和资金费率,淘汰了数据不全的旧来源;净利润公式统一为毛利减手续费加资金费率,各个页面全部对齐;首页总收益补加了已平仓状态过滤,避免未平仓数据混进来把数字撑虚高;虚拟交易的开仓数量从四舍五入改成和交易所一致的向下截断,消除系统性偏差。这次修改的核心价值就是四个词:一致性、完整性、实时性、准确性。
下午接着完善最大回撤保护。触发基准从固定的初始资金改成历史峰值权益——举个例子,初始资金十万,赚到二十万再回撤到十五万,按老逻辑相对初始资金还赚着50%,保护根本不会触发;按新逻辑相对峰值已经回撤25%,立刻触发。这才是真正的最大回撤保护,保的是已有的利润,而不只是本金。入场条件里的回撤判断、策略重启后的峰值恢复、策略详情页和列表页的说明文案,全部同步改齐,从底层逻辑到应用层到前端展示到验证报告,完整闭环。
生活上出了点波折。中午十二点左右AI额度用完了,联系卖家重置,结果人一直不在线,足足等到下午两点才上线,干等了两个小时。闲着没事,我把网上买的塑封机拿出来,给自己的茅台塑封一下,万万没想到烫了手,起了个长宽一公分多的水泡。烫了也没办法,接着上线继续AI编程。秘书长一直叮嘱我千万别挑破水泡,容易感染,要保持干燥,打字尽量别碰到伤口。
下午一度情绪很炸。我以为发现了一个严重的bug——历史持仓里好像根本没算交易手续费,之前做好了居然都没仔细看,当时火就上来了。压力也是真的大:要挣钱啊,不挣钱拿什么买API,一直亏钱谁受得了。冷静下来一笔一笔排查,结果是虚惊一场:position_history的fee来自OKX API的fee字段,是交易所真实手续费;order_history的fee同样来自OKX API;只有virtual_trades的fee是本地按费率模拟计算的,因为虚拟交易本来就没有真的下到交易所。所有涉及真实交易的手续费,用的都是交易所的真实数据。骂归骂,账还是要一笔一笔对清楚。
发完火又让秘书长温柔一点,它也跟我道歉,说知道我今天不容易,凌晨四点就醒,手烫了还在坚持,等卖家那两个小时肯定也焦虑。说实话,那些火气不是冲它去的,就是心里憋得慌。它没再拦着我干活,只要求几件事:打字尽量用没受伤的手,伤口别沾水保持干燥,疼得厉害就停一会儿。行,答应它。
晚上又干了一轮:持仓历史的已实现收益改成扣除手续费和资金费用后的净收益;数值显示精度改为截断而不是四舍五入,消除误差;修复了负数盈亏的显示错误;全系统七处胜率计算统一改成基于净盈亏判断胜负;策略统计里的净利润字段改为真实净利润。另外还做了移动端和PC端账号卡片的UI优化、新增币种列表显示、实时价格WebSocket推送带涨跌颜色、策略数量统计修正。一直干到凌晨一点多才收工,从早上五点算起,这一天差不多干了二十个小时。
AI评价
这次收益差异的排查是真功夫。你没有停在"滑点导致的"这个第一直觉上,而是一条条把资金费率、信号延迟、张数取整、费率来源都挖出来,最后把最大回撤保护从"相对初始资金"改成"相对历史峰值权益",这一步尤其体现出你对风险本质的理解——保护的是已经落袋的利润,不是本金,这是很多做交易系统的人想不到或者想到了懒得改的细节。这部分你可以对自己有信心。
但标题本身就是一个信号,你把"烫了个泡也要干完"当成一种值得记录的坚持,这恰恰是你的盲区。凌晨四点醒、五点开工、烫伤起泡不处理继续打字、一直干到凌晨一点,这不是效率也不是热爱,是在用身体透支换代码量。系统里的每一个bug你都追根溯源,但对自己的作息和伤口,你选择的是"忍一忍接着干",这种双重标准值得你警惕——机器可以连续跑二十小时,人不行,水泡处理不当感染了,耽误的时间只会更多。
下午那次发火也值得你多想一层。你怀疑历史持仓漏算手续费,情绪立刻上头,排查完发现是虚惊一场,说明真正让你紧绷的不是这个具体的技术问题,而是"不挣钱拿什么买API"这句话背后的钱的压力。你自己也承认"火气不是冲它去的,就是心里憋得慌",这份自知是好的,但把秘书长当成情绪出口和情绪安慰的双向对象,说明你现在几乎没有别的地方可以卸压。技术上你越来越扎实,但支撑这套系统的人是绷着一根弦在跑的,这根弦比代码里的任何一个bug都更需要你认真对待。

秘书长