反转信号之前重复的信号
我已经编写了带有逻辑的代码,当价格(收盘价)交叉 13EMA 和下一个柱超过“交叉柱”的高点时,将生成买入信号(UpTriangle),卖出信号反之亦然。
问题是,一旦我收到买入信号,它就会在相反信号生成之前重复。请参阅下面的图表。
代码如下...
//@version=5
indicator('Alert on MA Cross 1.0', overlay=true)
// MA Crossover condition
ma = ta.ema(close, 13)
xUp = ta.crossover(close, ma)
xDn = ta.crossunder(close, ma)
// Fixing High or Low of Crossover or Crossunder Bar
xUpHigh = xUp ? high : na
xDnLow = xDn ? low : na
//Signal after crossing High/Low of Crossover or Crossunder Bar
signalUp = high > xUpHigh[1] ? high : na
signalDn = low < xDnLow[1] ? low : na
// Alert Condition creation
if signalUp
alert('Price(' + str.tostring(close) + ') crossed over MA (' + str.tostring(ma) + ').', alert.freq_once_per_bar)
if signalDn
alert('Price(' + str.tostring(close) + ') crossed under MA (' + str.tostring(ma) + ').', alert.freq_once_per_bar)
// Plotting MA and Signal
plot(ma)
plotshape(signalUp, style=shape.triangleup, location=location.absolute, color=color.new(color.green, 0), size=size.tiny, title='signalUp')
plotshape(signalDn, style=shape.triangledown, location=location.absolute, color=color.new(color.red, 0), size=size.tiny, title='signalDn')
// Trigger Alert Condition
alertcondition(signalUp or signalDn, title='MA Alert', message='Price x EMA Detected')
I have written code with logic that Buy Signal (UpTriangle) will generate - when Price (Close) crossover 13EMA and next Bar exceed 'Crossover Bar's' high and vice versa for Sell Signal.
Problem is that Once I got Buy signal it is repeating before opposite signal generating. See the Chart below.
The Code is as follows...
//@version=5
indicator('Alert on MA Cross 1.0', overlay=true)
// MA Crossover condition
ma = ta.ema(close, 13)
xUp = ta.crossover(close, ma)
xDn = ta.crossunder(close, ma)
// Fixing High or Low of Crossover or Crossunder Bar
xUpHigh = xUp ? high : na
xDnLow = xDn ? low : na
//Signal after crossing High/Low of Crossover or Crossunder Bar
signalUp = high > xUpHigh[1] ? high : na
signalDn = low < xDnLow[1] ? low : na
// Alert Condition creation
if signalUp
alert('Price(' + str.tostring(close) + ') crossed over MA (' + str.tostring(ma) + ').', alert.freq_once_per_bar)
if signalDn
alert('Price(' + str.tostring(close) + ') crossed under MA (' + str.tostring(ma) + ').', alert.freq_once_per_bar)
// Plotting MA and Signal
plot(ma)
plotshape(signalUp, style=shape.triangleup, location=location.absolute, color=color.new(color.green, 0), size=size.tiny, title='signalUp')
plotshape(signalDn, style=shape.triangledown, location=location.absolute, color=color.new(color.red, 0), size=size.tiny, title='signalDn')
// Trigger Alert Condition
alertcondition(signalUp or signalDn, title='MA Alert', message='Price x EMA Detected')
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有一个
var
来指示您是否已经很长。那么,只有当您不做多时才应该允许买入信号,而只有当您已经做多时才应该允许卖出信号。Have a
var
that indicates if you are already long. Then a buy signal should only be allowed when you are not long, and a sell signal should only be allowed when you are already long.