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.
 
 

65 lines
1.7 KiB

"""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.
"""
#print(data.tail())
#print(data.index.names)
#print(data["date"])
#subdata = data["high"]
# only use date as index => actions become columns
data2 = data.unstack()
# select high prices for each action
highData = data2["high"]
#print(highData.tail())
#print(highData.last("2D"))
# select only last two days
last2D = highData.last("2D")
res = {}
for column in last2D.columns:
#pour chaque type d'action
#print(column)
if len(last2D.index) > 1:
#print(last2D[column].get(last2D.index[-1]), last2D[column].get(last2D.index[-2]))
ultieme = last2D[column].get(last2D.index[-1])
penultieme = last2D[column].get(last2D.index[-2])
if ultieme > penultieme:
res[column] = 1
else:
res[column] = -1
else:
res[column] = 1
return pd.Series(res)