首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Pine脚本中编辑Williams fractal indicator以显示3-bar分形?

如何在Pine脚本中编辑Williams fractal indicator以显示3-bar分形?
EN

Stack Overflow用户
提问于 2019-09-07 04:07:49
回答 1查看 857关注 0票数 1

Williams Fractal通过找到5个条形的低/高,滞后2个条形来绘制分形。

我想设置一个指标,找出3根柱子的最低点/最高点。

我已经检查了TradingView的内置Williams Fractal,它显示了以下代码:

代码语言:javascript
复制
//@version=4
study("Williams Fractal", shorttitle="Fractal", 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)

我的第一个问题是关于defval的:为什么默认值是2?这是指滞后吗?此外,我认为设置input允许用户在TradingView上操作这个数字来实现指标偏好(比如设置MA的回看周期),但我在内置的Williams Fractal上看不到这个输入。

然后我们得到这些参数:

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

我能够计算出highlow是当前的最高和最低价格,括号中的值提供了以前的最高/最低值。但是,high[n+3] (举个例子)是指高价的3支蜡烛,而high[n-1]是指高1支的回购吗?

无论如何,我都很难理解代码的逻辑。我得到的upFractal是将在屏幕上绘制的变量,但让我试着将以下行放入文字中:

代码语言:javascript
复制
upFractal = (                                                                                                          (high[n+2]  < high[n]) and (high[n+1]  < high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n]))

我想这就是它的意思:

“如果前面两个条形的高度小于当前条形的高度,并且前面一个条形的高度小于当前条形的高度,并且后面一个条形的高度小于当前条形的高度,并且后面两个条形的高度小于当前条形的高度,则绘制upFractal。”

我没搞错吧?我可以简单地遵循这个逻辑来设计一个3栏模式吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-09-07 08:42:21

在Pine中的时间序列上使用历史引用[]运算符时,行为与您的理解相反;更大的指数在过去更远,零(或不带运算符的变量名)引用当前条形图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57828006

复制
相关文章

相似问题

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