GDAX API client written in Julia. Implemets REST API, WebSocket feed handling and FIX API
Websocket feed is handled via fork DandelionWebSockets.jl. NB: must use release_1.0.0
brunch. FIX api is done through FIX.jl.
julia> Pkg.clone("git@github.com:DatName/GDAXClient.git")
Authentication is handled via GDAXUser
struct:
julia> using GDAXClient
julia> user = GDAXUser("https://api.gdax.com", "my_api_key", "my_secret_key", "my_passphrase")
If you don't have api keys (e.g. you have no account at GDAX), just pass empty keys and passphare: your access will be restricted to everything that does not require authentication.
Most exported REST api methods return HttpCommon.Response
object. You can use Requests.jl
to get what you need:
julia> resp = getProductOrderBook(user, "BTC-EUR")
julia> status = Requests.statuscode(resp)
julia> data = Requests.json(resp)
You can see full list of exported methods with
julia> names(GDAXClient)
?? placeOrder()
, cancelAll()
GDAX is strict on order's price precision, so you should handle it yourself and pass value as string.
You can send an order via
julia> resp = placeOrder(user, order)
julia> Requests.statuscode(resp)
WebSocket feed client
WebSocket feed client is implemented through GDAXWebSocketClient
struct.
julia> subscription = Dict("type" => "subscribe",
"product_ids" => ["BTC-EUR", "BTC-USD"],
"channels" => ["heartbeat", "level2", "full"])
julia> client = GDAXWebSocketClient(user, subscription, events_handler)
Where type of events_handler
is a subtype of AbstractMessageHandler
. All text messages from web socket feed are first parsed to msg::Dict
via JSON.json()
(as GDAX uses only jsons) and then passed to the following function
julia> onMessage(client.events_handler, msg)
This function must be implemented on users' side.
julia> reg_user = GDAXUser("https://api.gdax.com", "wss://ws-feed.gdax.com", api_key, api_secret, passphrase)
julia> handler = TestEventsHandler(0)
julia> client = GDAXClient.fixconnect(reg_user, handler)
julia> m, mstr = placeOrder(client, "buy", "BTC-EUR", 0.0001001, 10000.0)
julia> cancelAll(client)
See example folder for example of spread quoting.