如何在VectorBT中基于价格跳动数或每合约价格设置止损
VectorBT 自定义平仓规则需求
现有功能说明
VectorBT的vbt.Portfolio.from_signals方法支持通过以下参数设置基于百分比的止损/止盈:
sl_stop:浮点型数组(支持广播),为多头/空头持仓设置相对于建仓价的百分比止损阈值,例如0.01代表1%的止损幅度tp_stop:同sl_stop逻辑,用于设置基于百分比的止盈阈值
自定义平仓需求
需要实现基于固定价格跳动点数或每合约固定美元金额的反向波动平仓逻辑:
- 当价格反向跳动指定点数(例如50个点)时,自动平仓退出持仓
- 或当持仓浮亏达到每合约指定美元金额时,自动平仓
实现思路
基于价格跳动点数的平仓实现
- 先获取标的的最小价格跳动单位(如股指期货的0.25点)
- 计算反向跳动n点对应的绝对价格差:
价格差 = n * 最小跳动单位 - 多头持仓止损价 = 建仓价 - 价格差;空头持仓止损价 = 建仓价 + 价格差
- 将计算得到的止损价数组传入
stop_price参数(替代百分比型的sl_stop)
基于每合约美元金额的平仓实现
- 先获取标的每点对应的美元价值(如美股股指期货每点250美元)
- 计算目标亏损金额对应的价格点数:
点数 = 目标亏损金额 / 每点美元价值 - 参照上述价格跳动点数的转换逻辑,计算出对应的止损价数组,传入
stop_price参数
内容的提问来源于stack exchange,提问作者ralphinator80
相关产品推荐
相关产品推荐

