BUG: trying to round none / string(tag) / Boolean (is_contingent) - #995
BUG: trying to round none / string(tag) / Boolean (is_contingent)#995ajwinkworth wants to merge 1 commit into
Conversation
| setattr(self, f'_{self.__class__.__qualname__}__{k}', v) | ||
| return self | ||
|
|
||
|
|
| ('limit', round(self.__limit_price,5) if self.__limit_price is not None else None), | ||
| ('stop', round(self.__stop_price,5) if self.__stop_price is not None else None), | ||
| ('sl', round(self.__sl_price,5) if self.__sl_price is not None else None), | ||
| ('tp', round(self.__tp_price,0) if self.__tp_price is not None else None), |
There was a problem hiding this comment.
I'd prefer this round(value, 5) if value is not None else '' be done once in the comprehension value expression (as before).
Also don't see a problem with round(is_contingent, 5) since the boolean rounds to either 1 or 0.
There was a problem hiding this comment.
How would you prefer to deal with string tags? Take them out of the comprehension and then append them separately?
There was a problem hiding this comment.
After some further investigation it could be:
def __repr__(self):
return '<Order {}>'.format(', '.join(f'{param}={round(value, 5) if isinstance(value, SupportsRound) else value}'
for param, value in (
('size', self.__size),
('limit', self.__limit_price),
('stop', self.__stop_price),
('sl', self.__sl_price),
('tp', self.__tp_price),
('contingent', self.is_contingent),
('tag', self.__tag),
) if value is not None))Which I haven't tested yet. Would just need an additional import from typing for SupportsRound.
There was a problem hiding this comment.
Something like that. Can also use isinstance(value, Number) like we do in some other places.
There was a problem hiding this comment.
def __repr__(self):
return '<Order {}>'.format(', '.join(f'{param}={round(value, 5) if isinstance(value, float) else value}'
for param, value in (
('size', self.__size),
('limit', self.__limit_price),
('stop', self.__stop_price),
('sl', self.__sl_price),
('tp', self.__tp_price),
('contingent', self.is_contingent),
('tag', self.__tag),
) if value is not None))428c361 to
0ce6cab
Compare
|
Thanks and apologies. Already fixed in 8dd1e36. |
BUG: Fix attempting to round none / string(tag) / Boolean (is_contingent) in backtesting.py:408
Optional float values(limit, stop, sl, tp) can be float | None. Testing for none to not pass it to round()
Boolean values (is_contingent) shouldnt be rounded.
Str values (tag) shouldn't be rounded.
See:
A fix for Comment