Pine script Pinescript存储高值和低值';s错误

Pine script Pinescript存储高值和低值';s错误,pine-script,Pine Script,我试图模拟一个相对基本的交易策略,但不幸的是,我的尝试没有奏效 本质上,当有一支红烛时,只要下一支蜡烛接近红烛的最高点,你就会购买。随着下一支红烛在原始红烛的低点下方收盘,这一买入价格不断向下一个低点移动。因此,蜡烛的高低位置内的任何运动都会被忽略。在做了一个条目之后,当下一支蜡烛低于你在购买的蜡烛的下限时,你就会卖出。随着新的、更高的绿色蜡烛的制作,这一点再次不断向上移动 //@version=4 strategy("9gag", pyramiding = 1, over

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

本质上,当有一支红烛时,只要下一支蜡烛接近红烛的最高点,你就会购买。随着下一支红烛在原始红烛的低点下方收盘,这一买入价格不断向下一个低点移动。因此,蜡烛的高低位置内的任何运动都会被忽略。在做了一个条目之后,当下一支蜡烛低于你在购买的蜡烛的下限时,你就会卖出。随着新的、更高的绿色蜡烛的制作,这一点再次不断向上移动

//@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
/@version=4
策略(“9gag”,聚合=1,叠加=true)
烛光高=0.0
烛光=0.0
var bool enable=false
如果(关闭<打开并启用==错误)
烛光高:=高
烛光:=低
启用:=真
如果(启用==真,关闭<烛光)
烛光高:=高
烛光:=低
启用:=真
如果(关闭>烛光高,启用==真)
strategy.entry(“long”,strategy.long,1.0,当=close>candlehigh时)
启用:=false
if(关闭<烛光灯并启用==真)
策略关闭(“长”,当=关闭<烛光)
启用:=false
因此,我试图让它工作的方法是,如果关闭<打开,那么我想将蜡烛的高值和低值分别存储在“candlehigh”和“candlelow”中。我有一个布尔启用,以防止该逻辑序列在创建条目之前再次运行

然后,下一个代码块检查自上次记录上一个代码块中最后一支蜡烛的低点以来是否已经进行了较低的收盘。如果这是真的,那么将再次记录最近条形图的低点和高点

之后,每当一个酒吧在最后一次记录的烛光高度以上关闭时,就会进行输入

enable设置为false,因此可以重复此操作

现在代码向我吐出了任何错误,但是没有交易,所以它似乎不起作用

我找不到任何理由说明这不起作用,非常感谢您的帮助


谢谢

我认为这应该能完成你想做的事情。我没有按照你的方式组织,而是跟踪你是否处于长期状态。请记住,指令是在信号机的下一个栏打开时执行的。绿色箭头表示要进入的条件出现的条形图,红色x表示满足关闭位置的条件

我们使用
barstate.isconfirm
检查当前条关闭时的条件。为了使它更清晰,我使用bool变量
enter\u long
exit\u long
将逻辑与entry/close命令分开。然后,我们还可以使用这些布尔变量来
plotshape()
直观地检查逻辑。如果您有以后要添加的其他条件,您可以使用相同的bool来翻转一个输入命令,或者为每种类型的输入条件使用多个不同的bool,即
enter_x__long
enter_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)
当编写这类代码以绘制像candlehigh这样的级别以进行调试时,它也会很有帮助

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)
var float candlehigh=na
var浮动烛光=na
var bool in_a_long=错误
bool enter_long=false
bool exit_long=错误
如果barstate.isconfirm
如果in_a_long==false
如果关闭<打开
烛光高:=高
烛光:=低
否则,如果关闭>打开并关闭>烛光高并关闭[1]<打开[1]
烛光高:=高
in_a__long:=真
输入_long:=true
否则如果in_a_long==真
如果关闭<打开
如果关闭<烛光
in_a__long:=假
退出_long:=真
烛光高:=高
烛光:=低
否则,如果关闭>烛光和低>烛光
烛光:=低
否则,如果关闭>打开和关闭>烛光
烛光:=低
strategy.entry(“long”,strategy.long,1.0,when=enter_long)
策略关闭(“长”,当=退出长)
绘图(烛光高,颜色=颜色.石灰)
绘图(烛光,颜色=颜色。红色)
plotshape(输入_long,style=shape.triangleup,location=location.belowbar,color=color.lime,size=size.small)
plotshape(退出长,样式=shape.xcross,位置=location.overbar,颜色=color.red,大小=size.small)