Pine script 用矩形背景绘制分形图

Pine script 用矩形背景绘制分形图,pine-script,Pine Script,我不熟悉Tradingview中的Pine脚本 我试图将Williams分形指示器绘制为一个着色框,从向下分形到下一个向上分形,然后向下到下一个向下分形,依此类推。有一个链接指向我正在尝试做的事情的图像 经过30多次尝试后,如果可以的话,我会寻求帮助 这是分形的代码 //@version=4 study("Williams Fractals", shorttitle="Fractals", format=format.price, precision=0, overlay=true) // D

我不熟悉Tradingview中的Pine脚本

我试图将Williams分形指示器绘制为一个着色框,从向下分形到下一个向上分形,然后向下到下一个向下分形,依此类推。有一个链接指向我正在尝试做的事情的图像

经过30多次尝试后,如果可以的话,我会寻求帮助

这是分形的代码

//@version=4
study("Williams Fractals", shorttitle="Fractals", format=format.price, precision=0, overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input(title="Periods", defval=2, minval=2, type=input.integer)

upFractal = (                                                                                                          (high[n+2]  < high[n]) and (high[n+1]  < high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n]))
         or (                                                                               (high[n+3]  < high[n]) and (high[n+2]  < high[n]) and (high[n+1] == high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n]))
         or (                                                    (high[n+4]  < high[n]) and (high[n+3]  < high[n]) and (high[n+2] == high[n]) and (high[n+1] <= high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n]))
         or (                          (high[n+5] < high[n]) and (high[n+4]  < high[n]) and (high[n+3] == high[n]) and (high[n+2] == high[n]) and (high[n+1] <= high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n]))
         or ((high[n+6] < high[n]) and (high[n+5] < high[n]) and (high[n+4] == high[n]) and (high[n+3] <= high[n]) and (high[n+2] == high[n]) and (high[n+1] <= high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n]))

dnFractal = (                                                                                                  (low[n+2]  > low[n]) and (low[n+1]  > low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n]))
         or (                                                                         (low[n+3]  > low[n]) and (low[n+2]  > low[n]) and (low[n+1] == low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n]))
         or (                                                (low[n+4]  > low[n]) and (low[n+3]  > low[n]) and (low[n+2] == low[n]) and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n]))
         or (                        (low[n+5] > low[n]) and (low[n+4]  > low[n]) and (low[n+3] == low[n]) and (low[n+2] == low[n]) and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n]))
         or ((low[n+6] > low[n]) and (low[n+5] > low[n]) and (low[n+4] == low[n]) and (low[n+3] >= low[n]) and (low[n+2] == low[n]) and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n]))

// Plot the fractals as shapes on the chart.
plotshape(dnFractal, style=shape.triangledown, location=location.belowbar, offset=-2, color=color.maroon, transp=0)
plotshape(upFractal, style=shape.triangleup,   location=location.abovebar, offset=-2, color=color.olive,  transp=0)
/@version=4
研究(“Williams Fractals”,shorttitle=“Fractals”,format=format.price,精度=0,叠加=true)
//将“n”定义为周期数,并将错误处理的最小值保持为2。
n=输入(title=“Periods”,deffal=2,minval=2,type=input.integer)
upFractal=((高[n+2]<高[n])和(高[n+1]<高[n])和(高[n-1]<高[n])和(高[n-2]<高[n]))
或((高[n+3]<高[n])和(高[n+2]<高[n])和(高[n+1]==高[n])和(高[n-1]<高[n])和(高[n-2]<高[n]))
或((高[n+4]<高[n])和(高[n+3]<高[n])和(高[n+2]==高[n])和(高[n+1]低[n]))
或((低[n+3]>低[n])和(低[n+2]>低[n])和(低[n+1]==低[n])和(低[n-1]>低[n])和(低[n-2]>低[n]))
或((低[n+4]>低[n])和(低[n+3]>低[n])和(低[n+2]==低[n])和(低[n+1]>=低[n])和(低[n-1]>低[n])和(低[n-2]>低[n]))
或者((低[n+5]>低[n])和(低[n+4]>低[n])和(低[n+3]==低[n])和(低[n+2]==低[n])和(低[n+1]>=低[n])和(低[n-1]>低[n])和(低[n-2]>低[n]))
或者((低[n+6]>低[n])和(低[n+5]>低[n])和(低[n+4]==低[n])和(低[n+3]>=低[n])和(低[n+2]==低[n])和(低[n+1]>=低[n])和(低[n-1]>低[n])和(低[n-2]>低[n]))
//将分形图绘制为图表上的形状。
plotshape(dnFractal,style=shape.triangledown,location=location.belowbar,offset=-2,color=color.maroon,transp=0)
plotshape(upFractal,style=shape.triangleup,location=location.overbar,offset=-2,color=color.olive,transp=0)
如果你能给我一些建议,我将不胜感激


谢谢

