Skip to content

Commit 773a85f

Browse files
committed
REF: Use variable type annotation over type comments
Fixes: #161 Closes: #164 Thanks @markwh1te. Squashed commit of the following: commit 99ef271 Author: Kernc <kerncece@gmail.com> Date: Thu Nov 12 21:22:30 2020 +0100 Convert some additional type comments commit a2b718b Author: Kernc <kerncece@gmail.com> Date: Thu Nov 12 21:19:15 2020 +0100 Revert unrelated changes commit f69d99b Merge: b2ff83d 20a76c7 Author: Kernc <kerncece@gmail.com> Date: Thu Nov 12 21:05:12 2020 +0100 Merge branch 'master' into HEAD commit b2ff83d Author: MarkWh1te <iamwh1temark@outlook.com> Date: Thu Oct 29 11:00:23 2020 +0800 use variable annotation issue #161
1 parent 20a76c7 commit 773a85f

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

backtesting/_util.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ class _Data:
9999
def __init__(self, df: pd.DataFrame):
100100
self.__df = df
101101
self.__i = len(df)
102-
self.__pip = None # type: Optional[float]
103-
self.__cache = {} # type: Dict[str, _Array]
104-
self.__arrays = {} # type: Dict[str, _Array]
102+
self.__pip: Optional[float] = None
103+
self.__cache: Dict[str, _Array] = {}
104+
self.__arrays: Dict[str, _Array] = {}
105105
self._update()
106106

107107
def __getitem__(self, item):

backtesting/backtesting.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ class Strategy(metaclass=ABCMeta):
4949
"""
5050
def __init__(self, broker, data, params):
5151
self._indicators = []
52-
self._broker = broker # type: _Broker
53-
self._data = data # type: _Data
52+
self._broker: _Broker = broker
53+
self._data: _Data = data
5454
self._params = self._check_params(params)
5555

5656
def __repr__(self):
@@ -506,11 +506,11 @@ def __init__(self, broker: '_Broker', size: int, entry_price: float, entry_bar):
506506
self.__broker = broker
507507
self.__size = size
508508
self.__entry_price = entry_price
509-
self.__exit_price = None # type: Optional[float]
510-
self.__entry_bar = entry_bar # type: int
511-
self.__exit_bar = None # type: Optional[int]
512-
self.__sl_order = None # type: Optional[Order]
513-
self.__tp_order = None # type: Optional[Order]
509+
self.__exit_price: Optional[float] = None
510+
self.__entry_bar: int = entry_bar
511+
self.__exit_bar: Optional[int] = None
512+
self.__sl_order: Optional[Order] = None
513+
self.__tp_order: Optional[Order] = None
514514

515515
def __repr__(self):
516516
return '<Trade size={} time={}-{} price={}-{} pl={:.0f}>'.format(
@@ -648,7 +648,7 @@ def __set_contingent(self, type, price):
648648
assert type in ('sl', 'tp')
649649
assert price is None or 0 < price < np.inf
650650
attr = '_{}__{}_order'.format(self.__class__.__qualname__, type)
651-
order = getattr(self, attr) # type: Order
651+
order: Order = getattr(self, attr)
652652
if order:
653653
order.cancel()
654654
if price:
@@ -663,7 +663,7 @@ def __init__(self, *, data, cash, commission, margin,
663663
assert 0 < cash, "cash shosuld be >0, is {}".format(cash)
664664
assert 0 <= commission < .1, "commission should be between 0-10%, is {}".format(commission)
665665
assert 0 < margin <= 1, "margin should be between 0 and 1, is {}".format(margin)
666-
self._data = data # type: _Data
666+
self._data: _Data = data
667667
self._cash = cash
668668
self._commission = commission
669669
self._leverage = 1 / margin
@@ -672,10 +672,10 @@ def __init__(self, *, data, cash, commission, margin,
672672
self._exclusive_orders = exclusive_orders
673673

674674
self._equity = np.tile(np.nan, len(index))
675-
self.orders = [] # type: List[Order]
676-
self.trades = [] # type: List[Trade]
675+
self.orders: List[Order] = []
676+
self.trades: List[Trade] = []
677677
self.position = Position(self)
678-
self.closed_trades = [] # type: List[Trade]
678+
self.closed_trades: List[Trade] = []
679679

680680
def __repr__(self):
681681
return '<Broker: {:.0f}{:+.1f} ({} trades)>'.format(
@@ -1072,7 +1072,7 @@ def __init__(self,
10721072
'but `pd.DateTimeIndex` is advised.',
10731073
stacklevel=2)
10741074

1075-
self._data = data # type: pd.DataFrame
1075+
self._data: pd.DataFrame = data
10761076
self._broker = partial(
10771077
_Broker, cash=cash, commission=commission, margin=margin,
10781078
trade_on_close=trade_on_close, hedging=hedging,
@@ -1119,8 +1119,8 @@ def run(self, **kwargs) -> pd.Series:
11191119
dtype: object
11201120
"""
11211121
data = _Data(self._data.copy(deep=False))
1122-
broker = self._broker(data=data) # type: _Broker
1123-
strategy = self._strategy(broker, data, kwargs) # type: Strategy
1122+
broker: _Broker = self._broker(data=data)
1123+
strategy: Strategy = self._strategy(broker, data, kwargs)
11241124

11251125
strategy.init()
11261126
data._update() # Strategy.init might have changed/added to data.df
@@ -1328,7 +1328,7 @@ def _mp_task(backtest_uuid, batch_index):
13281328
for stats in (bt.run(**params)
13291329
for params in param_batches[batch_index])]
13301330

1331-
_mp_backtests = {} # type: Dict[float, Tuple[Backtest, List, Callable]]
1331+
_mp_backtests: Dict[float, Tuple['Backtest', List, Callable]] = {}
13321332

13331333
@staticmethod
13341334
def _compute_drawdown_duration_peaks(dd: pd.Series):

0 commit comments

Comments
 (0)