ttrpy.trend.tema
module
Source code
# Author: joelowj
# License: Apache License, Version 2.0
import pandas as pd
from ttrpy.trend.ema import ema
def tema(df, price, tema, n):
"""
Triple Exponential Moving Average (TEMA) was designed to smooth price
fluctuations and filter out volatility, thereby making it easier to
dentify trends without the lag associated with moving averages.
The TEMA equation is a composite of a single exponential moving average,
a double exponential moving average, and a triple exponential moving average.
TEMA = 3 * EMA(p, n) - 3 * EMA(EMA(p, n), n) + EMA(EMA(EMA(p, n), n), n)
Parameters:
df (pd.DataFrame): DataFrame which contain the asset price.
price (string): the column name of the price of the asset.
tema (string): the column name for the n-day double exponential moving average results.
n (int): the total number of periods.
Returns:
df (pd.DataFrame): Dataframe with n-day double exponential moving average of the asset calculated.
"""
df = ema(df, price, tema + "_ema", n)
df = ema(df[n - 1 :], tema + "_ema", tema + "_ema_2", n)
df = ema(df[n - 1 :], tema + "_ema_2", tema + "_ema_3", n)
df[tema] = (
3 * df[tema + "_ema"] - 3 * df[tema + "_ema_2"] + df[tema + "_ema_3"]
)
df = df.dropna().reset_index(drop=True)
df.drop(
[tema + "_ema", tema + "_ema_2", tema + "_ema_3"], axis=1, inplace=True
)
return df
Functions
def tema(df, price, tema, n)
-
Triple Exponential Moving Average (TEMA) was designed to smooth price fluctuations and filter out volatility, thereby making it easier to dentify trends without the lag associated with moving averages.
The TEMA equation is a composite of a single exponential moving average, a double exponential moving average, and a triple exponential moving average.
TEMA = 3 * EMA(p, n) - 3 * EMA(EMA(p, n), n) + EMA(EMA(EMA(p, n), n), n)
Parameters
df
:pd.DataFrame
- DataFrame which contain the asset price.
price
:string
- the column name of the price of the asset.
tema()
:string
- the column name for the n-day double exponential moving average results.
n
:int
- the total number of periods.
Returns
df
:pd.DataFrame
- Dataframe with n-day double exponential moving average of the asset calculated.
Source code
def tema(df, price, tema, n): """ Triple Exponential Moving Average (TEMA) was designed to smooth price fluctuations and filter out volatility, thereby making it easier to dentify trends without the lag associated with moving averages. The TEMA equation is a composite of a single exponential moving average, a double exponential moving average, and a triple exponential moving average. TEMA = 3 * EMA(p, n) - 3 * EMA(EMA(p, n), n) + EMA(EMA(EMA(p, n), n), n) Parameters: df (pd.DataFrame): DataFrame which contain the asset price. price (string): the column name of the price of the asset. tema (string): the column name for the n-day double exponential moving average results. n (int): the total number of periods. Returns: df (pd.DataFrame): Dataframe with n-day double exponential moving average of the asset calculated. """ df = ema(df, price, tema + "_ema", n) df = ema(df[n - 1 :], tema + "_ema", tema + "_ema_2", n) df = ema(df[n - 1 :], tema + "_ema_2", tema + "_ema_3", n) df[tema] = ( 3 * df[tema + "_ema"] - 3 * df[tema + "_ema_2"] + df[tema + "_ema_3"] ) df = df.dropna().reset_index(drop=True) df.drop( [tema + "_ema", tema + "_ema_2", tema + "_ema_3"], axis=1, inplace=True ) return df