繁体   English   中英

我在将可变变量包含为安全 function 的参数时遇到问题

[英]I have experiencing problem to include a mutable variable as an argument for security function

我尝试在策略中在 ATR 追踪止损中使用多时间框架。 我不知道如何将这些 arguments 用于安全 function。 问题显示在最后 3 行中,“不能使用可变变量作为 request.security 函数的参数”

ATRTimeframe = input.timeframe(title="ATR Timeframe", defval="")
ATRPeriod = input.int(10, "ATR Period")
ATRMultiplier = input.float(3, "ATR Multiplier", step=.1)

ATR = ta.atr(ATRPeriod)
Stop = ATRMultiplier*ATR

var ATRTrailingStop = 0.0
ATRTrailingStop := if close>ATRTrailingStop[1] and close[1]>ATRTrailingStop[1]
    math.max(ATRTrailingStop[1], close-Stop)
else if close<ATRTrailingStop[1] and close[1]<ATRTrailingStop[1]
    math.min(ATRTrailingStop[1], close+Stop)
else if close>ATRTrailingStop[1]
    close-Stop 
else 
    close+Stop

var Position = 0.0
Position := if close[1]<ATRTrailingStop[1] and close>ATRTrailingStop[1]
    1
else if close[1]>ATRTrailingStop[1] and close<ATRTrailingStop[1]
    -1
else
    Position[1]

ATRSecure = request.security(syminfo.tickerid, ATRTimeframe, ATRTrailingStop, gaps=barmerge.gaps_off)

PlotColor = Position == -1 ? color.red: Position == 1 ? color.green : color.blue
plot(ATRSecure, color=PlotColor, linewidth=input(1, "Line Width", group=atrGroup), title="ATR Trailing Stop")

您可以在request.security()中使用可变变量,但前提是您将它们包装到 function 中。 Security性从当前交易品种的上下文中提取变量并在不同的交易品种/时间框架上计算它,因此它要求您将所有将变量更改为 function 并请求 function 代替。 以下是您的情况:

<...>
atrStop() =>
    var ATRTrailingStop = 0.0
    ATRTrailingStop := if close>ATRTrailingStop[1] and close[1]>ATRTrailingStop[1]
        math.max(ATRTrailingStop[1], close-Stop)
    else if close<ATRTrailingStop[1] and close[1]<ATRTrailingStop[1]
        math.min(ATRTrailingStop[1], close+Stop)
    else if close>ATRTrailingStop[1]
        close-Stop 
    else 
        close+Stop

ATRTrailingStop = atrStop()
var Position = 0.0
Position := if close[1]<ATRTrailingStop[1] and close>ATRTrailingStop[1]
    1
else if close[1]>ATRTrailingStop[1] and close<ATRTrailingStop[1]
    -1
else
    Position[1]

ATRSecure = request.security(syminfo.tickerid, ATRTimeframe, atrStop(), gaps=barmerge.gaps_off)
<...>

首先,我在 CFB 认识你吗? 哈哈。 其次,这里有一些链接可以回答您的问题: TradingView 不能使用可变变量作为安全参数 function 不能使用可变变量作为安全参数 function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM