Williams Fractal通过发现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)
我的第一个问题是关于defval
:为什么默认值2?这是指滞后吗?另外,我认为设置input
允许用户在TradingView上操作此数字以了解指标的偏好(例如设置MA的回溯期),但是我看不到内置的Williams Fractal的输入。
然后我们获得以下参数:
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]))
我能够确定high
和low
是当前的高价和低价,并且括号中的值可以访问以前的高/低值。但是,high[n+3]
(举个例子)是否意味着高价3支蜡烛,而high[n-1]
意味着高1支蜡烛?
无论如何,我都很难遵循代码的逻辑。我得到upFractal
是将在屏幕上绘制的变量,但让我尝试将以下行输入单词:
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条线吗?
谢谢。
答案 0 :(得分:0)
在Pine中使用在时间序列上引用[]
运算符的历史记录时,行为与您的理解相反;过去的索引更大,零(或没有运算符的变量名)引用当前柱。
只要您还同时阅读文档,那么从一开始就开始玩代码无疑是学习的一种好方法,而Stack Overflow并不能替代这些文档。开始学习松树的两个好地方是: https://www.tradingview.com/pine-script-docs/en/v4/Quickstart_guide.html 和 http://www.pinecoders.com/learning_pine_roadmap/