Pinescript 存储高值和低值的错误

Pinescript storing high and low value's error

我正在尝试模拟一个相对基本的交易策略,但不幸的是我的尝试没有奏效。

本质上,当有一根红色蜡烛时,只要下一根蜡烛收盘价高于该红色蜡烛的最高价,您就买入。随着下一根红色蜡烛的收盘价低于原始红色蜡烛的低点,该买入价不断转向下一个较低的高点。因此忽略蜡烛低点和高点内的任何运动。输入后,只要下一根蜡烛低于您购买的蜡烛的低点,您就会卖出。随着新的和更高的绿色蜡烛的形成,这再次不断向上移动。

//@version=4

strategy("9gag", pyramiding = 1, overlay=true)
candlehigh = 0.0
candlelow = 0.0
var bool enable = false


if ( close < open and enable == false )
    candlehigh := high
    candlelow := low
    enable := true
    
if (enable == true and close < candlelow)
    candlehigh := high
    candlelow := low
    enable := true

if (close > candlehigh and enable == true )
    strategy.entry("long",strategy.long,1.0,when = close > candlehigh)
    enable := false
    
if (close < candlelow and enable == true)
    strategy.close("long", when = close < candlelow)
    enable := false

所以我试图让它工作的方法是,如果收盘价 < 开盘价,那么我想将该蜡烛的高值和低值分别存储在“candlehigh”和“candlelow”中。我有一个布尔值启用,以防止该逻辑序列再次出现 运行,直到输入为止。

然后下一个代码块检查自上次代码块记录最后一根蜡烛的低点以来是否收盘价较低。如果这是真的,那么最近柱的低点和高点将再次被记录。

之后,每当柱形收盘价高于最后记录的烛台高点时,就会进行入场。

enable 设为 false,因此可以重复。

现在代码向我吐出任何错误,但没有进行任何交易,所以它似乎没有工作。

我找不到为什么这不起作用的任何原因,我们将不胜感激。

谢谢!

我认为这应该可以完成您想要做的事情。我没有按照您的方式构建,而是跟踪了您是否做多。请记住,订单是在信号的下一根柱开盘时执行的。绿色箭头代表进入条件发生的柱线,红色 x 代表满足平仓条件的柱线。

我们使用 barstate.isconfirmed 检查当前柱收盘时的条件。为了保持简洁,我通过使用 bool 变量 enter_longexit_long 将逻辑与 entry/close 命令分开。然后我们还可以使用这些布尔变量 plotshape() 来直观地检查逻辑。如果您有其他条件要稍后添加,您可以使用相同的 bool 来翻转一个输入命令,或者为每种类型的输入条件设置多个不同的 bool,即 enter_x_longenter_y_long 等。当事情发生时不可避免地无法按计划工作 plotshape() 映射出您的不同条件将使调试变得容易得多。

在编写此类代码以绘制您的关卡(如烛高)以进行调试时,它也很有帮助。

var float candlehigh = na
var float candlelow = na

var bool in_a_long = false
bool enter_long = false
bool exit_long = false

if barstate.isconfirmed
    if in_a_long == false
        if close < open
            candlehigh := high
            candlelow := low
        else if close > open and close > candlehigh and close[1] < open[1]
            candlehigh := high
            in_a_long := true
            enter_long := true
    else if in_a_long == true
        if close < open
            if close < candlelow
                in_a_long := false
                exit_long := true
                candlehigh := high
                candlelow := low
            else if close > candlelow and low > candlelow
                candlelow := low
        else if close > open and low > candlelow
            candlelow := low
    strategy.entry("long", strategy.long, 1.0, when = enter_long)
    strategy.close("long", when = exit_long)

plot(candlehigh, color = color.lime)
plot(candlelow, color = color.red)
plotshape(enter_long, style = shape.triangleup, location = location.belowbar, color = color.lime, size = size.small)
plotshape(exit_long, style = shape.xcross, location = location.abovebar, color = color.red, size = size.small)