def __init__(self, ts, windows, std_ns, is_ewm=False, is_min_periods=True): # windows and std_ns can be either np.ndarray or single number self.ts = np.tile(ts, (1, windows.shape[0])) upper, middle, lower = bb_nb(ts, windows, std_ns, is_ewm, is_min_periods) self.upper = TimeSeries(upper) self.middle = TimeSeries(middle) self.lower = TimeSeries(lower)
def from_df(cls, df, labels=['Open', 'High', 'Low', 'Close', 'Volume']): open = TimeSeries(df[labels[0]].astype(float)) high = TimeSeries(df[labels[1]].astype(float)) low = TimeSeries(df[labels[2]].astype(float)) close = TimeSeries(df[labels[3]].astype(float)) if labels[4] in df.columns: volume = TimeSeries(df[labels[4]].astype(float)) else: volume = None return cls(open, high, low, close, volume)
def __init__(self, ts, fast_windows, slow_windows, is_ewm=False, is_min_periods=True): # fast_windows and slow_windows can be either np.ndarray or single number fast, slow = dmac_nb(ts, fast_windows, slow_windows, is_ewm, is_min_periods) self.fast = TimeSeries(fast) self.slow = TimeSeries(slow)
def drawdown(self): return TimeSeries(1 - self.equity / expanding_max_nb(self.equity))
def returns(self): return TimeSeries(pct_change_nb(self.equity))
def equity_in_shares(self): return TimeSeries(self.equity / self.ts)
def equity(self): return TimeSeries(self.cash + self.shares * self.ts)
def __init__(self, ts, windows, is_ewm=False, is_min_periods=True): self.rsi = TimeSeries(rsi_nb(ts, windows, is_ewm, is_min_periods))
def bandwidth(self): """Bandwidth tells how wide the Bollinger Bands are on a normalized basis.""" return TimeSeries((self.upper - self.lower) / self.middle)
def percent_b(self): """Shows where price is in relation to the bands. %b equals 1 at the upper band and 0 at the lower band.""" return TimeSeries((self.ts - self.lower) / (self.upper - self.lower))