You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TradingView的Pine Script中实现指定周几当日开仓当日平仓?

问题:如何在指定周几的日线K线开盘开仓、收盘平仓?

我是TradingView和Pine Script新手,想要编写策略在指定周几的K线开盘时开仓,同一根K线收盘时平仓,以此回测不同周几的表现。

最初尝试用小时周期回测,在当日特定时段开平仓,但发现该方式不合理——不同标的交易时段不同,且同一标的历史交易时段也可能变化。随后改为日线周期编写,但现有代码出现问题:

//@version=5 
strategy("Моя стратегия", overlay=true)

long_entry = dayofweek(time) == 2 // Monday
long_exit = dayofweek(time) == 2 // Monday

if (long_entry) 
    strategy.entry("Long", strategy.long)   
if (long_exit) 
    strategy.close("Long")

使用上述代码时,策略会在次日开仓、一周后平仓;若设置process_orders_on_close = true,则会在当日收盘时开仓,一周后平仓。

请问如何实现指定周几的K线开盘时开仓、同一根K线收盘时平仓?我需在同一根K线收盘时精准平仓以避免跳空。


解决方案

要实现日线周期下指定周几开盘开仓、收盘平仓,关键是利用Pine Script的K线状态变量精准控制订单触发时机,同时正确配置策略参数。

修正后的代码

//@version=5
strategy("指定周几日内平仓策略", overlay=true, process_orders_on_close=true)

// 指定目标周几(2=周一,3=周二,以此类推)
target_day = 2

// 开盘开仓条件:当前是目标周几,且处于K线开盘瞬间
long_entry = dayofweek(time) == target_day and barstate.isopen

// 收盘平仓条件:当前是目标周几,且处于K线收盘瞬间
long_exit = dayofweek(time) == target_day and barstate.isclose

// 执行开仓
if (long_entry)
    strategy.entry("Long", strategy.long)

// 执行平仓
if (long_exit)
    strategy.close("Long")

关键说明

  • barstate.isopen/barstate.isclose:这两个内置变量分别标记当前K线的开盘、收盘瞬间,确保开平仓动作严格限制在同一根K线内完成。
  • process_orders_on_close=true:必须开启该参数,才能让收盘时的平仓订单以当前K线收盘价执行,彻底规避持仓过夜的跳空风险。
  • 周几数值对应:dayofweek(time)的返回值为:1=周日,2=周一,3=周二,4=周三,5=周四,6=周五,7=周六,修改target_day即可切换测试不同周几的策略表现。

内容的提问来源于stack exchange,提问作者Dishlen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 23:53:13