mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-14 07:26:47 +00:00
* orders: deprecate SubmitResponse return and change to *order.Detail construct detail from order.Submit struct * orders: add coverage, fix tests * coinut: rm test for checking * orders: revert change for return and change field ID to a more explicit name OrderID * orders: Add method to see if the order was placed * order: change field name in Cancel type to be more explicit * orders: standardize field -> OrderID * backtester: populate change * orders: add test * gctscript: fix field name * linter: fix issues * linter: more fixes * linter: forever * exchanges_tests: populate order.Submit field exchange name * Update exchanges/order/order_types.go Co-authored-by: Scott <gloriousCode@users.noreply.github.com> * Update exchanges/order/orders.go Co-authored-by: Scott <gloriousCode@users.noreply.github.com> * glorious: nits * glorious: nits * thrasher: nits Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io> Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
94 lines
4.1 KiB
Markdown
94 lines
4.1 KiB
Markdown
# GoCryptoTrader Unified API
|
|
|
|
<img src="https://github.com/thrasher-corp/gocryptotrader/blob/master/web/src/assets/page-logo.png?raw=true" width="350px" height="350px" hspace="70">
|
|
|
|
[](https://github.com/thrasher-corp/gocryptotrader/actions/workflows/tests.yml)
|
|
[](https://github.com/thrasher-corp/gocryptotrader/blob/master/LICENSE)
|
|
[](https://godoc.org/github.com/thrasher-corp/gocryptotrader)
|
|
[](http://codecov.io/github/thrasher-corp/gocryptotrader?branch=master)
|
|
[](https://goreportcard.com/report/github.com/thrasher-corp/gocryptotrader)
|
|
|
|
A cryptocurrency trading bot supporting multiple exchanges written in Golang.
|
|
|
|
**Please note that this bot is under development and is not ready for production!**
|
|
|
|
## Community
|
|
|
|
Join our slack to discuss all things related to GoCryptoTrader! [GoCryptoTrader Slack](https://join.slack.com/t/gocryptotrader/shared_invite/enQtNTQ5NDAxMjA2Mjc5LTc5ZDE1ZTNiOGM3ZGMyMmY1NTAxYWZhODE0MWM5N2JlZDk1NDU0YTViYzk4NTk3OTRiMDQzNGQ1YTc4YmRlMTk)
|
|
|
|
## Unified API
|
|
|
|
GoCryptoTrader supports a unified API for dealing with exchanges. Each exchange
|
|
has its own wrapper file which maps the exchanges own RESTful endpoints into a
|
|
standardised way for bot and standalone application usage.
|
|
|
|
A full breakdown of all the supported wrapper funcs can be found [here.](https://github.com/thrasher-corp/gocryptotrader/blob/master/exchanges/interfaces.go#L21)
|
|
Please note that these change on a regular basis as GoCryptoTrader is undergoing
|
|
rapid development.
|
|
|
|
Each exchange supports public API endpoints which don't require any authentication
|
|
(fetching ticker, orderbook, trade data) and also private API endpoints (which
|
|
require authentication). Some examples include submitting, cancelling and fetching
|
|
open orders). To use the authenticated API endpoints, you'll need to set your API
|
|
credentials in either the `config.json` file or when you initialise an exchange in
|
|
your application, and also have the appropriate key permissions set for the exchange.
|
|
Each exchange has a credentials validator which ensures that the API credentials
|
|
supplied meet the requirements to make an authenticated request.
|
|
|
|
## Public API Ticker Example
|
|
|
|
```go
|
|
var b bitstamp.Bitstamp
|
|
b.SetDefaults()
|
|
ticker, err := b.FetchTicker(context.Background(), currency.NewPair(currency.BTC, currency.USD), asset.Spot)
|
|
if err != nil {
|
|
// Handle error
|
|
}
|
|
fmt.Println(ticker.Last)
|
|
```
|
|
|
|
## Private API Submit Order Example
|
|
|
|
```go
|
|
var b bitstamp.Bitstamp
|
|
b.SetDefaults()
|
|
|
|
// Set default keys
|
|
b.API.SetKey("your_key")
|
|
b.API.SetSecret("your_secret")
|
|
b.API.SetClientID("your_clientid")
|
|
b.API.SetPEMKey("your_PEM_key")
|
|
b.API.SetSubAccount("your_specific_subaccount")
|
|
|
|
// Set client/strategy/subsystem specific credentials that will override
|
|
// default credentials.
|
|
// Make a standard context and add credentials to it by using exchange
|
|
// package helper function DeployCredentialsToContext
|
|
ctx := context.Background()
|
|
ctx = exchange.DeployCredentialsToContext(ctx, &exchange.Credentials{
|
|
Key: "your_key",
|
|
Secret: "your_secret",
|
|
ClientID: "your_clientid",
|
|
PEMKey: "your_PEM_key",
|
|
SubAccount: "your_specific_subaccount",
|
|
})
|
|
|
|
|
|
o := &order.Submit{
|
|
Exchange: b.Name, // or method GetName() if exchange.IBotInterface
|
|
Pair: currency.NewPair(currency.BTC, currency.USD),
|
|
Side: order.Sell,
|
|
Type: order.Limit,
|
|
Price: 1000000,
|
|
Amount: 0.1,
|
|
AssetType: asset.Spot,
|
|
}
|
|
|
|
// Context will be intercepted when sending an authenticated HTTP request.
|
|
resp, err := b.SubmitOrder(ctx, o)
|
|
if err != nil {
|
|
// Handle error
|
|
}
|
|
fmt.Println(resp.OrderID)
|
|
```
|