Git Product home page Git Product logo

go-tda's Introduction

go-tda

Go Reference Go Report Card License

2024 update

Schwab purchased the ameritrade product from TD, and thus made this project deprecated. i have moved my go implementation of the new Schwab api to go-trade, and after i finish that i will be using that repo to create hooks into a number of other brokerage apis.

this repo is archived as it still serves a purpose - if you had a developer app with td ameritrade, their endpoints are still fully functional. thus, you can still use this repo exactly as before.

happy trading!

what is this project?

this is a go implementation of a td-ameritrade API hook. the goal of this project is to incentivize others to build algorithmic trading models on top of these packages. the purpose for this projects existence is really speed; a lot of td-ameritrade hooks are built in Python, which is fine, but they are so unbelievably slow. when you have to wait multiple seconds to make a request, you know it's bad. we have built an incredibly light handler function that routes all calls in the library, making speeds predictable and lightning fast. this, on top of well optimized and efficient Marshaling of JSON to custom Structs, means that you can make up to 15 requests per second if you wish.

  • the average response times for all functions in this library is 152ms (weighted average of over 100,000 test requests)
  • a light function like RealTime can achieve request times as low as 80ms

built entirely by @samjtro.

how can i use this project?

quick start

  1. go to developer.tdameritrade.com and register for an account
  • optionally, if you'd like to trade using the trade package, you will have to register for a td-ameritrade brokerage account - this is NOT neccesary, as you can use the data from tda to trade on any platform you wish
  1. create an app on td ameritrade developer at https://developer.tdameritrade.com/user/me/apps, or by going to the My Apps tab while logged in

  2. go to your app (once it has been approved), and get the api key under the "Consumer Key" section

  • create a file called tda-config.env
  • move that file to your $HOME directory (~/)
  • edit the file and add the following information in the format:
APIKEY=Your_APIKEY_Here
UTC_DIFF=+00:00 // Your difference from UTC time. ex: For MST, you would use -06:00.
  1. go get github.com/samjtro/go-tda
  • you're now ready to go! import the library by package ( github.com/samjtro/go-tda/data for the data package, for instance )
  • if you have any questions, check the go reference; or, scroll down to the code samples below

package details

  • data: contains RealTime and PriceHistory; used for getting either a RealTime quote of a ticker, or a long-term PriceHistory dataframe of a stock from tda (most common use-case)
  • movers: contains Get; returns a list of movers for the day by index & direction
  • option: contains Single; returns Option Chains of your desired parameters
  • instrument: contains Fundamental & Get; returns information on a desired ticker or CUSIP

code samples

data package

quote, err := data.RealTime("AAPL")

if err != nil {
        panic(err)
}

df, err := data.PriceHistory("AAPL", "month", "1", "daily", "1")

if err != nil {
        panic(err)
}

instrument package

simple, err := instrument.Simple("AAPL")

if err != nil {
	panic(err)
}

fundamental, err = instrument.Fundamental("AAPL")

if err != nil {
	panic(err)
}

movers package

movers, err := movers.Get("$DJI", "up", "percent")

if err != nil {
	panic(err)
}

option package

single, err := option.Single("AAPL", "ALL", "ALL", "15", "2022-09-20")

if err != nil {
	panic(err)
}

what can i do with this project?

like previously mentioned, the goal is for you to use this in a wide variety of capacities. do what you wish with this project, but...

see the license; it is permissive, there are guidelines for proper reproduction & crediting :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.