Pine Script 帮助获取以前的蜡烛 OHLC

时间:2021-04-02 06:24:00

标签: pine-script

我的代码试图在 15 分钟图表上找出以下内容。

  1. 第二个 15 分钟蜡烛应该是内柱
  2. 第三个 15 分钟蜡烛应该打破第一个 15 分钟蜡烛的高点。

上述条件是长期的。 为了测试该策略,我编写了以下代码。

//@version=4
strategy(title="15minbreak")

CdlHigh=0.0
CdlLow=0.0

if(hour(time)==09 and minute(time) == 45)
    CdlHigh := high
    CdlLow := low
    
isInside = ((CdlHigh[1] < CdlHigh[0]) and (CdlLow[1] > CdlLow[0])) // 2nd cdl is inside bar
nextCdlBreak = CdlHigh > CdlHigh[0] // 3rd cdl has given a breakout.

goLong = (isInside and nextCdlBreak)
closeLong = (low < CdlLow[0])

strategy.entry("Long",strategy.long,100,when = goLong)
strategy.close("Long",when = closeLong)

但是当我运行代码时,我什么也没看到。 我不确定我在这里缺少什么。请求帮助。

1 个答案:

答案 0 :(得分:0)

您将 9:45 蜡烛的最高价分配给 CdlHigh,然后在该变量上使用历史引用运算符 [],该变量产生最后一个值为 0。尝试打开数据窗口并查看变量:

plotchar(CdlHigh,'cdlhigh','')
plotchar(CdlHigh[1],'cdlhigh','')

为了调试,我们可以先把时间变成一个变量并绘制它以查看它是否有效:

second_candle = hour(time)==09 and minute(time) == 45
plotshape(second_candle, style=shape.circle, color=color.black, size=size.small)    

既然您已经确认它正确选择了蜡烛图,您可以通过添加到条件继续调试。根据我查过的定义,内柱意味着前一个柱具有更高的高点和更低的低点。您可以将条件合并为一个变量或使用单独的变量,如下所示:

//@version=4
strategy(title="15minbreak", overlay=true)


second_candle = hour(time)==09 and minute(time) == 45
inside_bar = high[1] > high and low[1] < low
special_candle = inside_bar and second_candle

plotshape(special_candle, style=shape.circle, color=color.black, size=size.small)    

请注意,我添加了 overlay=true 以便更轻松地查看绘图形状。

有很多不同的方法可以构建条件。这是一个。请注意,[1] 表示最后一根柱线,[2] 表示两根柱线之前,[0] 不是必需的。例如,我定义了突破蜡烛图,然后将其与代表内部蜡烛图和 9:45 蜡烛图的变量结合使用,并与 [1] 一起使用以指示前一根蜡烛线的条件为真。

second_candle = hour(time)==09 and minute(time) == 45
inside_bar = high[1] > high and low[1] < low
candle_break = high > high[1]
special_candle = inside_bar[1] and second_candle[1] and candle_break

plotshape(special_candle, style=shape.circle, color=color.black, size=size.small)    

这足以生成进入条件。判断退出条件的意图并不容易,因为您使用了用于存储第二根蜡烛最高点的变量的历史参考。如果是这样,您需要使用 var 关键字初始化一个变量,并在 second_candle 计算结果为 true 时存储该值,或者使用 valuewhen 函数。

var float exit_low = na
if second_candle
    exit_low := low