繁体   English   中英

Plot MACD Highrange 突破

[英]Plot the break of Highrange of a MACD

你好,每当 MACD 高点像这样被打破时,有人可以帮我绘制图形吗?

这是我的代码

//@version=5
indicator("break high", overlay = true)

// === MACD ===
fastMA = input.int(title="Fast moving average",  defval = 12, minval = 7)
slowMA = input.int(title="Slow moving average",  defval = 26, minval = 7)
signalLength = input.int(9, minval=1)
MacdControl = input(true, title="MACD/Histogram Control")

[currMacd,,] = ta.macd(close[0], fastMA, slowMA, signalLength)
[prevMacd,,] = ta.macd(close[1], fastMA, slowMA, signalLength)
signal = ta.ema(currMacd, signalLength)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) //Zero Line


crossoverbull = ta.crossover(macdLine, signalLine)
crossoverbear = ta.crossover(signalLine, macdLine)


var can_find = false
condstart = crossoverbull
condstop = crossoverbear

can_find := condstop ? false : condstart ? true : can_find

var float highesthigh = na

highesthigh := if (condstart)
    high
else if (can_find)
    if (high > highesthigh)
        high
    else
        highesthigh
else
    na

plot(highesthigh, color=color.blue, style=plot.style_linebr)

图片在这里

我不知道如何存储之前的高点,以便在糖果打破它时参考。

您可以利用一些功能来实现这一点。

首先,让我们声明一个变量来存储之前的highesthigh并使用var关键字,这样它的值就不会在柱线/执行之间重置:

var float lastHighestHigh = na

其次,每次我们进入新的highesthigh计算时我们都想重置这个变量,所以我们需要一个bool变量来检查这个条件。 我们可以简单地检查当前柱是否不是na以及之前的柱是否具有highesthighna值:

firstBarAfterHH = not na(highesthigh) and na(highesthigh[1])

第三,我们将使用ta.valuewhen() function 检查上次不是nahighesthigh的值。我们必须在每个柱上调用它以保持一致性:

valueOfLastHighestHigh = ta.valuewhen(not na(highesthigh), highesthigh, 1)

第四,我们将设置lastHighestHigh变量的值, valueOfLastHighestHigh每次我们firstBarAfterHHtrue时它都会获得 valueOfLastHighestHigh 的值:

if firstBarAfterHH
    lastHighestHigh := valueOfLastHighestHigh

此时,我们有 2 个变量可以使用:

  1. highesthigh - 它将存储当前柱的最高价。
  2. lastHighestHigh - 这将存储我们之前的highesthigh

因此,我们可以使用ta.crossover() function 比较它们,以便在一个值超过另一个时获得第一个柱。 例如:

plotshape(ta.crossover(highesthigh, lastHighestHigh))

完整代码:

var float lastHighestHigh = na
firstBarAfterHH = not na(highesthigh) and na(highesthigh[1])
valueOfLastHighestHigh = ta.valuewhen(not na(highesthigh), highesthigh, 1)

if firstBarAfterHH
    lastHighestHigh := valueOfLastHighestHigh

plotshape(ta.crossover(highesthigh, lastHighestHigh))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM