Pine script 如何在Pine脚本中编辑Williams分形指示器以显示3条分形?

Pine script 如何在Pine脚本中编辑Williams分形指示器以显示3条分形?,pine-script,Pine Script,Williams分形通过查找5巴的低/高,滞后2巴来绘制分形 我想设置一个指示器,用于查找3巴的低/高 我已经检查了TradingView的内置Williams Fractal,它显示了以下代码: //@version=4 study("Williams Fractal", shorttitle="Fractal", format=format.price, precision=0, overlay=true) // Define "n" as the number of periods and

Williams分形通过查找5巴的低/高,滞后2巴来绘制分形

我想设置一个指示器,用于查找3巴的低/高

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

//@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)
我的第一个问题是关于
deffal
:为什么默认值是2?这是指滞后吗?另外,我认为设置一个
输入可以让用户在TradingView上为指标首选项操作这个数字(比如为MA设置回望期),但我在内置的Williams分形上看不到这个输入

然后我们得到这些参数:

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]))
这就是我认为它的意思:

"如果前面两个条的高度小于当前条的当前高度,前面一个条的高度小于当前条的高度,后面一个条的高度小于当前条的高度,后面两个条的高度小于当前条的高度,则绘制
upFractal
电流棒。”

我做对了吗?我能简单地按照这个逻辑来做一个3条的图案吗


谢谢。

在Pine中对时间序列使用历史引用
[]
操作符时,行为与您的理解相反;过去索引越大,引用当前条的变量名(或没有操作符的变量名)越远

upFractal = (                                                                                                          (high[n+2]  < high[n]) and (high[n+1]  < high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n]))