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:
fawce
2012-02-14 00:35:26 -05:00
parent 21afa42f3a
commit 2aecfc0010
7 changed files with 277 additions and 139 deletions
+22 -20
View File
@@ -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