mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-26 13:18:31 +08:00
created simulator, re-wrote tests. tests are failing, but without errors
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user