How to calculate EMA in Swift

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.