mirror of
https://github.com/wassname/catalyst.git
synced 2026-08-15 12:15:22 +08:00
SimulatedLite
This commit is contained in:
+23
-1
@@ -121,7 +121,6 @@ class SimulatedTrading(object):
|
|||||||
# exit status flag
|
# exit status flag
|
||||||
self.success = False
|
self.success = False
|
||||||
|
|
||||||
|
|
||||||
def simulate(self, blocking=True, send_sighup=False):
|
def simulate(self, blocking=True, send_sighup=False):
|
||||||
|
|
||||||
# for non-blocking,
|
# for non-blocking,
|
||||||
@@ -356,3 +355,26 @@ class SimulatedTrading(object):
|
|||||||
#-------------------
|
#-------------------
|
||||||
|
|
||||||
return sim
|
return sim
|
||||||
|
|
||||||
|
class SimulatedTradingLite(object):
|
||||||
|
"""
|
||||||
|
SimulatedTrading without multiprocess and without zmq.
|
||||||
|
Useful for profiling the core logic and for rapid testing
|
||||||
|
of new features.
|
||||||
|
"""
|
||||||
|
def __init__(self,
|
||||||
|
sources,
|
||||||
|
transforms,
|
||||||
|
algorithm,
|
||||||
|
environment,
|
||||||
|
style):
|
||||||
|
|
||||||
|
self.date_sorted = date_sorted_sources(*sources)
|
||||||
|
self.transforms = transforms
|
||||||
|
# Formerly merged_transforms.
|
||||||
|
self.with_tnfms = sequential_transforms(self.date_sorted, *self.transforms)
|
||||||
|
self.trading_client = tsc(algorithm, environment, style)
|
||||||
|
self.gen = self.trading_client.simulate(self.with_tnfms)
|
||||||
|
|
||||||
|
def get_results(self):
|
||||||
|
return self.gen
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ class Timeout(Exception):
|
|||||||
def __init__(self, frame, message=''):
|
def __init__(self, frame, message=''):
|
||||||
self.frame = frame
|
self.frame = frame
|
||||||
self.message = message
|
self.message = message
|
||||||
|
|
||||||
|
# TODO: fix code replication here.
|
||||||
|
|
||||||
class timeout(object):
|
class timeout(object):
|
||||||
"""
|
"""
|
||||||
@@ -33,7 +35,7 @@ class timeout(object):
|
|||||||
|
|
||||||
@wraps(fn)
|
@wraps(fn)
|
||||||
def call_fn_with_timeout(*args, **kwargs):
|
def call_fn_with_timeout(*args, **kwargs):
|
||||||
# Set the alarm.
|
# Set the alarm, saving any handler that existed previously.
|
||||||
signal.signal(signal.SIGALRM, self.handler)
|
signal.signal(signal.SIGALRM, self.handler)
|
||||||
signal.setitimer(signal.ITIMER_REAL, self.seconds, 0)
|
signal.setitimer(signal.ITIMER_REAL, self.seconds, 0)
|
||||||
try:
|
try:
|
||||||
@@ -45,7 +47,7 @@ class timeout(object):
|
|||||||
# call to fn takes too long.
|
# call to fn takes too long.
|
||||||
finally:
|
finally:
|
||||||
signal.setitimer(signal.ITIMER_REAL, 0, 0)
|
signal.setitimer(signal.ITIMER_REAL, 0, 0)
|
||||||
signal.signal(signal.SIGALRM, signal.SIG_DFL)
|
signal.signal(signal.SIGALRM, self.prior_handler)
|
||||||
|
|
||||||
# Return the value of fn if it finished before the alarm. This
|
# Return the value of fn if it finished before the alarm. This
|
||||||
# won't execute if the Timeout was raised.
|
# won't execute if the Timeout was raised.
|
||||||
|
|||||||
Reference in New Issue
Block a user