Need help with alpaca-trade-api-go?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

alpacahq
199 Stars 56 Forks Apache License 2.0 280 Commits 6 Opened issues

Description

Go client for Alpaca's trade API

Services available

!
?

Need anything else?

Contributors list

alpaca-trade-api-go

CircleCI Status Go Report Card

alpaca-trade-api-go
is a Go library for the Alpaca trade and marketdata API. It allows rapid trading algo development easily, with support for the both REST and streaming interfaces. For details of each API behavior, please see the online API document.

Installation

go get -u github.com/alpacahq/alpaca-trade-api-go/v2/alpaca

Examples

In order to call Alpaca's trade API, you need to obtain an API key pair from the web console.

Trading REST example

package main

import ( "fmt"

"github.com/alpacahq/alpaca-trade-api-go/v2/alpaca"

)

func main() { client := alpaca.NewClient(alpaca.ClientOpts{ // Alternatively you can set your key and secret using the // APCA_API_KEY_ID and APCA_API_SECRET_KEY environment variables ApiKey: "YOUR_API_KEY", ApiSecret: "YOUR_API_SECRET", BaseURL: "https://paper-api.alpaca.markets", }) acct, err := client.GetAccount() if err != nil { panic(err) } fmt.Printf("%+v\n", *acct) }

Trade updates stream example

The following example shows how you can stream your own trade updates. First we register a handler function that simply prints the received trade updates, then we submit a single AAPL buy order. You should see two updates, a "new" event as soon as you submit the order, and a "fill" event soon after that, provided that the market is open.

// Listen to trade updates in the background (with unlimited reconnect)
alpaca.StreamTradeUpdatesInBackground(context.TODO(), func(tu alpaca.TradeUpdate) {
    log.Printf("TRADE UPDATE: %+v\n", tu)
})

// Send a single AAPL order symbol := "AAPL" qty := decimal.NewFromInt(1) if _, err := alpaca.PlaceOrder(alpaca.PlaceOrderRequest{ AssetKey: &symbol, Qty: &qty, Side: "buy", Type: "market", TimeInForce: "day", }); err != nil { log.Fatalf("failed place order: %v", err) } log.Println("order sent")

select {}

Further examples

See the examples directory for further examples:

  • algo-trading examples
    • long-short
    • martingale
    • mean-reversion
  • marketdata examples
    • crypto-stream
    • data-stream
    • marketdata

API Document

The HTTP API document is located here.

Authentication

The Alpaca API requires API key ID and secret key, which you can obtain from the web console after you sign in. This key pair can then be applied to the SDK either by setting environment variables (

APCA_API_KEY_ID=
and
APCA_API_SECRET_KEY=
), or hardcoding them into the Go code directly as shown in the examples above.
export APCA_API_KEY_ID=xxxxx
export APCA_API_SECRET_KEY=yyyyy

Endpoint

For paper trading, set the environment variable

APCA_API_BASE_URL
or set the
BaseURL
option when constructing the client.
export APCA_API_BASE_URL=https://paper-api.alpaca.markets

GoDoc

For a more in-depth look at the SDK, see the GoDoc

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.