我已经编写了逻辑代码,购买信号(UpTriangle)将产生-当价格(关闭)交叉13 for和下一个栏超过‘交叉栏’的高,反之亦然的销售信号。
问题是,一旦我得到购买信号,它是重复之前,相反的信号产生。见下面的图表。

守则如下..。
//@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')发布于 2022-03-15 07:55:55
有一个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')

https://stackoverflow.com/questions/71477878
复制相似问题