# Golang : Calculate US Dollar Index (DXY)

Below is a code example on how to calculate the US dollar index based on a basket of other related currencies pairs. The formula to calculate US dollar index is :

USDX = 50.14348112 × EUR/USD^(-0.576) × USD/JPY^(0.136) × GBP/USD^(-0.119) × USD/CAD^(0.091) × USD/SEK^(0.042) × USD/CHF^(0.036)

Here you go!

`````` package main

import (
"fmt"
"math"

"github.com/awoldes/goanda"
)

func main() {

oandaAccountID := ""
oandaAPIKey := ""

// set the NewConnection 3rd parameter to [false] to use DEMO account.
// [true] for LIVE account

UsingLIVEAccount := false // set false to use https://api-fxpractice.oanda.com
oanda := goanda.NewConnection(oandaAccountID, oandaAPIKey, UsingLIVEAccount)

fmt.Println("Calculating USD index using this formula...")
fmt.Println("USDX = 50.14348112 × EUR/USD^(-0.576) × USD/JPY^(0.136) × GBP/USD^(-0.119) x USD/CAD^(0.091) × USD/SEK^(0.042) × USD/CHF^(0.036)")

EURUSD := GetPrice(oanda, "EUR_USD")
USDJPY := GetPrice(oanda, "USD_JPY")
GBPUSD := GetPrice(oanda, "GBP_USD")
USDSEK := GetPrice(oanda, "USD_SEK")
USDCHF := GetPrice(oanda, "USD_CHF")

EURUSDPowerOf := math.Pow(EURUSD, -0.576)
USDJPYPowerOf := math.Pow(USDJPY, 0.136)
GBPUSDPowerOf := math.Pow(GBPUSD, -0.119)
USDSEKPowerOf := math.Pow(USDSEK, 0.042)
USDCHFPowerOf := math.Pow(USDCHF, 0.036)

USDX := 50.14348112 * EURUSDPowerOf * USDJPYPowerOf * GBPUSDPowerOf * USDCADPowerOf * USDSEKPowerOf * USDCHFPowerOf

fmt.Println("Current USD Index : ", USDX)

}

//--------------------------------------------------------------------------------------------------------

func GetPrice(oanda *goanda.OandaConnection, cross string) float64 {
instrument := cross
priceResponse := oanda.GetInstrumentPrice(instrument)

return priceResponse.Prices.Bids.Price
}
``````

Sample output for 8-March-2019:

Calculating USD index using this formula...

USDX = 50.14348112 × EUR/USD^(-0.576) × USD/JPY^(0.136) × GBP/USD^(-0.119) x USD/CAD^(0.091) × USD/SEK^(0.042) × USD/CHF^(0.036)

Current USD Index : 97.54459899738309

Points to remember

If USD is the base currency (USD/XXX), then the USDX and the currency pair should move the same direction.

If USD is the quote currency (XXX/USD), then the USDX and the currency pair should move in opposite directions.

References:

https://www.babypips.com/learn/forex/using-the-usdx-for-forex

https://www.mql5.com/en/blogs/post/716041