mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-13 17:42:42 +08:00
incorporating feedback from @richafrank
This commit is contained in:
@@ -274,8 +274,8 @@ def uses_ufunc(data, *args, **kwargs):
|
||||
|
||||
|
||||
@batch_transform
|
||||
def price_multiple(data, multiplier, keyarg=1):
|
||||
return data.price * multiplier * keyarg
|
||||
def price_multiple(data, multiplier, extra_arg=1):
|
||||
return data.price * multiplier * extra_arg
|
||||
|
||||
|
||||
class BatchTransformAlgorithm(TradingAlgorithm):
|
||||
@@ -383,24 +383,24 @@ class BatchTransformAlgorithm(TradingAlgorithm):
|
||||
|
||||
# check that calling transforms with the same arguments
|
||||
# is idempotent
|
||||
self.price_multiple.handle_data(data, 1, keyarg=1)
|
||||
self.price_multiple.handle_data(data, 1, extra_arg=1)
|
||||
|
||||
if self.price_multiple.full:
|
||||
pre = len(self.price_multiple.ticks)
|
||||
result1 = self.price_multiple.handle_data(data, 1, keyarg=1)
|
||||
result1 = self.price_multiple.handle_data(data, 1, extra_arg=1)
|
||||
post = len(self.price_multiple.ticks)
|
||||
assert pre == post, "batch transform is appending redundant events"
|
||||
result2 = self.price_multiple.handle_data(data, 1, keyarg=1)
|
||||
result2 = self.price_multiple.handle_data(data, 1, extra_arg=1)
|
||||
assert result1 is result2, "batch transform is not idempotent"
|
||||
|
||||
# check that calling transform with the same data, but
|
||||
# different supplemental arguments results in new
|
||||
# results.
|
||||
result3 = self.price_multiple.handle_data(data, 2, keyarg=1)
|
||||
result3 = self.price_multiple.handle_data(data, 2, extra_arg=1)
|
||||
assert result1 is not result3, \
|
||||
"batch transform is not updating for new args"
|
||||
|
||||
result4 = self.price_multiple.handle_data(data, 1, keyarg=2)
|
||||
result4 = self.price_multiple.handle_data(data, 1, extra_arg=2)
|
||||
assert result1 is not result4,\
|
||||
"batch transform is not updating for new kwargs"
|
||||
|
||||
|
||||
@@ -520,14 +520,18 @@ class BatchTransform(EventWindow):
|
||||
if self.compute_only_full and not self.full:
|
||||
return None
|
||||
|
||||
recalculate_needed = False
|
||||
if self.updated:
|
||||
# Create new pandas panel
|
||||
self.window = self.get_data()
|
||||
# reset our counter for refresh_period
|
||||
self.trading_days_since_update = 0
|
||||
recalculate_needed = True
|
||||
else:
|
||||
recalculate_needed = \
|
||||
args != self.last_args or kwargs != self.last_kwargs
|
||||
|
||||
args_changed = args != self.last_args or kwargs != self.last_kwargs
|
||||
if self.updated or args_changed:
|
||||
if recalculate_needed:
|
||||
self.cached = self.compute_transform_value(
|
||||
self.window,
|
||||
*args,
|
||||
|
||||
Reference in New Issue
Block a user