Skip to content

rsi ¤

rsi ¤

rsi(
    series: Series | str = "close",
    window: int = None,
    dataframe: DataFrame | None = None,
    name: str | None = None,
    prefix: str = "",
    inplace: bool = False,
    plot: bool | list[str] = False,
    plot_kwargs: dict | None = None,
    **kwargs
) -> Series | DataFrame

summary

Parameters:

  • series (Series | str, default: 'close' ) –

    description. Defaults to "close".

  • window (int, default: None ) –

    description. Defaults to None.

  • dataframe (DataFrame, default: None ) –

    description. Defaults to None.

  • name (str | None, default: None ) –

    description. Defaults to None.

  • prefix (str, default: '' ) –

    description. Defaults to "".

  • inplace (bool, default: False ) –

    description. Defaults to False.

  • plot (bool | list, default: False ) –

    description. Defaults to False.

  • plot_kwargs (dict | None, default: None ) –

    description. Defaults to None.

Raises:

Returns:

  • Series | DataFrame

    pd.Series | pd.DataFrame: {rsi}

Source code in lettrade/indicator/momentum/rsi.py
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
def rsi(
    series: pd.Series | str = "close",
    window: int = None,
    dataframe: pd.DataFrame | None = None,
    name: str | None = None,
    prefix: str = "",
    inplace: bool = False,
    plot: bool | list[str] = False,
    plot_kwargs: dict | None = None,
    **kwargs,
) -> pd.Series | pd.DataFrame:
    """_summary_

    Args:
        series (pd.Series | str, optional): _description_. Defaults to "close".
        window (int, optional): _description_. Defaults to None.
        dataframe (pd.DataFrame, optional): _description_. Defaults to None.
        name (str | None, optional): _description_. Defaults to None.
        prefix (str, optional): _description_. Defaults to "".
        inplace (bool, optional): _description_. Defaults to False.
        plot (bool | list, optional): _description_. Defaults to False.
        plot_kwargs (dict | None, optional): _description_. Defaults to None.

    Raises:
        RuntimeError: _description_

    Returns:
        pd.Series | pd.DataFrame: {rsi}
    """
    # Validation & init
    if __debug__:
        if window is None or window <= 0:
            raise RuntimeError(f"Window {window} is invalid")
    series = series_init(series=series, dataframe=dataframe, inplace=inplace)

    # Indicator
    i = ta.RSI(series, timeperiod=window, **kwargs)

    if inplace:
        name = name or f"{prefix}rsi"
        dataframe[name] = i

        # Plot
        if plot:
            if plot_kwargs is None:
                plot_kwargs = dict()

            plot_kwargs.update(series=name, name=name)
            plot_kwargs.setdefault("row", 2)
            plot_kwargs.setdefault("row_height", 0.5)

            from lettrade.indicator.plot import IndicatorPlotter
            from lettrade.plot.plotly import plot_line

            IndicatorPlotter(dataframe=dataframe, plotter=plot_line, **plot_kwargs)

        return dataframe

    return i