Categorygithub.com/markcheno/go-quote
modulepackage
0.0.0-20250303011253-4b4b2aed5a7a
Repository: https://github.com/markcheno/go-quote.git
Documentation: pkg.go.dev

# README

go-quote

GoDoc

A free quote downloader library and cli

Downloads daily historical price quotes from Tiingo and daily/intraday data from various api's. Written in pure Go. No external dependencies. Now downloads crypto coin historical data from various exchanges.

  • Update: 03/02/2025 - Removed obsolete Yahoo support

  • Update: 02/15/2024 - Major update: updated to Go 1.22, removed bittrex/binance support, fixed nasdaq/tiingo markets

  • Update: 11/15/2021 - Removed obsolete markets, converted to go modules

  • Update: 7/18/2021 - Removed obsolete Google support

  • Update: 6/26/2019 - updated GDAX to Coinbase, added coinbase market

  • Update: 4/26/2018 - Added preliminary tiingo CRYPTO support. Use -source=tiingo-crypto -token=<your_tingo_token> You can also set env variable TIINGO_API_TOKEN. To get symbol lists, use market: tiingo-btc, tiingo-eth or tiingo-usd

  • Update: 12/21/2017 - Added Amibroker format option (creates csv file with separate date and time). Use -format=ami

  • Update: 12/20/2017 - Added Binance exchange support. Use -source=binance

  • Update: 12/18/2017 - Added Bittrex exchange support. Use -source=bittrex

  • Update: 10/21/2017 - Added Coinbase GDAX exchange support. Use -source=gdax All times are in UTC. Automatically rate limited.

  • Update: 7/19/2017 - Added preliminary tiingo support. Use -source=tiingo -token=<your_tingo_token> You can also set env variable TIINGO_API_TOKEN

  • Update: 5/24/2017 - Now works with the new Yahoo download format. Beware - Yahoo data quality is now questionable and the free Yahoo quotes are likely to permanently go away in the near future. Use with caution!

Still very much in alpha mode. Expect bugs and API changes. Comments/suggestions/pull requests welcome!

Copyright 2024 Mark Chenoweth

Install CLI utility (quote) with:

go install github.com/markcheno/go-quote/quote@latest
Usage:
  quote -h | -help
  quote -v | -version
  quote <market> [-output=<outputFile>]
  quote [-years=<years>|(-start=<datestr> [-end=<datestr>])] [options] [-infile=<filename>|<symbol> ...]

Options:
  -h -help             show help
  -v -version          show version
  -years=<years>       number of years to download [default=5]
  -start=<datestr>     yyyy[-[mm-[dd]]]
  -end=<datestr>       yyyy[-[mm-[dd]]] [default=today]
  -infile=<filename>   list of symbols to download
  -outfile=<filename>  output filename
  -period=<period>     1m|3m|5m|15m|30m|1h|2h|4h|6h|8h|12h|d|3d|w|m [default=d]
  -source=<source>     tiingo|tiingo-crypto|coinbase [default=tiingo]
  -token=<tiingo_tok>  tingo api token [default=TIINGO_API_TOKEN]
  -format=<format>     (csv|json|hs|ami) [default=csv]
  -all=<bool>          all in one file (true|false) [default=false]
  -log=<dest>          filename|stdout|stderr|discard [default=stdout]
  -delay=<ms>          delay in milliseconds between quote requests

Note: not all periods work with all sources

Valid markets:
etf,nasdaq,nasdaq100,amex,nyse,megacap,largecap,midcap,smallcap,microcap,nanocap,
telecommunications,health_care,finance,real_estate,consumer_discretionary,
consumer_staples,industrials,basic_materials,energy,utilities
coinbase,tiingo-usd,tiingo-btc,tiingo-eth

CLI Examples

# display usage
quote -help

# downloads 5 years of Tiingo SPY history to spy.csv (TIINGO_API_TOKEN must be set)
quote spy

# downloads 1 year of bitcoin history to BTC-USD.csv
quote -years=1 -source=coinbase BTC-USD

# downloads 1 year of Tiingo SPY & AAPL history to quotes.csv (TIINGO_API_TOKEN must be set)
quote -years=1 -all=true -outfile=quotes.csv spy aapl

# downloads full etf symbol list to etf.txt, also works for nasdaq,nasdaq100,nyse,amex
quote etf

# download fresh etf list and 5 years of etf data all in one file
quote etf && quote -all=true -outfile=etf.csv -infile=etf.txt

Install library

Install the package with:

go get github.com/markcheno/go-quote@latest

Library example

package main

import (
	"fmt"
	"github.com/markcheno/go-quote"
	"github.com/markcheno/go-talib"
)

func main() {
	spy, _ := quote.NewQuoteFromTiingo("spy", "2016-01-01", "2016-04-01", quote.Daily, true)
	fmt.Print(spy.CSV())
	rsi2 := talib.Rsi(spy.Close, 2)
	fmt.Println(rsi2)
}

License

MIT License - see LICENSE for more details

# Packages

# Functions

NewEtfFile - download a list of etf symbols to a file.
NewEtfList - download a list of etf symbols to an array of strings.
NewMarketFile - download a list of market symbols to a file.
NewMarketList - download a list of market symbols to an array of strings.
NewQuote - new empty Quote struct.
NewQuoteFromCoinbase - Coinbase Pro historical prices for a symbol.
NewQuoteFromCSV - parse csv quote string into Quote structure.
NewQuoteFromCSVDateFormat - parse csv quote string into Quote structure with specified DateTime format.
NewQuoteFromCSVFile - parse csv quote file into Quote structure.
NewQuoteFromCSVFileDateFormat - parse csv quote file into Quote structure with specified DateTime format.
NewQuoteFromJSON - parse json quote string into Quote structure.
NewQuoteFromJSONFile - parse json quote string into Quote structure.
NewQuoteFromTiingo - Tiingo daily historical prices for a symbol.
NewQuoteFromTiingoCrypto - Tiingo crypto historical prices for a symbol.
NewQuotesFromCoinbase - create a list of prices from symbols in file.
NewQuotesFromCoinbaseSyms - create a list of prices from symbols in string array.
NewQuotesFromCSV - parse csv quote string into Quotes array.
NewQuotesFromCSVFile - parse csv quote file into Quotes array.
NewQuotesFromJSON - parse json quote string into Quote structure.
NewQuotesFromJSONFile - parse json quote string into Quote structure.
NewQuotesFromTiingoCryptoSyms - create a list of prices from symbols in string array.
NewQuotesFromTiingoSyms - create a list of prices from symbols in string array.
NewSymbolsFromFile - read symbols from a file.
ParseDateString - parse a potentially partial date string to Time.
ValidMarket - validate market string.

# Constants

ClientTimeout - connect/read timeout for client requests.
Daily time period.
Day3 - 3 day time period.
Hour12 - 12 hour time period.
Hour2 - 2 hour time period.
Hour4 - 4 hour time period.
Hour6 - 6 hour time period.
Hour8 - 8 hour time period.
Min1 - 1 Minute time period.
Min15 - 15 Minute time period.
Min3 - 3 Minute time period.
Min30 - 30 Minute time period.
Min5 - 5 Minute time period.
Min60 - 60 Minute time period.
Monthly time period.
Weekly time period.

# Variables

Delay - time delay in milliseconds between quote requests (default=100) Be nice, don't get blocked.
Log - standard logger, disabled by default.
ValidMarkets list of markets that can be downloaded.

# Structs

Quote - stucture for historical price data.

# Type aliases

Period - for quote history.
Quotes - an array of historical price data.