Skip to content

Go Library that allows you to query real-time stock market information.

License

Notifications You must be signed in to change notification settings

ggoodwin/go-stocks

Repository files navigation

go-stocks logo
Stock Info Go Library

Discord

ggoodwin

Go

Go Reference Go Version

Repo Info

Size Last Commit License

Code Reports

GoReportCard CodeFactor Codacy Badge Coverage Status

Actions

Go lint CodeQL Vulnerabilities Coveralls


🌟 How it works

We use the Yahoo API to gather real-time stock data.

πŸ“¦ Installation and Usage

Go

Make sure you have Go installed on your machine.

You can check by running the following command in the console

go version

If you don't have Go installed, you can Download Go and install it.

Add to your project

Run the following command in the console, in the project directory, to install the library with go get

go get github.com/ggoodwin/go-stocks

Importing

Add the import to your .go file

import stocks "github.com/ggoodwin/go-stocks"

πŸ’° Usage

Stock Price and Percentage Change

Add this to your .go file

// Parameter: Stock Symbol
// Returns: strings ex: `$123.45`, `1.23%`, `↑`
price, percent, direction := stocks.GetPriceAndPercentage("AAPL")

Get full stock details

// Parameter: Stock Symbol
// Returns `Result` struct
stock := stocks.GetFullDetails("AAPL")

Result struct

type Result struct {
	Symbol                            string  `json:"symbol"`
	ShortName                         string  `json:"shortName"`
	QuoteSourceName                   string  `json:"quoteSourceName"`
	Language                          string  `json:"language"`
	Region                            string  `json:"region"`
	QuoteType                         string  `json:"quoteType"`
	Triggerable                       bool    `json:"triggerable"`
	Currency                          string  `json:"currency"`
	Exchange                          string  `json:"exchange"`
	MessageBoardID                    string  `json:"messageBoardId"`
	ExchangeTimezoneName              string  `json:"exchangeTimezoneName"`
	ExchangeTimezoneShortName         string  `json:"exchangeTimezoneShortName"`
	GmtOffSetMilliseconds             int     `json:"gmtOffSetMilliseconds"`
	Market                            string  `json:"market"`
	EsgPopulated                      bool    `json:"esgPopulated"`
	FirstTradeDateMilliseconds        int64   `json:"firstTradeDateMilliseconds"`
	RegularMarketChange               float64 `json:"regularMarketChange"`
	RegularMarketChangePercent        float64 `json:"regularMarketChangePercent"`
	RegularMarketTime                 int     `json:"regularMarketTime"`
	RegularMarketPrice                float64 `json:"regularMarketPrice"`
	RegularMarketDayHigh              float64 `json:"regularMarketDayHigh"`
	RegularMarketDayRange             string  `json:"regularMarketDayRange"`
	RegularMarketDayLow               float64 `json:"regularMarketDayLow"`
	RegularMarketVolume               int64   `json:"regularMarketVolume"`
	RegularMarketPreviousClose        float64 `json:"regularMarketPreviousClose"`
	FullExchangeName                  string  `json:"fullExchangeName"`
	RegularMarketOpen                 float64 `json:"regularMarketOpen"`
	AverageDailyVolume3Month          int64   `json:"averageDailyVolume3Month"`
	AverageDailyVolume10Day           int64   `json:"averageDailyVolume10Day"`
	StartDate                         int     `json:"startDate"`
	CoinImageURL                      string  `json:"coinImageUrl"`
	FiftyTwoWeekLowChange             float64 `json:"fiftyTwoWeekLowChange"`
	FiftyTwoWeekLowChangePercent      float64 `json:"fiftyTwoWeekLowChangePercent"`
	FiftyTwoWeekRange                 string  `json:"fiftyTwoWeekRange"`
	FiftyTwoWeekHighChange            float64 `json:"fiftyTwoWeekHighChange"`
	FiftyTwoWeekHighChangePercent     float64 `json:"fiftyTwoWeekHighChangePercent"`
	FiftyTwoWeekLow                   float64 `json:"fiftyTwoWeekLow"`
	FiftyTwoWeekHigh                  float64 `json:"fiftyTwoWeekHigh"`
	FiftyDayAverage                   float64 `json:"fiftyDayAverage"`
	FiftyDayAverageChange             float64 `json:"fiftyDayAverageChange"`
	FiftyDayAverageChangePercent      float64 `json:"fiftyDayAverageChangePercent"`
	TwoHundredDayAverage              float64 `json:"twoHundredDayAverage"`
	TwoHundredDayAverageChange        float64 `json:"twoHundredDayAverageChange"`
	TwoHundredDayAverageChangePercent float64 `json:"twoHundredDayAverageChangePercent"`
	MarketCap                         int64   `json:"marketCap"`
	SourceInterval                    int     `json:"sourceInterval"`
	ExchangeDataDelayedBy             int     `json:"exchangeDataDelayedBy"`
	Tradeable                         bool    `json:"tradeable"`
	MarketState                       string  `json:"marketState"`
}

πŸ’» Dependencies

πŸ™‡β€β™‚οΈ Issues and Contributing

If you find an issue with this library, please report the issue using our Github Issues or check out the Security details if it is security related.

If you'd like, I welcome any contributions. Please read the Contributing document then Fork this library and submit a Pull Request. Make sure to click compare across forks to see your fork.

βš–οΈ License

This project is under the MIT License. See the License file for the full license text.

πŸ“œ Changes

Check out our Changelog

πŸ‘πŸ» Code of Conduct

Please read my Code of Conduct before contributing or engaging in discussions.