Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/larrylv/dealer
Elixir api library for Stockfighter
https://github.com/larrylv/dealer
elixir stockfighter
Last synced: about 2 months ago
JSON representation
Elixir api library for Stockfighter
- Host: GitHub
- URL: https://github.com/larrylv/dealer
- Owner: larrylv
- Created: 2015-12-14T14:32:55.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2015-12-25T14:33:50.000Z (about 9 years ago)
- Last Synced: 2024-10-18T09:06:45.458Z (3 months ago)
- Topics: elixir, stockfighter
- Language: Elixir
- Homepage:
- Size: 53.7 KB
- Stars: 9
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Dealer
An api library for [Stockfighter](https://www.stockfighter.io/) in Elixir, providing functions to interact with the Stock as well as the GM apis.
[![Build Status](https://img.shields.io/travis/larrylv/dealer.svg)](https://travis-ci.org/larrylv/dealer)
[![Hex.pm Version](https://img.shields.io/hexpm/v/dealer.svg?style=flat-square)](https://hex.pm/packages/dealer)
[![Docs](https://inch-ci.org/github/larrylv/dealer.svg?branch=master&style=flat-square)](https://inch-ci.org/github/larrylv/dealer)
[![Hex.pm Downloads](https://img.shields.io/hexpm/dt/dealer.svg?style=flat-square)](https://hex.pm/packages/dealer)## Installation
1. Add dealer to your list of dependencies in `mix.exs`:
def deps do
[{:dealer, "~> 0.8.0"}]
end2. 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 responseOr 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
``` elixir
iex> Dealer.Heartbeat.get
```### Check The Venue Is Up
Documentation link: https://starfighter.readme.io/docs/venue-healthcheck
``` elixir
iex> Dealer.Venue.heartbeat("RQOVEX")
```### Stocks on a Venue
Documentation link: https://starfighter.readme.io/docs/list-stocks-on-venue
``` elixir
iex> Dealer.Stocks.on_venue("RQOVEX")
```### The Orderbook For A Stock
Documentation link: https://starfighter.readme.io/docs/get-orderbook-for-stock
``` elixir
iex> Dealer.Stock.orderbook("RQOVEX", "DIUW")
```### A New Order For A Stock
Documentation link: https://starfighter.readme.io/docs/place-new-order
``` elixir
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
``` elixir
iex> Dealer.Stock.quote("LBPTEX", "GVOE")
```### Status For An Existing Order
Documentaion link: https://starfighter.readme.io/docs/status-for-an-existing-order
``` elixir
iex> Dealer.Order.status("LBPTEX", "GVOE", 306)
```### Cancel An Order
Documentation link: https://starfighter.readme.io/docs/cancel-an-order
``` elixir
iex> Dealer.Order.cancel("LBPTEX", "GVOE", 306)```
### Status For All Orders
Documentation link: https://starfighter.readme.io/docs/status-for-all-orders
``` elixir
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
``` elixir
iex> Dealer.Orders.status("LBPTEX", "ACCOUNT_NAME", "GVOE")
```## Websocket Documentation
### Quotes (Ticket Tape)
Documentation link: https://starfighter.readme.io/docs/quotes-ticker-tape-websocket
``` elixir
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
``` elixir
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
``` elixir
iex> Dealer.GM.start_level("dueling_bulldozers")
```### Get an instance state
``` elixir
iex> Dealer.GM.get_instance(5360)
```### Stop an instance
``` elixir
iex> Dealer.GM.stop_instance(5360)
```### Restart an instance
``` elixir
iex> Dealer.GM.restart_instance(5360)
```