不太确定您对阴影框的想法,但这可能会给您一些想法。将其添加到代码末尾:

var float hiBase = na
var float loBase = na
// Remember hi/lo of new fractal as it is identified, 
// and ignore new opposite fractal when dual fractals are identified on same bar.
if upFractal and not dnFractal
    hiBase := high[n]
    loBase := na
if dnFractal and not upFractal
    hiBase := na
    loBase := low[n]
// Use the fact that we are plotting hiBase=na or loBase=na when we don't need one of the fills.
// Make special cases at new fractal to continue plotting previous fractal fill for another bar.
hi1 = plot(na(loBase[1]) and not na(loBase) ? hiBase[1] : hiBase, color = color.white, transp = 100, offset=-n)
hi2 = plot(low[n], color = color.white, transp = 100, offset=-n)
fill( hi1, hi2, color = color.red)
lo1 = plot(na(hiBase[1]) and not na(hiBase) ? loBase[1] : loBase, color = color.white, transp = 100, offset=-n)
lo2 = plot(high[n], color = color.white, transp = 100, offset=-n)
fill( lo1, lo2, color = color.green)
[编辑2019.08.21:32-LucF]

plotchar(dnFractal, "", "⌄", location=location.belowbar, offset=-n, color=color.maroon, transp=0, size=size.small)
plotchar(upFractal, "", "⌃", location=location.abovebar, offset=-n, color=color.olive, transp=0, size=size.small)

var float hiBase = na
var float loBase = na
if upFractal and not dnFractal
    hiBase := high[n]
if dnFractal and not upFractal
    loBase := low[n]
hi = plot(hiBase, color=color.white, transp=100, offset=-n, style=plot.style_linebr)
lo = plot(loBase, color=color.white, transp=100, offset=-n, style=plot.style_linebr)
fill(hi, lo, color=color.gray)


不太确定你对阴影框的想法,但这可能会给你一些想法。将其添加到代码末尾:

var float hiBase = na
var float loBase = na
// Remember hi/lo of new fractal as it is identified, 
// and ignore new opposite fractal when dual fractals are identified on same bar.
if upFractal and not dnFractal
    hiBase := high[n]
    loBase := na
if dnFractal and not upFractal
    hiBase := na
    loBase := low[n]
// Use the fact that we are plotting hiBase=na or loBase=na when we don't need one of the fills.
// Make special cases at new fractal to continue plotting previous fractal fill for another bar.
hi1 = plot(na(loBase[1]) and not na(loBase) ? hiBase[1] : hiBase, color = color.white, transp = 100, offset=-n)
hi2 = plot(low[n], color = color.white, transp = 100, offset=-n)
fill( hi1, hi2, color = color.red)
lo1 = plot(na(hiBase[1]) and not na(hiBase) ? loBase[1] : loBase, color = color.white, transp = 100, offset=-n)
lo2 = plot(high[n], color = color.white, transp = 100, offset=-n)
fill( lo1, lo2, color = color.green)
[编辑2019.08.21:32-LucF]

plotchar(dnFractal, "", "⌄", location=location.belowbar, offset=-n, color=color.maroon, transp=0, size=size.small)
plotchar(upFractal, "", "⌃", location=location.abovebar, offset=-n, color=color.olive, transp=0, size=size.small)

var float hiBase = na
var float loBase = na
if upFractal and not dnFractal
    hiBase := high[n]
if dnFractal and not upFractal
    loBase := low[n]
hi = plot(hiBase, color=color.white, transp=100, offset=-n, style=plot.style_linebr)
lo = plot(loBase, color=color.white, transp=100, offset=-n, style=plot.style_linebr)
fill(hi, lo, color=color.gray)


谢谢LucF。这对我帮助很大。理想情况下,我会将着色保持在上一个向下分形的水平,直到形成一个新的向下分形。同样,在上一个向上分形的层次上,直到形成一个新的向上分形。我会有一个剧本,看看我能不能做到。不过,任何建议都将受到感激。再次感谢。我已经在我的原始帖子中添加了一个图片来展示我正在尝试做的事情。用更类似的例子和Unicode箭头来回答你可能要使用的。这是辉煌的“Luff-PoCotoDes非常感谢你。”如果你考虑回答的问题,你可以点击投票箭头上的复选标记来回答这个问题。谢谢LUCF。这对我帮助很大。理想情况下,我会将着色保持在上一个向下分形的水平,直到形成一个新的向下分形。同样,在上一个向上分形的层次上,直到形成一个新的向上分形。我会有一个剧本,看看我能不能做到。不过,任何建议都将受到感激。再次感谢。我已经在我的原始帖子中添加了一个图片来展示我正在尝试做的事情。用更类似的例子和Unicode箭头来回答你可能要使用的。这是辉煌的@ Luff-PoCotoDes非常感谢。如果你考虑回答的问题,你可以点击投票箭头下面的复选标记来回答这个问题。