Reputation: 121
How do i recode this? How to fix the error?
var float close_lock = na
var float open_lock = na
var float high_lock = na
var float low_lock = na
var bool normal_ticker_check = na
normal_ticker_check := syminfo.type != 'spread'
if (normal_ticker_check)
close_lock := security(syminfo.prefix+":"+syminfo.ticker , timeframe.period , close ,barmerge.gaps_off, barmerge.lookahead_on)
open_lock := security(syminfo.prefix+":"+syminfo.ticker , timeframe.period , open ,barmerge.gaps_off, barmerge.lookahead_on)
high_lock := security(syminfo.prefix+":"+syminfo.ticker , timeframe.period , high ,barmerge.gaps_off, barmerge.lookahead_on)
low_lock := security(syminfo.prefix+":"+syminfo.ticker , timeframe.period , low ,barmerge.gaps_off, barmerge.lookahead_on)
else
close_lock := close
open_lock := open
high_lock := high
low_lock := low
ERROR: Cannot call 'security' or 'financial' inside 'if' or 'for'
Upvotes: 0
Views: 288
Reputation: 2310
How about rendering your security call in the global scope, then assigning as you have? I used a tuple here to reduce your occurrences of the security call to 1 as well (best practice to use as little as possible)
var float close_lock = na
var float open_lock = na
var float high_lock = na
var float low_lock = na
var bool normal_ticker_check = na
normal_ticker_check := syminfo.type != 'spread'
[o, h, l, c] = security(syminfo.prefix+":"+syminfo.ticker , timeframe.period , [open, high, low, close] ,barmerge.gaps_off, barmerge.lookahead_on)
if (normal_ticker_check)
close_lock := c
open_lock := o
high_lock := h
low_lock := l
else
close_lock := close
open_lock := open
high_lock := high
low_lock := low
Upvotes: 0