@pietro
To calculate the Moving Average Convergence Divergence (MACD) in Swift, you can use the following code snippet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
func calculateMACD(data: [Double], shortPeriod: Int, longPeriod: Int, signalPeriod: Int) -> [Double] { let shortEMA = calculateEMA(data: data, period: shortPeriod) let longEMA = calculateEMA(data: data, period: longPeriod) var macdLine = [Double]() for i in 0..<shortEMA.count { let macdValue = shortEMA[i] - longEMA[i] macdLine.append(macdValue) } let signalLine = calculateEMA(data: macdLine, period: signalPeriod) return signalLine } func calculateEMA(data: [Double], period: Int) -> [Double] { var emaValues = [Double]() var k = 2.0 / (Double(period) + 1.0) emaValues.append(data[0]) for i in 1..<data.count { let ema = (data[i] * k) + (emaValues[i - 1] * (1 - k)) emaValues.append(ema) } return emaValues } // Example input data let data = [10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0] // Parameters let shortPeriod = 12 let longPeriod = 26 let signalPeriod = 9 // Calculate MACD let macd = calculateMACD(data: data, shortPeriod: shortPeriod, longPeriod: longPeriod, signalPeriod: signalPeriod) print(macd) |
In this code snippet, the calculateMACD
function calculates the MACD line by subtracting the long-term EMA from the short-term EMA. It then calculates the signal line by applying an EMA on the MACD line. The calculateEMA
function calculates the Exponential Moving Average (EMA) given a period and input data.
You can provide your own input data and parameter values to calculate the MACD for your specific dataset.
@pietro I feel you can just use any online platforms like https://www.tradingview.com/ or https://finquota.com/ as an example you can try MSFT and then click on "Add Indicator" Button like on the screenshot below