Was trying to add multiple symbols to the algo,but got an error message '

During the algorithm initialization, the following exception has occurred: Trying to dynamically access a method that does not exist throws a TypeError exception. To prevent the exception, ensure each parameter type matches those required by the EMA method. Please checkout the API documentation.
at Initialize in main.py:line 38
TypeError : No method matches given arguments for EMA'Hoping someone could highlight what I did wrong because Im quite new in Python and programming.Thank you,class MovingAverageCrossAlgorithm(QCAlgorithm):

def Initialize(self):
'''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''

self.SetStartDate(2014, 1, 1) #Set Start Date
self.SetEndDate(2016, 1, 1) #Set End Date
self.SetCash(100000) #Set Strategy Cash
# Find more symbols here: http://quantconnect.com/data
# initialize our forex data
# initialize our forex data
for symbol in ForexSymbols:
forex = self.AddForex(symbol)
# create a 15 day exponential moving average
self.fast = self.EMA((forex), 3, Resolution.Minute)

# create a 30 day exponential moving average
self.slow = self.EMA((forex), 7, Resolution.Minute)
self.rsi = self.RSI((forex), 7,MovingAverageType.Simple, Resolution.Minute)
self.atr = self.ATR((forex), 5, MovingAverageType.Simple, Resolution.Minute)
self.atr2 = self.ATR((forex), 12, MovingAverageType.Simple, Resolution.Minute)
self.SetWarmUp(10, Resolution.Minute)
self.previous = None

def OnData(self, data):
'''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.'''
# a couple things to notice in this method:
# 1. We never need to 'update' our indicators with the data, the engine takes care of this for us
# 2. We can use indicators directly in math expressions
# 3. We can easily plot many indicators at the same time

# wait for our slow ema to fully initialize
if not self.slow.IsReady:

# only once per day
if self.previous is not None and self.previous.date() == self.Time.date():

# define a small tolerance on our checks to avoid bouncing
tolerance = 0.00015

holdings = self.Portfolio[forex].Quantity

# we only want to go long if we're currently short or flat
if holdings <= 0:
# if the fast is greater than the slow, we'll go long
if self.fast.Current.Value > self.slow.Current.Value *(1 + tolerance) and self.rsi.Current.Value>60 and self.atr.Current.Value>self.atr2.Current.Value:
self.Log("BUY >> {0}".format(self.Securities[forex].Price))
self.SetHoldings((forex), 0.25)

if self.fast.Current.Value < self.slow.Current.Value *(1 - tolerance) and self.rsi.Current.Value<40 and self.atr.Current.Value>self.atr2.Current.Value:
self.Log("SELL >> {0}".format(self.Securities[forex].Price))
self.SetHoldings((forex), 0.25)

# we only want to liquidate if we're currently long
# if the fast is less than the slow we'll liquidate our long
if holdings > 0 and self.fast.Current.Value < self.slow.Current.Value:
self.Log("SELL >> {0}".format(self.Securities[forex].Price))

if holdings < 0 and self.fast.Current.Value > self.slow.Current.Value:
self.Log("BUY >> {0}".format(self.Securities[forex].Price))