@classmethod
def _get_tema(cls, df, column=None, windows=None):
    """ Another implementation for triple ema

        Check the algorithm described below:
        https://www.forextraders.com/forex-education/forex-technical-analysis/triple-exponential-moving-average-the-tema-indicator/
        :param df: data frame
        :param column: column to calculate ema
        :param windows: window of the calculation
        :return: result series
        """
    if column is None and windows is None:
        column_name = 'tema'
    else:
        column_name = '{}_{}_tema'.format(column, windows)
    if column is None:
        column = 'close'
    if windows is None:
        windows = cls.TEMA_EMA_WINDOW
    window = cls.get_only_one_positive_int(windows)
    single = '{c}_{w}_ema'.format(c=column, w=window)
    double = '{c}_{w}_ema_{w}_ema'.format(c=column, w=window)
    triple = '{c}_{w}_ema_{w}_ema_{w}_ema'.format(c=column, w=window)
    df[column_name] = 3 * df[single] - 3 * df[double] + df[triple]
    cls._drop_columns(df, [single, double, triple])
    return df[column_name]
