Dealer
An api library for Stockfighter in Elixir, providing functions to interact with the Stock as well as the GM apis.
Installation
-
Add dealer to your list of dependencies in
mix.exs
:def deps do [{:dealer, "~> 0.8.0"}] end
-
Ensure dealer is started before your application:
def application do [applications: [:dealer]] end
Usage
Start application
If you havn't specified starting dealer
application in your mix.exs, or you are in a normal iex
session, you should explicitly call Dealer.start
to start the application.
Authentication
You should set DEALER_API_KEY
environment variable, or set the application env by Application.put_env(:dealer, :api_key, "your_api_key")
.
Response
If the api request is successful, the response will be a Dealer.Response
struct, which is a struct defined containing three fields:
- data: decoded json response
- status_code: the request's status code
- raw_response: original response
Or something bad might happen during the reuqest, the response will be: {:error, term}
.
Websocket response will be either a Dealer.Websocket.Response
struct or {:error, term}
.
API Documentation
Check The Api Is Up
Documentation link: https://starfighter.readme.io/docs/heartbeat
iex> Dealer.Heartbeat.get
Check The Venue Is Up
Documentation link: https://starfighter.readme.io/docs/venue-healthcheck
iex> Dealer.Venue.heartbeat("RQOVEX")
Stocks on a Venue
Documentation link: https://starfighter.readme.io/docs/list-stocks-on-venue
iex> Dealer.Stocks.on_venue("RQOVEX")
The Orderbook For A Stock
Documentation link: https://starfighter.readme.io/docs/get-orderbook-for-stock
iex> Dealer.Stock.orderbook("RQOVEX", "DIUW")
A New Order For A Stock
Documentation link: https://starfighter.readme.io/docs/place-new-order
iex> Dealer.Orders.create("QWYIEX", "YPII", %{account: "TOB1728377", price: 33, qty: 100, direction: "buy", orderType: "limit"})
A Quote For A Stock
Documentation link: https://starfighter.readme.io/docs/a-quote-for-a-stock
iex> Dealer.Stock.quote("LBPTEX", "GVOE")
Status For An Existing Order
Documentaion link: https://starfighter.readme.io/docs/status-for-an-existing-order
iex> Dealer.Order.status("LBPTEX", "GVOE", 306)
Cancel An Order
Documentation link: https://starfighter.readme.io/docs/cancel-an-order
iex> Dealer.Order.cancel("LBPTEX", "GVOE", 306)
Status For All Orders
Documentation link: https://starfighter.readme.io/docs/status-for-all-orders
iex> Dealer.Orders.status("LBPTEX", "ACCOUNT_NAME")
Status For All Orders In A Stock
Documentation link: https://starfighter.readme.io/docs/status-for-all-orders-in-a-stock
iex> Dealer.Orders.status("LBPTEX", "ACCOUNT_NAME", "GVOE")
Websocket Documentation
Quotes (Ticket Tape)
Documentation link: https://starfighter.readme.io/docs/quotes-ticker-tape-websocket
iex> {account, venue, stock} = {"MSB5372858", "TYAMEX", "PTC"}
iex> socket = Dealer.Websocket.Quotes.connect!(account, venue)
iex> Dealer.Websocket.Quotes.recv!(socket)
iex> Dealer.Websocket.Quotes.close(socket)
iex> socket = Dealer.Websocket.Quotes.connect!(account, venue, stock)
iex> Dealer.Websocket.Quotes.recv!(socket)
iex> Dealer.Websocket.Quotes.close(socket)
Executions (Fills)
Documentation link: https://starfighter.readme.io/docs/executions-fills-websocket
iex> {account, venue, stock} = {"MSB5372858", "TYAMEX", "PTC"}
iex> socket = Dealer.Websocket.Executions.connect!(account, venue)
iex> Dealer.Websocket.Executions.recv!(socket)
iex> Dealer.Websocket.Executions.close(socket)
iex> socket = Dealer.Websocket.Executions.connect!(account, venue, stock)
iex> Dealer.Websocket.Executions.recv!(socket)
iex> Dealer.Websocket.Executions.close(socket)
GM Documentation
Start a level
iex> Dealer.GM.start_level("dueling_bulldozers")
Get an instance state
iex> Dealer.GM.get_instance(5360)
Stop an instance
iex> Dealer.GM.stop_instance(5360)
Restart an instance
iex> Dealer.GM.restart_instance(5360)