1 ! Copyright (C) 2008 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
4 USING: arrays assocs fry kernel grouping math math.statistics math.vectors sequences ;
8 : enumerate ( seq -- newseq )
13 : weighted ( x y a -- z )
14 tuck [ * ] [ 1 swap - * ] 2bi* + ;
19 : first-rest ( seq -- first rest )
20 [ first ] keep 1 tail-slice ;
24 : ema ( seq n -- newseq )
25 a swap first-rest swap '[ [ dup ] 2dip swap rot weighted ] accumulate 2nip ;
27 : sma ( seq n -- newseq )
30 : macd ( seq n1 n2 -- newseq )
31 rot dup ema [ swap ema ] dip v- ;
33 : momentum ( seq n -- newseq )
34 2dup tail-slice -rot swap [ length ] keep
35 [ - neg ] dip swap head-slice v- ;