这是我的代码:
def TrueRange = ATR(14)[1];
在每个新烛台上,thinkorswim 都会生成一个新的 ATR 值,TrueRange 会使用前一个烛台的 ATR 值进行填充。
我正在寻找一种方法来将图表上第一个烛台的 ATR 值保持在 TrueRange 内,而不会随着每个新烛台的变化而变化。
谁能帮我?
这是我的代码:
def TrueRange = ATR(14)[1];
在每个新烛台上,thinkorswim 都会生成一个新的 ATR 值,TrueRange 会使用前一个烛台的 ATR 值进行填充。
我正在寻找一种方法来将图表上第一个烛台的 ATR 值保持在 TrueRange 内,而不会随着每个新烛台的变化而变化。
谁能帮我?
您可以使用递归变量:
def TrueRange;
if BarNumber() == 1 {
TrueRange = ATR(14)[1];
} else {
TrueRange = TrueRange[1];
}
编辑:您也可以在一行中执行此操作:
def TrueRange = ( if BarNumber() == 1 then ATR(14)[1] else TrueRange[1] );
编辑 2:如果您使用多个偏移/长度值,thinkScript 将覆盖变量和绘图上的长度/偏移值,以使用脚本中存在的最大值,而不是指定的值。在这种情况下,您需要使用 CompoundValue 来强制脚本使用正确的偏移量。
def TrueRange = CompoundValue(length=1, "visible data"=if BarNumber() == 1 then ATR(14)[1] else TrueRange[1], "historical data"=Double.NaN);