Pine script 带止损单的RSI指标

Pine script 带止损单的RSI指标,pine-script,algorithmic-trading,trading,Pine Script,Algorithmic Trading,Trading,我知道当价格高于当前市场价格时,会出现买入止损 我需要了解为什么这里会出现停止购买订单。我不太明白RSI信号指标是如何影响买入止损的 这是密码 //if above 70 , overbought , if below 30, then oversold strategy(title="Stop Order RSI Strategy", shorttitle="Stop Order RSI", format=format.price, precision=

我知道当价格高于当前市场价格时,会出现买入止损

我需要了解为什么这里会出现停止购买订单。我不太明白RSI信号指标是如何影响买入止损的

这是密码

//if above 70 , overbought , if below 30, then oversold
strategy(title="Stop Order RSI Strategy", shorttitle="Stop Order RSI", format=format.price, precision=2)

//Inputs
i_oversold = input(30 , title="Oversold")
i_overbought = input(70 , title="Overbought")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)

//Calculations
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

//Plotting
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")

goLong = rsi < i_oversold
goShort = rsi > i_overbought
strategy.entry("Buy Stop" , stop=high , when = goLong , long = true)
strategy.entry("Sell Stop" , stop=low , when = goShort , long = strategy.short)
//如果高于70,则超买;如果低于30,则超卖
策略(title=“停止订单RSI策略”,shorttitle=“停止订单RSI”,格式=格式.价格,精度=2)
//投入
i_超卖=输入(30,title=“超卖”)
i_超买=输入(70,title=“超买”)
len=输入(14,minval=1,title=“Length”)
src=input(关闭“Source”,type=input.Source)
//计算
up=rma(最大值(变化(src),0),len)
向下=rma(-min(变化(src),0),len)
rsi=下降==0?100:up==0?0:100-(100/(1+上/下))
//策划
绘图(rsi,“rsi”,颜色=#8E1599)
波段1=hline(70,“上波段”,颜色=#C0)
波段0=hline(30,“较低波段”,颜色=#C0)
填充(带1,带0,颜色=#9915FF,传输=90,title=“背景”)
goLong=rsii_超买
策略输入(“买入止损”,止损=高,何时=高隆,长=真)
strategy.entry(“卖出止损”,止损=低位,何时=短线,长线=strategy.short)


如果有人能花时间解释一下这里发生了什么,我将不胜感激。

您的脚本运行正常。
这是我对您的代码的格式副本,第一行是添加的
/@version=4
,最后是调试部分

//@version=4
//if above 70 , overbought , if below 30, then oversold
strategy(title="Stop Order RSI Strategy", shorttitle="Stop Order RSI", format=format.price, precision=2)

//Inputs
i_oversold = input(30 , title="Oversold")
i_overbought = input(70 , title="Overbought")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)

//Calculations
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

//Plotting
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")

goLong = rsi < i_oversold
goShort = rsi > i_overbought
strategy.entry("Buy Stop" , stop=high , when = goLong , long = true)
strategy.entry("Sell Stop" , stop=low , when = goShort , long = strategy.short)

// === DEBUG ===
plotchar(rsi, "rsi", "")
plotchar(i_oversold, "i_oversold", "")
plotchar(i_overbought, "i_overbought", "")
plotchar(goLong, "goLong", "")
plotchar(goShort, "goShort", "")
/@version=4
//如果高于70,则超买;如果低于30,则超卖
策略(title=“停止订单RSI策略”,shorttitle=“停止订单RSI”,格式=格式.价格,精度=2)
//投入
i_超卖=输入(30,title=“超卖”)
i_超买=输入(70,title=“超买”)
len=输入(14,minval=1,title=“Length”)
src=input(关闭“Source”,type=input.Source)
//计算
up=rma(最大值(变化(src),0),len)
向下=rma(-min(变化(src),0),len)
rsi=下降==0?100:up==0?0:100-(100/(1+上/下))
//策划
绘图(rsi,“rsi”,颜色=#8E1599)
波段1=hline(70,“上波段”,颜色=#C0)
波段0=hline(30,“较低波段”,颜色=#C0)
填充(带1,带0,颜色=#9915FF,传输=90,title=“背景”)
goLong=rsii_超买
策略输入(“买入止损”,止损=高,何时=高隆,长=真)
strategy.entry(“卖出止损”,止损=低位,何时=短线,长线=strategy.short)
//==调试===
plotchar(rsi,“rsi”,“”)
plotchar(i_超卖,“i_超卖”,“i_超卖”)
plotchar(i_超买,“i_超买”,“i_超买”)
plotchar(goLong,“goLong”、“”)
plotchar(goShort,“goShort”,“”)
当您将鼠标悬停在某个条上时,调试部分会在数据窗口中显示该条上的变量值,如下所示:

在20年3月11日,您看到
goLong
0

在20年3月12日
12
你会看到
goLong
变成
1

这意味着Pine将在下一个条形图上做多,在当前条形图的
高位处有止损单。
因此,它希望在20年3月13日的
16.6427452
进行多头交易,这是20年3月12日
12
的最高点
在20年3月13日,该止损价从未达到,因此不会持续很久

在同一天的20年3月13日,你可以看到
goLong
仍然是
1

同样的过程重复。Pine将在下一个条形图上进行多头操作,在当前条形图的
高位处发出止损指令。因此,它希望在20年3月14日的
12.3718699
进行多头交易,这是20年3月13日
的最高点
同样,在20年3月14日,该止损价从未达到,因此不会持续很久

在20年3月14日,您看到
goLong
仍然是
1

同样的过程再次重复。Pine将在下一个条形图上进行多头操作,在当前条形图的
高位处发出止损指令。因此,它希望在20年3月15日的
11.4392802
上做多,这是20年3月14日
的最高点

这一次,在20年3月15日,该止损价格达到,系统进入多头仓位。

我已将该代码放入策略中。它不会在那个酒吧里发出信号。请编辑您的问题并发布整个脚本。@bjormistiaen我已经更新并粘贴了整个脚本。非常感谢您的调查。谢谢您的解释。然而,我发现很难理解这是如何工作的。在什么情况下会触发此买入止损?我知道它会在长时间内被触发。那么为什么当goLong=1时它不会触发呢?我对这一点还不熟悉,我怎么能理解发生了什么?这在我的回答中得到了解释。它试图在每个
goLong=1
上做多,但只有在达到止损价时才能进入多头仓位。因此,这两个条件都必须成立,才能进入长期市场。我建议您打开数据窗口,亲自查看每个条上的值是如何变化的。我想我再也说不清楚了。