-
Notifications
You must be signed in to change notification settings - Fork 105
Open
Description
在dry run(回测模式)下,当程序重启时,我们观察到一个不一致的行为。具体的表现为:
订单历史: 过去的订单会被保留并从本地的sqlite数据库(即name.db文件,其中name是YAML配置中的策略名称)中加载。
账户余额: 账户余额会重置为配置文件中定义的值,而不是从之前的dry run状态中恢复。
这种不一致导致了以下问题:
错误的亏损计算: 由于历史订单被保留而余额被重置,系统可能会错误地计算出巨大的亏损(例如,“180分钟内亏损67%”),即使这些亏损在本次dry run中并未实际发生。
订单禁止: 错误的亏损计算会进一步触发系统设置的订单禁止机制(例如,“禁止下单8小时!”),这使得后续的dry run无法正常进行。
预期行为与改进建议:
对于dry run模式,当程序重启时,我们期望能够有更灵活的选项来处理历史数据和余额状态。我们建议实现以下机制:
可配置的重启行为: 允许用户在配置中选择dry run重启后的行为:
完全重置 (默认选项): 订单历史和账户余额都应该完全重置到初始状态,就像开始一个新的dry run一样。这将确保每次dry run都是独立且可重复的。
完全恢复 (可选): 如果用户需要中断并恢复之前的dry run,系统应该能够从上一个dry run的完整状态中恢复订单历史和账户余额。这对于长时间的回测或中断后继续测试非常有用。
更智能的name.db管理: 考虑在dry run模式下,如果用户选择“完全重置”,系统应自动清除或忽略name.db中的历史订单,而无需手动删除文件。
当前临时解决方案:
目前,为了清除历史订单并避免上述问题,用户需要手动删除name.db文件。
Metadata
Metadata
Assignees
Labels
No labels