def EMA(data, period=30, price='close'):
    """
    Exponential Moving Average

    Like all moving average indicators, they are much better suited for trending markets.

    When the market is in a strong and sustained uptrend, the EMA indicator line will also show an uptrend and
    vice-versa for a down trend.

    EMAs are commonly used in conjunction with other indicators to confirm significant market moves and to gauge
    their validity.

    :param pd.DataFrame data: pandas DataFrame with open, high, low, close data
    :param int period: period used for indicator calculation
    :param str price: column used for indicator calculation (default = "close")
    :return pd.Series: with indicator data calculation results
    """
    return data[price].ewm(ignore_na=False, min_periods=period - 1, span=period).mean()