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

如何在TradingView中统计K线并实现特定趋势交易策略?

在TradingView中统计连续/非连续K线及目标策略实现

一、统计连续/非连续K线的基础方法

连续K线统计

以统计连续上涨K线(收盘价>开盘价)为例,核心思路是用变量跟踪连续符合条件的K线数:

  • 每根K线判断是否符合上涨条件,符合则计数器+1,不符合则重置为0
  • 代码片段示例:
// 定义上涨K线
isBullish = close > open
// 统计连续上涨K线数
consecBullish = isBullish ? consecBullish[1] + 1 : 0
plot(consecBullish, title="连续上涨K线数", color=color.green)

非连续K线统计

非连续可理解为最近N根K线中不符合趋势的数量,直接计数即可:

// 统计最近4根K线中非上涨K线的数量
nonBullishCount = 4 - ta.sum(isBullish ? 1 : 0, 4)

二、目标交易策略的完整Pine代码实现

以下以上涨趋势开多为例(下跌开空可同理修改),先明确逻辑:

  • 趋势定义:用收盘价>前收盘价作为上涨趋势K线(可替换为MACD、均线等自定义条件)
  • 开多条件:最近4根K线中至少3根是上涨趋势K线,且最后一根K线必须是上涨趋势
  • 平仓条件:示例用固定止损(开仓价下跌2%)和止盈(开仓价上涨3%),可自行调整

完整代码:

//@version=5
strategy("3/4趋势开仓策略", overlay=true, initial_capital=10000, default_qty_type=strategy.cash, default_qty_value=1000)

// 1. 定义趋势K线(这里以上涨为例:收盘价>前收盘价)
isTrendKline = close > close[1]

// 2. 统计最近4根K线中趋势K线的数量
trendKlineCount = ta.sum(isTrendKline ? 1 : 0, 4)

// 3. 开仓条件:趋势K线≥3,且最后一根是趋势K线
longCondition = trendKlineCount >= 3 and isTrendKline

// 4. 平仓条件:固定止损止盈
longStop = strategy.entry_price * 0.98
longTakeProfit = strategy.entry_price * 1.03

// 执行交易
if (longCondition)
    strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=longStop, limit=longTakeProfit)

// 辅助绘图:标记符合开仓条件的K线
plotshape(longCondition, title="开仓信号", location=location.belowbar, color=color.green, style=shape.labelup, text="开多")

代码说明

  • 修改isTrendKline的定义即可切换趋势判断逻辑,比如换成close > ta.sma(close, 20)(价格在20均线上方)
  • 开空策略只需把趋势条件改成close < close[1],开仓条件对应调整为shortCondition = trendKlineCount >=3 and isTrendKline,再执行strategy.entry("Short", strategy.short)
  • 止损止盈比例可根据交易品种特性自行修改

内容的提问来源于stack exchange,提问作者Ruben Alejandro Villarreal Bar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 01:45:32