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

如何为EMA+布林带策略设置NSE时段的开平仓时间?

基于NSE 5分钟K线的交易策略时间控制实现方案

需求明确

  • 开仓技术条件:收盘价高于20 EMA与200 EMA之和
  • 平仓技术条件:收盘价低于20 EMA 或 收盘价高于布林带上轨
  • 时间规则(印度标准时间IST):
    • 仅在NSE开盘10分钟后(09:25)至收盘10分钟后(15:20)的时间段内触发开仓
    • 15:20及之后强制平仓所有持仓
  • 运行时间框架:5分钟K线

核心实现步骤

  1. 时间窗口判断:利用你已定义的tradeTimes输入,结合time.session()函数并指定IST时区,判断当前K线是否处于允许开仓的时间区间内
  2. 开仓条件叠加:将技术开仓条件与时间窗口判断绑定,仅在合规时间内满足技术条件时才触发开仓
  3. 强制平仓逻辑:当时间超出15:20后,直接触发平仓,覆盖原有技术平仓条件

完整Pine Script代码示例

//@version=5
strategy("NSE Time-Bound Strategy", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, commission_type=strategy.commission.percent, commission_value=0.1)

// 输入交易时间窗口(IST)
tradeTimes = input.session("0925-1520", title="Trading Times")

// 计算技术指标
ema20 = ta.ema(close, 20)
ema200 = ta.ema(close, 200)
[bbMid, bbUpper, bbLower] = ta.bb(close, 20, 2)

// 判断是否在允许开仓的时间窗口内(IST时区)
inTradeWindow = time.session(tradeTimes, "IST")

// 开仓条件:技术条件 + 时间窗口内
longCondition = close > ema20 + ema200 and inTradeWindow
if (longCondition)
    strategy.entry("Long", strategy.long)

// 平仓条件:技术条件 或 超出交易时间窗口(强制平仓)
exitCondition = close < ema20 or close > bbUpper or not inTradeWindow
if (exitCondition)
    strategy.close("Long")

代码关键点说明

  • time.session(tradeTimes, "IST"):明确指定时区为印度标准时间,避免时区转换误差
  • 开仓时必须同时满足技术条件和inTradeWindow为true,确保不会在非指定时间开仓
  • 平仓逻辑中加入not inTradeWindow,当时间到达15:20后,该条件触发,强制平掉所有持仓,不管当前技术指标状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:37:40