Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

import qsim.transforms.base as base 

 

class MovingAverage(base.Transform): 

 

    def __init__(self, feed, props, result_address): 

        base.Transform.__init__(self, feed, props, result_address) 

        self.events = [] 

 

        self.window = datetime.timedelta(days           = self.config.get_integer('days'), 

                                        seconds         = self.config.get_integer('seconds'), 

                                        microseconds    = self.config.get_integer('microseconds'), 

                                        milliseconds    = self.config.get_integer('milliseconds'), 

                                        minutes         = self.config.get_integer('minutes'), 

                                        hours           = self.config.get_integer('hours'), 

                                        weeks           = self.config.get_integer('weeks')) 

 

 

 

 

    def transform(self, event): 

        self.events.append(event) 

 

        #filter the event list to the window length. 

        self.events = [x for x in self.events if (qutil.parse_date(x['dt']) - qutil.parse_date(event['dt'])) <= self.window] 

 

        if(len(self.events) == 0): 

            return 0.0 

 

        total = 0.0 

        for event in self.events: 

            total += event['price'] 

 

        self.average = total/len(self.events) 

 

        self.state['value'] = self.average 

 

        return self.state