18 lines
406 B
Text
18 lines
406 B
Text
procedure main(A)
|
|
sma := buildSMA(3) # Use better name than "I".
|
|
every write(sma(!A))
|
|
end
|
|
|
|
procedure buildSMA(P)
|
|
local stream
|
|
c := create {
|
|
stream := []
|
|
while n := (avg@&source)[1] do {
|
|
put(stream, n)
|
|
if *stream > P then pop(stream)
|
|
every (avg := 0.0) +:= !stream
|
|
avg := avg/*stream
|
|
}
|
|
}
|
|
return (@c, c)
|
|
end
|