如何为现有PineScript策略添加开仓30分钟后自动平仓条件
PineScript 30分钟定时平仓功能实现方案
修改后完整代码
strategy("S1", overlay=true) source = close length = input(20, minval=1) mult = input(1.0, minval=0.001, maxval=50) basis = sma(source, length) sl_inp = input(100, title='Stop Loss in Ticks') tp_inp = input(200, title='Take Profit in Ticks') // 新增:存储多单开仓时间戳 var int buyEntryTime = na // 定义开仓条件 buyCondition = crossover(close, basis) if (buyCondition) strategy.entry("buy", true, 1) buyEntryTime := time // 开仓时同步记录时间 // 原有止损、止盈平仓逻辑保留 strategy.exit("buy", loss=sl_inp, profit=tp_inp) // 新增:持仓满30分钟自动平仓逻辑 if (strategy.position_size > 0) holdMinutes = (time - buyEntryTime) / 60000 // 时间差换算为分钟 if (holdMinutes >= 30) strategy.close("buy") buyEntryTime := na // 平仓后重置开仓时间标记
改动说明
- 新增
var int buyEntryTime = na变量存储多单开仓时间戳,var关键字保证变量不会在每根K线刷新时被重复初始化 - 开仓触发时同步记录当前K线时间戳,用于后续计算持仓时长
- 新增定时平仓判断:持有多单时计算当前持仓时长,满30分钟就主动平仓,平仓后重置开仓时间变量
- 原有止损、止盈逻辑完全保留,三类平仓条件为触发即执行的并行关系,哪个先满足就先执行平仓
注意事项
上述代码默认适配分钟级K线运行的策略,如果你的策略运行在30分钟及以上周期的K线,可将代码中的time替换为time_close获取K线收盘时间做判断,避免时间计算误差。
内容的提问来源于stack exchange,提问作者hello11
相关产品推荐
相关产品推荐

