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

Pine Script中while循环陷入死循环问题排查及需求咨询

死循环原因及修复方案

死循环根源

你这段代码用了while循环,但Pine Script是逐K线执行的——每根K线只会运行一次代码逻辑。当stochRsiCross被设为true后,只要当前K线里cciCrossover没触发,while就会无限循环卡住,因为它不会等下一根K线的CCI信号,只会在当前K线里反复执行,直接导致死循环。

修复后的代码逻辑

不用while,改用状态变量跟踪等待状态,利用Pine Script逐K线执行的特性,每根K线检查一次条件:

// 初始化等待CCI信号的状态变量
var bool waitingForCCI = false

// 第一步:StochRSI在20以下且出现向上交叉时,标记进入等待状态
if under20 and stochRsiCrossover
    waitingForCCI := true

// 第二步:如果处于等待状态,且CCI出现向上交叉,执行下单并重置状态
if waitingForCCI and cciCrossover
    strategy.order("buy", strategy.long)
    waitingForCCI := false

逻辑说明

  1. 用var声明的waitingForCCI只会初始化一次,用来记录是否处于等待CCI信号的状态
  2. 当StochRSI触发条件时,把状态设为true,表示接下来要盯CCI的信号
  3. 每根K线都会检查:如果正处于等待状态,且CCI触发向上交叉,就下单并把状态重置为false,结束等待

这样就完全避免了死循环,符合Pine Script的运行机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:32:05