You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.2 KiB

"""+1 when going up, -1 when going down, 0 when not moving enough."""
import pandas as pd # type: ignore
from ..interfaces import Indicator
class Slopy(Indicator):
"""Replay the value."""
def __init__(self):
"""Save the value."""
def __call__(self, data: pd.DataFrame) -> pd.Series:
"""Return a dataframe of valuation of each stock from the input data.
data (DataFrame): Time-Stock valuated candlestick data.
For each time and each stock give (high, low, open, close).
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"]
coeffs = highData.diff().fillna(0)
res = {}
for column in coeffs.columns:
# pour chaque type d'action
trust = coeffs[column].get(coeffs.index[-1])
# on clamp l'indicateur entre [-1, 1]
trust = min(trust, 1.0)
trust = max(trust, -1.0)
res[column] = trust
return pd.Series(res)