4 changed files with 72 additions and 16 deletions
@ -0,0 +1,57 @@ |
|||
"""SMA indicator, for testing purposes.""" |
|||
from calendar import c |
|||
from re import sub |
|||
import pandas as pd # type: ignore |
|||
|
|||
from ..interfaces import Indicator |
|||
|
|||
|
|||
class SMA(Indicator): |
|||
"""Replay the value.""" |
|||
|
|||
def __init__(self, windowSize: int): |
|||
"""Save the value.""" |
|||
super().__init__() |
|||
self.windowSize = windowSize |
|||
|
|||
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 |
|||
data3 = data2["close"] |
|||
|
|||
# lastND.rolling(window=2).mean() |
|||
sma = data3.rolling(window=self.windowSize).mean() |
|||
|
|||
res = {} |
|||
for column in sma.columns: |
|||
# pour chaque type d'action |
|||
# print(column) |
|||
if len(sma.index) > 1: |
|||
# print(last2D[column].get(last2D.index[-1]), last2D[column].get(last2D.index[-2])) |
|||
|
|||
ultieme = sma[column].get(sma.index[-1]) |
|||
penultieme = sma[column].get(sma.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) |
Loading…
Reference in new issue