Pine script 仅根据趋势变化绘制退出交易的第一个实例

Pine script 仅根据趋势变化绘制退出交易的第一个实例,pine-script,Pine Script,我编写了一份研究报告,根据各种标准绘制长/短/退出标签 除打印出口外,它功能正常。问题是,退出是多次产生的,我只想在长或短趋势中显示第一次 我尝试了各种方法,如barssice和valuewhen,试图孤立第一个实例,但没有成功 /@version=4 研究(“,叠加=真,精度=2) /////////////动力///////////// _1=输入(假)═══════ 动力══════") 长度=输入(15) 价格=收盘价 动量(意甲,长度)=> mom=意甲-意甲[长度] 妈妈 mom0

我编写了一份研究报告,根据各种标准绘制长/短/退出标签

除打印出口外,它功能正常。问题是,退出是多次产生的,我只想在长或短趋势中显示第一次

我尝试了各种方法,如barssice和valuewhen,试图孤立第一个实例,但没有成功

/@version=4
研究(“,叠加=真,精度=2)
/////////////动力/////////////
_1=输入(假)═══════ 动力══════")
长度=输入(15)
价格=收盘价
动量(意甲,长度)=>
mom=意甲-意甲[长度]
妈妈
mom0=动量(价格、长度)
mom1=动量(mom0,1)
///均线
_8=输入(假)══════ 均线截止═════")
emalength=input(30,minval=1,title=“EMA”)
src=输入(关闭,title=“源”)
e1=ema(src,ema长度)
e2=ema(e1,ema长度)
dema=2*e1-e2
绘图(dema,“dema”,颜色=颜色。蓝色)
///////////////战略////
long=mom0>0,mom1>0,close>dema
short=mom0<0,mom1<0,closelast_short_信号
in_short_信号=last_short_信号>last_long_信号
最后_高=0.0
最后一个低=0.0
last_high:=不在_long_信号中?na:在_long_信号中且(na(last_high[1])或high>nz(last_high[1])?high:nz(last_high[1])
last_low:=不在_short_信号中?na:在_short_信号中且(na(last_low[1])或低高[1]
///////////////绘图////
bgcolor(长信号?颜色。石灰:短信号?颜色。褐红色:na,传输=40)
plotshape(长信号,样式=shape.labelup,位置=location.belowbar,颜色=color.lime,大小=size.tiny,title=“long Entry”,text=“long”,textcolor=color.white)
plotshape(短信号,样式=shape.labeldown,位置=location.overbar,颜色=color.maroon,大小=size.tiny,title=“short Entry”,text=“short”,textcolor=color.white)
plotshape(sinceLongStop,style=shape.labelup,location=location.belowbar,color=color.gray,size=size.tiny,title=“Long Exit”,text=“L Exit”,textcolor=color.white)
plotshape(sinceShortStop,style=shape.labeldown,location=location.overbar,color=color.gray,size=size.tiny,title=“Short Exit”,text=“S Exit”,textcolor=color.white)
//@version=4
study("", overlay=true, precision=2)

///////////// Momentum /////////////
_1 = input(false, "═══════ Momentum ══════")
length = input(15)
price = close

momentum(seria, length) =>
    mom = seria - seria[length]
    mom

mom0 = momentum(price, length)
mom1 = momentum(mom0, 1)

/// EMA
_8 = input(false, "══════ EMA Cutoff ═════")
emalength = input(30, minval=1, title="EMA")
src = input(close, title="Source")
e1 = ema(src, emalength)
e2 = ema(e1, emalength)
dema = 2 * e1 - e2
plot(dema, "DEMA", color=color.blue)

/////////////// Strategy /////////////// 
long = mom0 > 0 and mom1 > 0 and close > dema
short = mom0 < 0 and mom1 < 0 and close < dema

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = 0.0
last_open_short_signal = 0.0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = 0.0
last_short_signal = 0.0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = 0.0
last_low = 0.0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) 
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) 

sinceLongStop = long_signal != 1 and in_long_signal and last_long and low < low[1]
sinceShortStop = short_signal != 1 and in_short_signal and last_short and high > high[1]

/////////////// Plotting /////////////// 
bgcolor(long_signal ? color.lime : short_signal ? color.maroon : na, transp=40)
plotshape(long_signal, style=shape.labelup, location=location.belowbar, color=color.lime, size=size.tiny, title="Long Entry", text="LONG", textcolor=color.white)
plotshape(short_signal, style=shape.labeldown, location=location.abovebar, color=color.maroon, size=size.tiny, title="Short Entry", text="SHORT", textcolor=color.white)

plotshape(sinceLongStop, style=shape.labelup, location=location.belowbar, color=color.gray, size=size.tiny, title="Long Exit", text="L EXIT", textcolor=color.white)
plotshape(sinceShortStop, style=shape.labeldown, location=location.abovebar, color=color.gray, size=size.tiny, title="Short Exit", text="S EXIT", textcolor=color.white)