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

如何创建基于时段首30分钟K线的Pine Script追踪止损策略?

策略完善方案

原代码存在的问题

  • 未区分首30分钟K线,原代码采用日线首K线逻辑,不符合需求
  • 止损追踪逻辑不完整:仅处理了空单部分场景,多单逻辑缺失;且未限制止损调整的条件(空单需阴线高点高于当前止损才调整,多单需阳线低点低于当前止损才调整)
  • 仅实现了空单入场逻辑,多单入场代码未编写
  • trail_offset固定值会干扰追踪止损的精准性,需移除

完善后的代码

//@version=5
strategy("30分钟首K线趋势追踪策略", overlay=true, initial_capital=10000, default_qty_type=strategy.cash, default_qty_value=10000)

// 时间范围输入
fromMonth = input.int(defval=1, title='起始月份', minval=1, maxval=12)
fromDay = input.int(defval=1, title='起始日期', minval=1, maxval=31)
fromYear = input.int(defval=2023, title='起始年份', minval=1970)
thruMonth = input.int(defval=12, title='结束月份', minval=1, maxval=12)
thruDay = input.int(defval=31, title='结束日期', minval=1, maxval=31)
thruYear = input.int(defval=2023, title='结束年份', minval=1970)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00)
end = timestamp(thruYear, thruMonth, thruDay, 23, 59)
in_time_range = time >= start and time <= end

// 识别每日首30分钟K线
is_30min_first_bar = time("30") != time("30")[1] and time("D") != time("D")[1]
var float first_30min_high = na
var float first_30min_low = na
var bool is_long_signal = false
var bool is_short_signal = false

// 记录每日首30分钟K线数据与开仓信号
if is_30min_first_bar
    first_30min_high := high
    first_30min_low := low
    is_long_signal := close > open  // 首30分钟阳线开多
    is_short_signal := close < open // 首30分钟阴线开空

// 止损追踪变量
var float long_trail_sl = na
var float short_trail_sl = na

// 多单入场与止损更新
if in_time_range and is_long_signal and strategy.position_size <= 0
    long_trail_sl := first_30min_low
    strategy.entry("多单入场", strategy.long)

if strategy.position_size > 0 and close > open
    if low < long_trail_sl
        long_trail_sl := low
    strategy.exit("多单止损", "多单入场", stop=long_trail_sl)

// 空单入场与止损更新
if in_time_range and is_short_signal and strategy.position_size >= 0
    short_trail_sl := first_30min_high
    strategy.entry("空单入场", strategy.short)

if strategy.position_size < 0 and close < open
    if high > short_trail_sl
        short_trail_sl := high
    strategy.exit("空单止损", "空单入场", stop=short_trail_sl)

// 绘制关键价格线
plot(first_30min_high, color=color.red, title="首30分钟高点")
plot(first_30min_low, color=color.green, title="首30分钟低点")
plot(long_trail_sl, color=color.new(color.green, 0), style=plot.style_circles, title="多单追踪止损")
plot(short_trail_sl, color=color.new(color.red, 0), style=plot.style_circles, title="空单追踪止损")

核心逻辑说明

  1. 首30分钟K线识别:通过time("30")与time("D")组合判断,精准捕捉每日开盘后第一根30分钟K线
  2. 入场规则:严格依据首30分钟K线的阴阳方向开仓,仅在指定时间范围内执行交易
  3. 止损追踪:
    • 多单初始止损为首30分钟K线低点,后续仅在新阳线出现且其低点低于当前止损时向下调整
    • 空单初始止损为首30分钟K线高点,后续仅在新阴线出现且其高点高于当前止损时向上调整
  4. 仓位控制:避免重复开仓,仅在无对应方向仓位时执行入场操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:41