【发布时间】:2021-02-26 03:22:31
【问题描述】:
我正在将 ThinkScript 指标转换为 PineScript。我目前在将 ThinkScript 的 barNumber() 函数转换为 PineScript 时遇到问题。我想我知道用什么作为它的等价物,但即使在阅读了文档和示例之后,我也不确定我是否理解 barNumber()。
该指标基本上用作进/出指标。我认为使用 barNumber() 的代码正在执行的操作是在绘制新信号时删除信号,但如果该新信号无效,则它会恢复为先前的信号。
这是我感到困惑的部分代码,前几个 def 后面有更多内容,只是解释它们应该全部返回为浮点数是无关紧要的(def stateUp 到 def linDev):
def bar = barNumber();
def stateUp;
def stateDn;
def atrCCI;
def price;
def linDev;
def CCI = if linDev == 0
then 0
else (price - avg(price, length)) / linDev / 0.05;
def MT1 = if CCI > 0
then max(MT1[1], hl2 - ATRCCI)
else (min(MT1[1], hl2 + ATRCCI)
def state = if close > ST and close > MT1 then StateUp
else if close < ST and close < MT1 then StateDn
else State[1];
def newState = HighestAll(if state <> state[1] then bar else 0);
该代码使用了很多条件语句,以下是该代码的一些其他用法:
CSA = if bar >= newState then MT1 else Double.NaN;
signal = if bar >= newState and state == stateUp and. . .
在 PineScript 中是否有一种简单的方法来解决这个问题?
感谢您的帮助!
【问题讨论】: