From 6b05ddbd68e57461c8116f9a26e0f709d1e22fb4 Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Sun, 23 Dec 2018 12:23:40 +0700 Subject: [PATCH] Strategy: Use 0th ticker by default in buy_at* functions --- src/naiback/strategy/strategy.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/naiback/strategy/strategy.py b/src/naiback/strategy/strategy.py index 2812d77..5b35e41 100644 --- a/src/naiback/strategy/strategy.py +++ b/src/naiback/strategy/strategy.py @@ -69,6 +69,7 @@ class Strategy: for bars in self.all_bars: self._synchronize_bars(bars, all_dates) + bars.index = range(0, len(bars.close)) def get_bars(self, ticker): return self._get_bars(ticker) @@ -100,6 +101,7 @@ class Strategy: volume = bars.volume[bar_pos] bars.insert_bar(bar_pos, open_, high, low, close, volume, dt) + bar_pos += 1 def _combine_dates(self): dates = set() @@ -141,21 +143,27 @@ class Strategy: else: return None - def buy_at_close(self, bar, ticker): + def buy_at_close(self, bar, ticker=None): + if ticker is None: + ticker = 0 if isinstance(ticker, int): ticker = self.all_bars[ticker].ticker bars = self._get_bars(ticker) self.broker.set_timestamp(bars.timestamp[bar]) return self.broker.add_position(ticker, bars.close[bar], self.trade_size, bar) - def short_at_open(self, bar, ticker): + def short_at_open(self, bar, ticker=None): + if ticker is None: + ticker = 0 if isinstance(ticker, int): ticker = self.all_bars[ticker].ticker bars = self._get_bars(ticker) self.broker.set_timestamp(bars.timestamp[bar]) return self.broker.add_position(ticker, bars.open[bar], -self.trade_size, bar) - def short_at_limit(self, bar, price, ticker): + def short_at_limit(self, bar, price, ticker=0): + if ticker is None: + ticker = 0 if isinstance(ticker, int): ticker = self.all_bars[ticker].ticker bars = self._get_bars(ticker) @@ -168,7 +176,9 @@ class Strategy: else: return None - def short_at_stop(self, bar, price, ticker): + def short_at_stop(self, bar, price, ticker=None): + if ticker is None: + ticker = 0 if isinstance(ticker, int): ticker = self.all_bars[ticker].ticker bars = self._get_bars(ticker) @@ -181,7 +191,9 @@ class Strategy: else: return None - def short_at_close(self, bar, ticker): + def short_at_close(self, bar, ticker=None): + if ticker is None: + ticker = 0 if isinstance(ticker, int): ticker = self.all_bars[ticker].ticker bars = self._get_bars(ticker)