I am defining a function that contains another function inside:
find_badTicks:{ [tab;sec] // dummy function, for debug..
Ndays: 10i ;
dates: select distinct date from tab where sym = sec ;
closures: select last price by date from tab where sym = sec ;
returns: 1 _ select ( (price)-(prev price) )%(prev price) from closures ;
stdevs: {[x;y] sd[ (Ndays-1)#y _ x ] } [ (returns)[;`price] ] each til ( (1 - (Ndays-1)) + count (returns)[;`price] ) ;
:tab
}
If I compile the function it works. If I run the lines one by one it works. However, if I try to call the function I get an error:
q)testTab: find_badTicks [testTab ; `ENI.IM.Equity] ;
'Ndays
If I remove Ndays in the nested function, writing explicitly 10, it works. Si I guess it's a problem of local variable visibility inside nested functions, in function execution: i.e. the nested function cannot see Ndays, which is a local variable of the function find_badTicks. Do you know how I can make Ndays visible inside inner functions? Thanks Marco
price] ] each til ( (1 - (Ndays-1)) + count (returns)[;
price] ) ; – Gyrfalcon