mirror of
https://github.com/wassname/catalyst.git
synced 2026-08-08 11:16:58 +08:00
send sockets have zero linger, sync object now serves as heartbeat, components die on error, all components error on heartbeat timeout
This commit is contained in:
@@ -6,6 +6,7 @@ TODO: add trailing stop
|
||||
"""
|
||||
import datetime
|
||||
from qsim.core import BaseTransform
|
||||
import qsim.util as qutil
|
||||
|
||||
class MovingAverage(BaseTransform):
|
||||
"""
|
||||
@@ -15,31 +16,32 @@ class MovingAverage(BaseTransform):
|
||||
|
||||
def __init__(self, name, days):
|
||||
BaseTransform.__init__(self, name)
|
||||
self.events = []
|
||||
|
||||
self.window = datetime.timedelta(days = days)
|
||||
|
||||
|
||||
|
||||
self.events = []
|
||||
self.current_total = 0
|
||||
self.window = datetime.timedelta(days = days)
|
||||
|
||||
def transform(self, event):
|
||||
"""Update the moving average with the latest data point."""
|
||||
|
||||
#self.events.append(event)
|
||||
self.events.append(event)
|
||||
self.current_total += event['price']
|
||||
event_date = qutil.parse_date(event['dt'])
|
||||
|
||||
#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]
|
||||
index = 0
|
||||
for cur_event in self.events:
|
||||
cur_date = qutil.parse_date(cur_event['dt'])
|
||||
if(cur_date - event_date):
|
||||
self.events.pop(index)
|
||||
self.current_total -= cur_event['price']
|
||||
index += 1
|
||||
else:
|
||||
break
|
||||
|
||||
if(len(self.events) == 0):
|
||||
return 0.0
|
||||
|
||||
self.average = self.current_total/len(self.events)
|
||||
|
||||
#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
|
||||
self.state['value'] = 10
|
||||
self.state['value'] = self.average
|
||||
return self.state
|
||||
|
||||
Reference in New Issue
Block a user