如何编写Pinescript策略实现每日美东时间18点开仓及止盈止损设置
解决思路与可直接运行的Pine Script代码
核心难点:美东时间18:00触发布尔变量实现
Pine Script内置了时区处理能力,不需要手动计算冬夏令时的UTC偏移,直接使用America/New_York时区标识即可匹配美东时间:
// 美东时间18:00收盘K线判断布尔变量 is_trigger_time = hour(close_time, "America/New_York") == 18 and minute(close_time, "America/New_York") == 0
注意:该判断仅在K线周期≤1小时的图表上生效,若使用4小时、日线等更长周期,18:00时间点无法匹配到单根K线的收盘时间。
完整策略代码
//@version=5 strategy("美东18点ATR策略", overlay=true, initial_capital=10000, default_qty_type=strategy.cash, default_qty_value=1000, commission_type=strategy.commission.percent, commission_value=0.1) // 参数设置 atr_length = input.int(14, title="ATR周期") sl_multiplier = input.float(2.0, title="止损ATR倍数") tp_multiplier = input.float(4.0, title="止盈ATR倍数") // SL的2倍即2*2=4倍ATR // 计算ATR atr_val = ta.atr(atr_length) // 美东时间18:00触发判断 is_trade_time = hour(close_time, "America/New_York") == 18 and minute(close_time, "America/New_York") == 0 // 开仓逻辑:无持仓时在触发时间开多单,需开空可替换为strategy.short if is_trade_time and strategy.position_size == 0 strategy.entry("开仓", strategy.long) // 止损止盈设置 if strategy.position_size != 0 strategy.exit("平仓", "开仓", stop=strategy.position_avg_price - atr_val * sl_multiplier, limit=strategy.position_avg_price + atr_val * tp_multiplier) // 绘制止损止盈线(可选) plot(strategy.position_size != 0 ? strategy.position_avg_price - atr_val * sl_multiplier : na, color=color.new(color.red, 0), style=plot.style_linebr, title="止损线") plot(strategy.position_size != 0 ? strategy.position_avg_price + atr_val * tp_multiplier : na, color=color.new(color.green, 0), style=plot.style_linebr, title="止盈线")
代码说明
- 所有参数都已做成可调整的输入项,你可以根据需求修改ATR周期、止损止盈倍数
- 默认按每次开仓1000美金计算,可在策略设置里调整仓位规则
- 自动适配美东冬夏令时切换,不需要手动调整时间偏移
内容的提问来源于stack exchange,提问作者Cris Cusack
相关产品推荐
相关产品推荐

