Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,25 @@
|
|||
let sma (n, s, q) x =
|
||||
let l = Queue.length q and s = s +. x in
|
||||
Queue.push x q;
|
||||
if l < n then
|
||||
(n, s, q), s /. float (l + 1)
|
||||
else (
|
||||
let s = s -. Queue.pop q in
|
||||
(n, s, q), s /. float l
|
||||
)
|
||||
|
||||
let _ =
|
||||
let periodLst = [ 3; 5 ] in
|
||||
let series = [ 1.; 2.; 3.; 4.; 5.; 5.; 4.; 3.; 2.; 1. ] in
|
||||
|
||||
List.iter (fun d ->
|
||||
Printf.printf "SIMPLE MOVING AVERAGE: PERIOD = %d\n" d;
|
||||
ignore (
|
||||
List.fold_left (fun o x ->
|
||||
let o, m = sma o x in
|
||||
Printf.printf "Next number = %-2g, SMA = %g\n" x m;
|
||||
o
|
||||
) (d, 0., Queue.create ()) series;
|
||||
);
|
||||
print_newline ();
|
||||
) periodLst
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
let sma_create period =
|
||||
let q = Queue.create ()
|
||||
and sum = ref 0.0 in
|
||||
fun x ->
|
||||
sum := !sum +. x;
|
||||
Queue.push x q;
|
||||
if Queue.length q > period then
|
||||
sum := !sum -. Queue.pop q;
|
||||
!sum /. float (Queue.length q)
|
||||
|
||||
let () =
|
||||
let periodLst = [ 3; 5 ] in
|
||||
let series = [ 1.; 2.; 3.; 4.; 5.; 5.; 4.; 3.; 2.; 1. ] in
|
||||
|
||||
List.iter (fun d ->
|
||||
Printf.printf "SIMPLE MOVING AVERAGE: PERIOD = %d\n" d;
|
||||
let sma = sma_create d in
|
||||
List.iter (fun x ->
|
||||
Printf.printf "Next number = %-2g, SMA = %g\n" x (sma x);
|
||||
) series;
|
||||
print_newline ();
|
||||
) periodLst
|
||||
Loading…
Add table
Add a link
Reference in a new issue