"""Dumb indicator, for testing purposes.""" from calendar import c from re import sub import pandas as pd # type: ignore from ..interfaces import Indicator class Slopy(Indicator): """Replay the value.""" def __init__(self): """Save the value.""" super().__init__() def __call__(self, data: pd.DataFrame) -> pd.Series: """Return a dataframe of valuation of each stock from the input data. Args: data (DataFrame): Time-Stock valuated candlestick data. For each time and each stock give (high, low, open, close). Returns: DataFrame: Stock valuated float. For each stock give -1 if realy bad and +1 if realy good. """ # only use date as index => actions become columns data2 = data.unstack() # select high prices for each action highData = data2["close"] # select only last two days lastND = highData.last("2D") # lastND.rolling(window=2).mean() res = {} for column in lastND.columns: # pour chaque type d'action # print(column) if len(lastND.index) > 1: # print(last2D[column].get(last2D.index[-1]), last2D[column].get(last2D.index[-2])) ultieme = lastND[column].get(lastND.index[-1]) penultieme = lastND[column].get(lastND.index[-2]) if ultieme / penultieme > 1.05: res[column] = 1 elif ultieme / penultieme < 0.95: res[column] = -1 else: res[column] = 0 else: res[column] = 1 return pd.Series(res)