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

基于Pine Script测试隔夜收益:ETF定时入场离场方案问询

Pine Script 日线框架下实现精准隔夜交易(EST16:00进场/次日09:30离场)

需求说明

  • 交易目标:测试指数ETF的隔夜收益,需在EST时间16:00(美股收盘时)进场买入,次日EST时间09:30(美股开盘时)平仓离场
  • 框架限制:因TradingView低时间框架(如30分钟)回测数据仅能追溯至2022年,需基于日线时间框架实现策略

问题现象

当前编写的代码存在以下执行偏差:

  • 勾选策略设置中的on bars close选项时,以open为平仓条件的指令会延迟至次日收盘才执行
  • 不勾选该选项时,入场交易会延迟至次日开盘才执行,且平仓也同步延迟至次日开盘

原代码问题分析

原代码的核心问题在于:

  1. 未添加持仓状态判断,导致entry_condition=close和close_condition=open会在每个bar重复触发信号,引发交易逻辑混乱
  2. 未明确指定订单的执行价格和时机,受on bars close设置影响,无法精准匹配目标时间点

修正后的代码

// © kindChile34275
//@version=5
strategy('隔夜收益测试策略', 
     overlay=true,
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     margin_long=100,
     commission_type=strategy.commission.percent,
     commission_value=0.01)

// 判断当前是否持有多头仓位
is_long = strategy.position_size > 0

// 入场条件:无持仓时,在当日收盘(EST16:00)进场
entry_condition = not is_long
if entry_condition
    // 市价单在bar收盘时执行,对应EST16:00的时间点
    strategy.entry("Long", strategy.long, comment="进场")

// 平仓条件:持有多头仓位时,在次日开盘(EST09:30)平仓
close_condition = is_long
if close_condition
    // 指定以开盘价限价平仓,确保在次日09:30执行
    strategy.close("Long", limit=open, comment="离场")

代码说明

  1. 持仓状态控制:通过is_long变量判断当前持仓情况,避免重复开仓、平仓
  2. 精准入场:仅在无持仓时触发入场信号,使用市价单结合日线bar的收盘时间(EST16:00)完成进场,无论是否勾选on bars close,都能匹配目标时间点
  3. 精准平仓:在持有仓位时触发平仓信号,用limit=open指定以次日开盘价执行平仓,确保订单在次日EST09:30的开盘时刻生效,彻底解决延迟平仓问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:05:20