Pine Script策略问题:昨日收阳次日做多逻辑图表异常
问题排查与修正:Pine Script V3 阳线次日买入策略
咱们先拆解下你代码里的核心问题,这就是导致图表不符合预期的根本原因:
1. 阳线判断逻辑完全错误
你写的 bullish = open[1] < open,这个条件是当前K线开盘价高于前一天开盘价,和你要的“前一天是阳线(收盘价>开盘价)”完全不沾边。阳线的正确判断应该是前一根K线的收盘价大于开盘价,也就是:
bullish = close[1] > open[1]
2. 平仓逻辑不符合预期
你用 strategy.close("buy", not bullish),这里的 not bullish 对应的是当前K线开盘价不高于前一天开盘价,和你想要的“非阳线时平仓”逻辑脱节。正确的平仓条件应该是当前不再满足买入触发条件(即前一天不是阳线),也就是用修正后的 not bullish 即可。
3. 订单执行时机的细节
默认情况下,strategy.entry 会在满足条件的K线收盘价进场,但你的需求是“阳线次日开盘买入”,所以需要明确指定在当前K线的开盘价执行买入订单,避免延迟进场。
修正后的完整代码
//@version=3 strategy("Yesterday Cat", overlay=true) // 定义阳线条件:前一根K线收盘价>开盘价 bullish = close[1] > open[1] // 时间过滤条件 timeFilter = time > timestamp(2018, 01, 01, 0, 0) // 阳线次日开盘买入:指定在当前K线开盘价进场 strategy.entry("buy", strategy.long, 1, when=bullish and timeFilter, limit=open) // 当不再满足阳线条件时平仓(前一天不是阳线) strategy.close("buy", when=not bullish and timeFilter)
逻辑验证
- 当K线2是阳线(
close[2]>open[2]),那么K线3的bullish条件为true,会在K线3开盘时触发买入,完全符合你的预期。 - 当K线5不是阳线(
close[5]<=open[5]),那么K线6的not bullish条件为true,会触发平仓,和你预想的一致。
内容的提问来源于stack exchange,提问作者Molibar
相关产品推荐
相关产品推荐

