How to calculate EMA in Swift

EMA gives more weight to recent price data, helping traders quickly identify trends and respond to changing market conditions.

To calculate the Exponential Moving Average (EMA) in Swift, you can use the following formula:

EMA = (current_price * k) + (previous_EMA * (1 - k))

Where current_price is the most recent price point, previous_EMA is the previous period's EMA, and k is the smoothing constant. This constant is calculated as 2 / (n + 1), where n is the number of periods in the EMA.

Here is some sample code to calculate a 10-period EMA:

let data = [3.0, 4.0, 5.0, 4.5, 4.0, 5.5, 6.0, 5.5, 5.0, 4.5]
let n = 10
let k = 2 / Double(n + 1)
var ema = data[0]

for i in 1..<data.count {
    ema = (data[i] * k) + (ema * (1 - k))
}

print(ema)

You can also use the reduce function to calculate the EMA.

let k = 2 / Double(n + 1)
let ema = data.suffix(n).reduce(data.first!) { (prev, curr) in (curr * k) + (prev * (1 - k)) }

In this code snippet, data is an array of Double containing the trading data, n is the number of periods in the EMA, k is the smoothing constant, ema is the calculated EMA.

Keep in mind that the first EMA value is typically the SMA of the first n periods, and then the EMA is calculated based on that value.