首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用矩形背景绘制分形图

用矩形背景绘制分形图
EN

Stack Overflow用户
提问于 2019-08-21 13:54:05
回答 1查看 468关注 0票数 1

我对Tradingview中的松树剧本很陌生。

我试图把威廉斯分形指示器画成一个阴影盒,从一个向下的分形到下一个分形,再到下一个分形,等等。有一个链接的形象,我正在努力做的事。

试题箱

在30+尝试之后,如果可以的话,我将寻求一些帮助。

这是分形的代码

代码语言:javascript
复制
//@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)

如果你能给我指点,我会很感激的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-21 18:58:51

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57593322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档