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

Pine Script 5策略问题:sell_condition1b卖出后需等10根K线再买入

交易策略:sell_condition1b卖出后等待10根K线再买入的实现

问题背景

原始策略代码:

if buy_condition1
     strategy.entry('.', strategy.long)

if sell_condition1a
     strategy.close('.')

if sell_condition1b
     strategy.close('.')

需求:当通过sell_condition1b条件卖出后,需等待至少10根K线才能执行下一次买入订单。

用户尝试的代码(未生效,sell_condition2卖出后立即出现买入订单):

var bool inBuy1 = false
var bool inBuy1x = false
var bool can_buy = true
var int bars_since_sell = na

if not na(bars_since_sell)
    bars_since_sell := bars_since_sell + 1

if bars_since_sell >= 10
    can_buy := true

if buy_condition1 and can_buy
    if buy_condition1a and not B
        strategy.entry('.', strategy.long)
        inBuy1 := true
        can_buy := false
    if buy_condition1b and conditionX and B
        strategy.entry('.', strategy.long)
        inBuy1 := true
        can_buy := false

if sell_condition1a and not inBuy1x
    strategy.close('.')
    inBuy1 := false
    can_buy := true

if buy_condition2 and can_buy
    strategy.entry('.', strategy.long)
    inBuy1x := true
    can_buy := false

if sell_condition2 and inBuy1x 
    strategy.close('.')
    inBuy1x := false
    can_buy := false
    bars_since_sell := 0

问题分析与修正方案

你的代码存在两个核心问题:

  • bars_since_sell仅在sell_condition2触发时重置,和需求针对sell_condition1b的逻辑不匹配
  • can_buy的更新逻辑不严谨,未在非等待状态下保持正确的开关状态

以下是修正后的代码,核心逻辑聚焦sell_condition1b的卖出后等待:

// 初始化状态变量
var bool in_position = false
var int bars_since_sell_1b = na

// 更新卖出后的K线计数
if not na(bars_since_sell_1b)
    bars_since_sell_1b := bars_since_sell_1b + 1

// 判断是否允许买入:无等待需求 或 已满足10根K线等待
can_buy = na(bars_since_sell_1b) or bars_since_sell_1b >= 10
if buy_condition1 and can_buy and not in_position
    strategy.entry('.', strategy.long)
    in_position := true
    bars_since_sell_1b := na  // 买入后重置等待计数

// 卖出条件1a:触发后不限制后续买入
if sell_condition1a and in_position
    strategy.close('.')
    in_position := false

// 卖出条件1b:触发后开始计数,限制后续买入
if sell_condition1b and in_position
    strategy.close('.')
    in_position := false
    bars_since_sell_1b := 0  // 卖出时初始化计数为0

关键逻辑说明

  • bars_since_sell_1b仅在sell_condition1b卖出时被设为0,之后每根K线自动累加
  • can_buy通过判断bars_since_sell_1b状态,决定是否开放买入权限
  • 成功买入后立即重置bars_since_sell_1b,消除等待限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:12:25