created simulator, re-wrote tests. tests are failing, but without errors

This commit is contained in:
fawce
2012-02-11 23:20:45 -05:00
parent 1804fe7c6c
commit cf31f08af1
8 changed files with 392 additions and 529 deletions
+15 -21
View File
@@ -7,25 +7,19 @@ TODO: add trailing stop
import datetime
import qsim.util as qutil
from qsim.transforms.core import BaseTransform
from qsim.core import BaseTransform
class MovingAverage(BaseTransform):
"""
Calculate a unweighted moving average for props['sid'] security
TODO: add sid filter.
TODO: add sid -> mvavg dict.
"""
def __init__(self, feed, props, result_address):
BaseTransform.__init__(self, feed, props, result_address)
def __init__(self, name, days):
BaseTransform.__init__(self, name)
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'))
self.window = datetime.timedelta(days = days)
@@ -33,21 +27,21 @@ class MovingAverage(BaseTransform):
def transform(self, event):
"""Update the moving average with the latest data point."""
self.events.append(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]
#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
#if(len(self.events) == 0):
# return 0.0
total = 0.0
for event in self.events:
total += event['price']
#total = 0.0
#for event in self.events:
# total += event['price']
self.average = total/len(self.events)
self.state['value'] = self.average
#self.average = total/len(self.events)
#self.state['value'] = self.average
self.stat['value'] = 10
return self.state