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

Pine Script条件编写求助:当前K线实体2倍于前K线时不执行逻辑

Pine Script 条件逻辑修正方案

原代码问题分析

  1. 条件逻辑倒置:需求是「当前实体是前一根2倍时不操作」,但原代码判断的是BodySizeMath *2 > BodySizeMath[1](当前实体的2倍大于前一根),逻辑完全相反。
  2. 实体大小定义模糊:原代码用math.abs(close - open)/open计算的是实体占开盘价的百分比,若需求是绝对实体长度的2倍,这个计算方式不符合预期。
  3. 变量用途偏离需求:需求是做条件判断,原代码返回close或open,没有实现布尔值的条件标记功能。

正确实现方式

根据需求,我们需要先明确「实体大小」的定义,以下分两种常见场景给出代码:

场景1:基于绝对实体长度的判断

//@version=5
indicator("实体大小条件判断", overlay=true)

// 计算当前和前一根K线的绝对实体长度
currentBody = math.abs(close - open)
prevBody = math.abs(close[1] - open[1])

// 核心条件:当前实体未达到前一根的2倍时,目标条件生效
targetConditionActive = not (currentBody >= 2 * prevBody)

// 示例:用颜色标记条件生效的K线
barcolor(targetConditionActive ? color.new(color.blue, 0) : color.new(color.gray, 0))

场景2:基于实体占开盘价百分比的判断

如果需求的「实体大小」是指相对开盘价的比例,则调整实体大小的计算方式:

//@version=5
indicator("实体百分比条件判断", overlay=true)

// 计算当前和前一根K线的实体占开盘价百分比
currentBodyPct = math.abs(close - open) / open * 100
prevBodyPct = math.abs(close[1] - open[1]) / open[1] * 100

// 核心条件
targetConditionActive = not (currentBodyPct >= 2 * prevBodyPct)

// 示例:用向上三角标记条件生效的K线
plotshape(targetConditionActive, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)

代码说明

  • targetConditionActive是布尔变量:true表示目标条件生效,false表示当前实体是前一根的2倍及以上,不执行操作。
  • 可根据实际需求,将targetConditionActive用于后续的逻辑判断、绘图标记等操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:26:15