Browse Source

Strategy: Use 0th ticker by default in buy_at* functions

master
Denis Tereshkin 7 years ago
parent
commit
6b05ddbd68
  1. 22
      src/naiback/strategy/strategy.py

22
src/naiback/strategy/strategy.py

@ -69,6 +69,7 @@ class Strategy:
for bars in self.all_bars: for bars in self.all_bars:
self._synchronize_bars(bars, all_dates) self._synchronize_bars(bars, all_dates)
bars.index = range(0, len(bars.close))
def get_bars(self, ticker): def get_bars(self, ticker):
return self._get_bars(ticker) return self._get_bars(ticker)
@ -100,6 +101,7 @@ class Strategy:
volume = bars.volume[bar_pos] volume = bars.volume[bar_pos]
bars.insert_bar(bar_pos, open_, high, low, close, volume, dt) bars.insert_bar(bar_pos, open_, high, low, close, volume, dt)
bar_pos += 1
def _combine_dates(self): def _combine_dates(self):
dates = set() dates = set()
@ -141,21 +143,27 @@ class Strategy:
else: else:
return None 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): if isinstance(ticker, int):
ticker = self.all_bars[ticker].ticker ticker = self.all_bars[ticker].ticker
bars = self._get_bars(ticker) bars = self._get_bars(ticker)
self.broker.set_timestamp(bars.timestamp[bar]) self.broker.set_timestamp(bars.timestamp[bar])
return self.broker.add_position(ticker, bars.close[bar], self.trade_size, 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): if isinstance(ticker, int):
ticker = self.all_bars[ticker].ticker ticker = self.all_bars[ticker].ticker
bars = self._get_bars(ticker) bars = self._get_bars(ticker)
self.broker.set_timestamp(bars.timestamp[bar]) self.broker.set_timestamp(bars.timestamp[bar])
return self.broker.add_position(ticker, bars.open[bar], -self.trade_size, 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): if isinstance(ticker, int):
ticker = self.all_bars[ticker].ticker ticker = self.all_bars[ticker].ticker
bars = self._get_bars(ticker) bars = self._get_bars(ticker)
@ -168,7 +176,9 @@ class Strategy:
else: else:
return None 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): if isinstance(ticker, int):
ticker = self.all_bars[ticker].ticker ticker = self.all_bars[ticker].ticker
bars = self._get_bars(ticker) bars = self._get_bars(ticker)
@ -181,7 +191,9 @@ class Strategy:
else: else:
return None 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): if isinstance(ticker, int):
ticker = self.all_bars[ticker].ticker ticker = self.all_bars[ticker].ticker
bars = self._get_bars(ticker) bars = self._get_bars(ticker)

Loading…
Cancel
Save