反转信号之前重复的信号

发布于 2025-01-14 16:15:30 字数 1454 浏览 3 评论 0原文

我已经编写了带有逻辑的代码,当价格(收盘价)交叉 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.

enter image description here

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过度放纵 2025-01-21 16:15:30

有一个 var 来指示您是否已经很长。那么,只有当您不做多时才应该允许买入信号,而只有当您已经做多时才应该允许卖出信号。

//@version=5
indicator('Alert on MA Cross 1.0', overlay=true)

var isLong = false

// 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

isBuy = not isLong and signalUp
isSell = isLong and signalDn

isLong := isBuy ? true : isSell ? false : isLong

// Alert Condition creation 
if isBuy
    alert('Price(' + str.tostring(close) + ') crossed over MA (' + str.tostring(ma) + ').', alert.freq_once_per_bar)
if isSell
    alert('Price(' + str.tostring(close) + ') crossed under MA (' + str.tostring(ma) + ').', alert.freq_once_per_bar)

// Plotting MA and Signal
plot(ma)
plotshape(isBuy, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.tiny, title='signalUp')
plotshape(isSell, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny, title='signalDn')

// Trigger Alert Condition
alertcondition(isBuy or isSell, title='MA Alert', message='Price x EMA Detected')

输入图片此处描述

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.

//@version=5
indicator('Alert on MA Cross 1.0', overlay=true)

var isLong = false

// 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

isBuy = not isLong and signalUp
isSell = isLong and signalDn

isLong := isBuy ? true : isSell ? false : isLong

// Alert Condition creation 
if isBuy
    alert('Price(' + str.tostring(close) + ') crossed over MA (' + str.tostring(ma) + ').', alert.freq_once_per_bar)
if isSell
    alert('Price(' + str.tostring(close) + ') crossed under MA (' + str.tostring(ma) + ').', alert.freq_once_per_bar)

// Plotting MA and Signal
plot(ma)
plotshape(isBuy, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.tiny, title='signalUp')
plotshape(isSell, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny, title='signalDn')

// Trigger Alert Condition
alertcondition(isBuy or isSell, title='MA Alert', message='Price x EMA Detected')

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文