rohan sawant
rohan sawant

Reputation: 121

Trading View Cannot call 'security' or 'financial' inside 'if' or 'for'

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

Answers (1)

Bjorgum
Bjorgum

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

Related Questions