Welcome to python-quoine v0.1.2¶
This is an unofficial Python wrapper for the Quoinex and Qryptos exchanges REST API v2. I am in no way affiliated with Quoine, Quoinex or Qryptos, use at your own risk.
- PyPi
- https://pypi.python.org/pypi/python-quoine
- Source code
- https://github.com/sammchardy/python-quoine
- Documentation
- https://python-quoine.readthedocs.io/en/latest/
Features¶
- Implementation of all REST endpoints.
- Simple handling of authentication
- Response exception handling
- Simple market and limit buy functions
- Margin orders for Quoinex
TODO¶
- Websocket implementation
Quick Start¶
Register an account with Quoinex or Qryptos.
Generate an API Key and assign relevant permissions.
pip install python-quoine
from quoine.client import Quoinex
client = Quoinex(api_key, api_secret)
# get products
products = client.get_products()
# get market depth
depth = client.get_order_book(product_id=products[0]['id'])
# place market buy order
order = client.create_market_buy(
product_id=products[0]['id'],
quantity='100',
price_range='0.01')
# get list of filled orders
filled_orders = client.get_orders(status=client.STATUS_FILLED)
For more check out the documentation.
Donate¶
If this library helped you out feel free to donate.
- ETH: 0x79c9A113d63B6AC024c1AAae6f6419721C3611A3
- NEO: AVJB4ZgN7VgSUtArCt94y7ZYT6d5NDfpBo
- BTC: 1Dknp6L6oRZrHDECRedihPzx2sSfmvEBys
Other Exchanges¶
If you use Binance check out my python-binance library.
If you use Kucoin check out my python-kucoin library.
If you use IDEX check out my python-idex library.
Contents¶
Getting Started¶
Generate an API Key¶
To use signed account methods you are required to create an API Key.
Note Qryptos and Quoinex have different API Keys.
Initialise the client¶
Pass your API Token Id and Secret
Import the client you want to use, the methods available are the same.
from quoine.client import Quoinex, Qryptos
quoinex_client = Quoinex(quoinex_api_token_id, quoinex_api_secret)
qryptos_client = Qryptos(qryptos_api_token_id, qryptos_api_secret)
# optionally pass a language parameter
# ie en, en-us
qryptos_client = Qryptos(api_token_id, api_secret, language='zh')
# optionally pass a vendor id if applicable
qryptos_client = Qryptos(api_token_id, api_secret, vendor_id='vendor_id')
API Rate Limit¶
API users should not make more than 300 requests per 5 minute.
Requests that go beyond the limit will return with a 429 status
Pagination¶
Some API requesting lists will be paginated with the following format:
{
"models": [ "<json objects>" ],
"current_page": "<current page>",
"total_pages": "<number of pages>"
}
The default number of items returned is 20. To get more, you can specify parameter limit. Note that the maximum number of items that can be returned at a time is 1000
To get the next page use the page parameter.
Constants¶
Quoine defines constants for Order Types, Order Side and Order Status. These are accessible from the Quoinex or Qryptos classes.
SIDE_BUY = 'buy'
SIDE_SELL = 'sell'
STATUS_FILLED = 'filled'
STATUS_LIVE = 'live'
STATUS_PARTIAL = 'partially_filled'
STATUS_CANCELLED = 'cancelled'
ORDER_TYPE_LIMIT = 'limit'
ORDER_TYPE_MARKET = 'market'
ORDER_TYPE_MARKET_RANGE = 'market_with_range'
Use in your code like below.
from quoine.client import Quoinex
order_type = Quoinex.ORDER_TYPE_LIMIT
order_side = Quoinex.SIDE_BUY
Products Endpoints¶
-
class
quoine.client.
Quoinex
(api_token_id, api_secret, vendor_id=None, language=None)[source] -
get_order_book
(product_id, full=False) Get order book for a product
https://developers.quoine.com/#get-order-book
Parameters: - product_id (int) – required
- full (bool) – default False, optional
order_book = client.get_order_book(1, full=False)
Returns: API response { "buy_price_levels": [ [ "416.23000", # price "1.75000" # amount ], #... ], "sell_price_levels": [ [ "416.47000", # price "0.28675" # amount ], #... ] }
Raises: QuoineResponseException, QuoineAPIException
-
get_product
(product_id) Get product details
https://developers.quoine.com/#get-a-product
Parameters: product_id (int) – required product = client.get_product(1)
Returns: list - List of product dictionaries { "id": 5, "product_type": "CurrencyPair", "code": "CASH", "name": "CASH Trading", "market_ask": "48203.05", "market_bid": "48188.15", "indicator": -1, "currency": "JPY", "currency_pair_code": "BTCJPY", "symbol": "¥", "fiat_minimum_withdraw": "1500.0", "pusher_channel": "product_cash_btcjpy_5", "taker_fee": "0.0", "maker_fee": "0.0", "low_market_bid": "47630.99", "high_market_ask": "48396.71", "volume_24h": "2915.62736652", "last_price_24h": "48217.2", "last_traded_price": "48203.05", "last_traded_quantity": "1.0", "quoted_currency": "JPY", "base_currency": "BTC", "exchange_rate": "0.009398151671149725" }
Raises: QuoineResponseException, QuoineAPIException
-
get_products
() Get the list of all available products
https://developers.quoine.com/#products
products = client.get_products()
Returns: list - List of product dictionaries [ { "id": 5, "product_type": "CurrencyPair", "code": "CASH", "name": "CASH Trading", "market_ask": "48203.05", "market_bid": "48188.15", "indicator": -1, "currency": "JPY", "currency_pair_code": "BTCJPY", "symbol": "¥", "fiat_minimum_withdraw": "1500.0", "pusher_channel": "product_cash_btcjpy_5", "taker_fee": "0.0", "maker_fee": "0.0", "low_market_bid": "47630.99", "high_market_ask": "48396.71", "volume_24h": "2915.627366519999999998", "last_price_24h": "48217.2", "last_traded_price": "48203.05", "last_traded_quantity": "1.0", "quoted_currency": "JPY", "base_currency": "BTC", "exchange_rate": "0.009398151671149725" }, #... ]
Raises: QuoineResponseException, QuoineAPIException
-
Executions Endpoints¶
-
class
quoine.client.
Quoinex
(api_token_id, api_secret, vendor_id=None, language=None)[source] -
get_executions
(product_id, limit=None, page=None) Get a list of recent executions from a product (Executions are sorted in DESCENDING order - Latest first)
https://developers.quoine.com/#executions
Parameters: - product_id (int) – required
- limit (int) – How many executions should be returned. Must be <= 1000. Default is 20
- page (int) – From what page the executions should be returned, e.g if limit=20 and page=2, the response would start from the 21st execution. Default is 1
executions = client.get_executions( product_id=1, limit=200)
Returns: API response { "models": [ { "id": 1011880, "quantity": "6.118954", "price": "409.78", "taker_side": "sell", "created_at": 1457370745 }, { "id": 1011791, "quantity": "1.15", "price": "409.12", "taker_side": "sell", "created_at": 1457365585 } ], "current_page": 2, "total_pages": 1686 }
Raises: QuoineResponseException, QuoineAPIException
-
get_executions_since_time
(product_id, timestamp, limit=None) Get a list of executions after a particular time (Executions are sorted in ASCENDING order)
Note this call has an optional limit parameter but no paging.
https://developers.quoine.com/#get-executions-by-timestamp
Parameters: - product_id (int) – required
- timestamp (int (Unix timestamps in seconds)) – Only show executions at or after this timestamp
- limit (int) – How many executions should be returned. Must be <= 1000. Default is 20
import time since = int(time.time()) executions = client.get_executions_since_time( product_id=1, timestamp=since, limit=50)
Returns: API response [ { "id": 960598, "quantity": "5.6", "price": "431.89", "taker_side": "buy", "created_at": 1456705487 }, { "id": 960603, "quantity": "0.06", "price": "431.74", "taker_side": "buy", "created_at": 1456705564 } ]
Raises: QuoineResponseException, QuoineAPIException
-
get_my_executions
(product_id, limit=None, page=None) Get list of your executions by product with pagination
https://developers.quoine.com/#get-your-executions
Parameters: - product_id (int) – required
- limit (int) – Limit execution per request
- page (int) – Page
executions = client.get_my_executions(product_id=1)
Returns: API response { "models": [ { "id": 1001232, "quantity": "0.37153179", "price": "390.0", "taker_side": "sell", "my_side": "sell", "created_at": 1457193798 } ], "current_page": 1, "total_pages": 2 }
Raises: QuoineResponseException, QuoineAPIException
-
Interest Rates Endpoints¶
-
class
quoine.client.
Quoinex
(api_token_id, api_secret, vendor_id=None, language=None)[source] -
get_interest_rate_ladder
(currency) Get a list of executions after a particular time (Executions are sorted in ASCENDING order)
https://developers.quoine.com/#interest-rates
Parameters: currency (string) – required (i.e. USD) ladder = client.get_interest_rate_ladder(currency='USD')
Returns: API response { "bids": [ [ "0.00020", "23617.81698" ], [ "0.00040", "50050.42000" ], [ "0.00050", "100000.00000" ] ], "asks": [ ] }
Raises: QuoineResponseException, QuoineAPIException
-
Order Endpoints¶
-
class
quoine.client.
Quoinex
(api_token_id, api_secret, vendor_id=None, language=None)[source] -
cancel_order
(order_id) Cancel an order
https://developers.quoine.com/#cancel-an-order
Parameters: order_id (int) – required result = client.cancel_order(order_id=2157479)
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "cancelled", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD" }
Raises: QuoineResponseException, QuoineAPIException
-
create_limit_buy
(product_id, quantity, price) Create a limit spot buy order
https://developers.quoine.com/#orders
Parameters: - product_id (int) – required
- quantity (string) – required quantity to buy or sell
- price (string) – required price per unit of cryptocurrency
order = client.create_limit_buy( product_id=1, quantity='100', price='0.00001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
create_limit_sell
(product_id, quantity, price) Create a limit spot sell order
https://developers.quoine.com/#orders
Parameters: - product_id (int) – required
- quantity (string) – required quantity to buy or sell
- price (string) – required price per unit of cryptocurrency
order = client.create_limit_sell( product_id=1, quantity='100', price='0.00001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
create_margin_order
(order_type, product_id, side, quantity, price, leverage_level=2, price_range=None, funding_currency=None, order_direction=None) Create a leveraged margin order of type limit, market, or market with range
Only available on Quoinex
To trade at any specific leverage level, you will first need to go to margin trading dashboard, click on that leverage level and then confirm to get authorized. Or you can do it using the update_leverage_level function
https://developers.quoine.com/#orders
Parameters: - order_type (string) – required - limit, market or market_with_range
- product_id (int) – required
- side (string) – required - buy or sell
- quantity (string) – required quantity to buy or sell
- price (string) – required price per unit of cryptocurrency
- leverage_level (int) – optional - 2, 4, 5, 10 or 25 (default 2)
- price_range (string) – optional - For order_type of market_with_range only, slippage of the order.
- funding_currency (string) – optional - Currency used to fund the trade with. Default is quoted currency
order = client.create_order( type=Quoinex.ORDER_TYPE_LIMIT product_id=1, side=Quoinex.SIDE_BUY, quantity='100', price='0.00001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
create_market_buy
(product_id, quantity, price_range=None) Create a market spot buy order
https://developers.quoine.com/#orders
Parameters: - product_id (int) – required
- quantity (string) – required quantity to buy or sell
- price_range (string) – optional - slippage of the order.
order = client.create_market_buy( product_id=1, quantity='100') # place a market buy with range for slippage order = client.create_market_buy( product_id=1, quantity='100', price_range='0.001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
create_market_sell
(product_id, quantity, price_range=None) Create a market spot sell order
https://developers.quoine.com/#orders
Parameters: - product_id (int) – required
- quantity (string) – required quantity to buy or sell
- price_range (string) – optional - slippage of the order.
order = client.create_market_sell( product_id=1, quantity='100') # place a market sell with range for slippage order = client.create_market_sell( product_id=1, quantity='100', price_range='0.001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
create_order
(order_type, product_id, side, quantity, price=None, price_range=None) Create a limit, market or market with range spot order. This function gives full flexibility for spot orders.
https://developers.quoine.com/#orders
Parameters: - order_type (string) – required - limit, market or market_with_range
- product_id (int) – required
- side (string) – required - buy or sell
- quantity (string) – required quantity to buy or sell
- price (string) – required price per unit of cryptocurrency
- price_range (string) – optional For order_type of market_with_range only, slippage of the order.
order = client.create_order( type=Quoinex.ORDER_TYPE_LIMIT product_id=1, side=Quoinex.SIDE_BUY, quantity='100', price='0.00001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
get_order
(order_id) Get an order
https://developers.quoine.com/#get-an-order
Parameters: order_id (int) – required order = client.get_order(order_id=2157479)
Returns: API response { "id": 2157479, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.01", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "filled", "leverage_level": 2, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, "executions": [ { "id": 4566133, "quantity": "0.01", "price": "500.0", "taker_side": "buy", "my_side": "sell", "created_at": 1465396785 } ] }
Raises: QuoineResponseException, QuoineAPIException
-
get_order_trades
(order_id) Get an orders trades
https://developers.quoine.com/#get-an-order’s-trades
Parameters: order_id (int) – required trades = client.get_order_trades(order_id=2157479)
Returns: API response [ { "id": 57896, "currency_pair_code": "BTCUSD", "status": "closed", "side": "short", "margin_used": "0.83588", "open_quantity": "0.01", "close_quantity": "0.0", "quantity": "0.01", "leverage_level": 5, "product_code": "CASH", "product_id": 1, "open_price": "417.65", "close_price": "417.0", "trader_id": 3020, "open_pnl": "0.0", "close_pnl": "0.0065", "pnl": "0.0065", "stop_loss": "0.0", "take_profit": "0.0", "funding_currency": "USD", "created_at": 1456250726, "updated_at": 1456251837, "close_fee": "0.0", "total_interest": "0.02", "daily_interest": "0.02" } ]
Raises: QuoineResponseException, QuoineAPIException
-
get_orders
(funding_currency=None, product_id=None, status=None, with_details=False, limit=None, page=None) Get a list of orders using filters with pagination
https://developers.quoine.com/#get-orders
Parameters: - funding_currency (string) – optional - filter orders based on funding currency
- product_id (int) – optional - filter orders based on product
- status (string) – optional - filter orders based on status
- with_details (bool) – optional - return full order details (attributes between *) including executions
- limit (int) – optional - page limit
- page (int) – optional - page number
orders = client.get_orders(product_id=1, limit=10)
Returns: API response { "models": [ { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "unwound_trade_leverage_level": null, "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "executions": [] } ], "current_page": 1, "total_pages": 1 }
Raises: QuoineResponseException, QuoineAPIException
-
update_live_order
(order_id, quantity=None, price=None) Update a live order
https://developers.quoine.com/#edit-a-live-order
Parameters: - order_id (int) – required
- quantity (string) – optional - one or both of quantity or price should be set
- price (string) – optional - one or both of quantity or price should be set
order = client.update_live_order( order_id=2157479, quantity='101', price='0.001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "cancelled", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD" }
Raises: QuoineResponseException, QuoineAPIException
-
Accounts Endpoints¶
-
class
quoine.client.
Quoinex
(api_token_id, api_secret, vendor_id=None, language=None)[source] -
create_fiat_account
(currency) Create a fiat account for a currency
https://developers.quoine.com/#create-a-fiat-account
Parameters: currency (string) – required account = client.create_fiat_accounts(currency='USD')
Returns: API response { "id": 5595, "currency": "USD", "currency_symbol": "$", "balance": "0.0", "pusher_channel": "user_3122_account_usd", "lowest_offer_interest_rate": "0.00020", "highest_offer_interest_rate": "0.00060", "exchange_rate": "1.0", "currency_type": "fiat", "margin": "0.0", "free_margin": "0.0" }
Raises: QuoineResponseException, QuoineAPIException
-
get_account_balances
() Get all account balances
https://developers.quoine.com/#get-all-account-balances
account = client.get_account_balances()
Returns: API response [ { "currency": "BTC", "balance": "0.04925688" }, { "currency": "USD", "balance": "7.17696" }, { "currency": "JPY", "balance": "356.01377" } ]
Raises: QuoineResponseException, QuoineAPIException
-
get_crypto_accounts
() Get list of crypto accounts
https://developers.quoine.com/#get-crypto-accounts
accounts = client.get_crypto_accounts()
Returns: API response [ { "id": 4668, "balance": "4.99", "address": "1F25zWAQ1BAAmppNxLV3KtK6aTNhxNg5Hg", "currency": "BTC", "currency_symbol": "฿", "pusher_channel": "user_3020_account_btc", "minimum_withdraw": 0.02, "lowest_offer_interest_rate": "0.00049", "highest_offer_interest_rate": "0.05000", "currency_type": "crypto" } ]
Raises: QuoineResponseException, QuoineAPIException
-
get_fiat_accounts
() Get list of fiat accounts
https://developers.quoine.com/#get-fiat-accounts
accounts = client.get_fiat_accounts()
Returns: API response [ { "id": 4695, "currency": "USD", "currency_symbol": "$", "balance": "10000.1773", "pusher_channel": "user_3020_account_usd", "lowest_offer_interest_rate": "0.00020", "highest_offer_interest_rate": "0.00060", "exchange_rate": "1.0", "currency_type": "fiat", "margin": "0.0", "free_margin": "10000.1773" } ]
Raises: QuoineResponseException, QuoineAPIException
-
Assets Lending Endpoints¶
-
class
quoine.client.
Quoinex
(api_token_id, api_secret, vendor_id=None, language=None)[source] -
close_loan_bid
(loan_bid_id) Close loan bid
https://developers.quoine.com/#close-loan-bid
Parameters: loan_bid_id (int) – load bid Id Returns: API response Raises: QuoineResponseException, QuoineAPIException { "id": 3580, "bidask_type": "limit", "quantity": "50.0", "currency": "USD", "side": "bid", "filled_quantity": "0.0", "status": "closed", "rate": "0.0007", "user_id": 3020 }
-
create_loan_bid
(rate, quantity, currency) Create a loan bid
https://developers.quoine.com/#create-a-loan-bid
Parameters: - rate (string) – daily interest rate, e.g 0.0002 (0.02%), must be <= 0.07%
- quantity (string) – amount to lend
- currency (string) – lending currency (all available in the system except JPY)
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 3580, "bidask_type": "limit", "quantity": "50.0", "currency": "USD", "side": "bid", "filled_quantity": "0.0", "status": "live", "rate": "0.0002", "user_id": 3020 }
-
get_loan_bid
(currency, limit=None, page=None) Get loan bids
https://developers.quoine.com/#get-loan-bids
Parameters: - currency (string) – lending currency (all available in the system except JPY)
- limit (int) – Limit execution per request
- page (int) – Page
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 3580, "bidask_type": "limit", "quantity": "50.0", "currency": "USD", "side": "bid", "filled_quantity": "0.0", "status": "live", "rate": "0.0002", "user_id": 3020 }
-
get_loans
(currency, limit=None, page=None) Get loans
https://developers.quoine.com/#get-loans
Parameters: - currency (string) – lending currency (all available in the system except JPY)
- limit (int) – Limit execution per request
- page (int) – Page
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "models": [ { "id": 144825, "quantity": "495.1048", "rate": "0.0005", "created_at": 1464168246, "lender_id": 312, "borrower_id": 5712, "status": "open", "currency": "JPY", "fund_reloaned": true } ], "current_page": 1, "total_pages": 1 }
-
update_loan
(loan_id, fund_reloaned=None) Update a loan
https://developers.quoine.com/#update-a-loan
TODO: work out what else we can update
Parameters: - loan_id (int) – Loan Id
- fund_reloaned (bool) – optional
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 144825, "quantity": "495.1048", "rate": "0.0005", "created_at": 1464168246, "lender_id": 312, "borrower_id": 5712, "status": "open", "currency": "JPY", "fund_reloaned": false }
-
Trading Accounts Endpoints¶
-
class
quoine.client.
Quoinex
(api_token_id, api_secret, vendor_id=None, language=None)[source] -
get_trading_account
(account_id) Get a Trading Account
https://developers.quoine.com/#get-a-trading-account
Parameters: account_id (int) – Trading Account Id Returns: API response Raises: QuoineResponseException, QuoineAPIException { "id": 1759, "leverage_level": 10, "max_leverage_level": 10, "pnl": "0.0", "equity": "10000.1773", "margin": "4.2302", "free_margin": "9995.9471", "trader_id": 4807, "status": "active", "product_code": "CASH", "currency_pair_code": "BTCUSD", "position": "0.1", "balance": "10000.1773", "created_at": 1421992165, "updated_at": 1457242996, "pusher_channel": "trading_account_1759", "margin_percent": "0.1", "product_id": 1, "funding_currency": "USD" }
-
get_trading_accounts
() Get Trading Accounts
https://developers.quoine.com/#get-trading-accounts
Returns: API response Raises: QuoineResponseException, QuoineAPIException [ { "id": 1759, "leverage_level": 10, "max_leverage_level": 10, "pnl": "0.0", "equity": "10000.1773", "margin": "4.2302", "free_margin": "9995.9471", "trader_id": 4807, "status": "active", "product_code": "CASH", "currency_pair_code": "BTCUSD", "position": "0.1", "balance": "10000.1773", "created_at": 1421992165, "updated_at": 1457242996, "pusher_channel": "trading_account_1759", "margin_percent": "0.1", "product_id": 1, "funding_currency": "USD", "base_open_price": 0, "long_summary": { "pnl": "0.0", "position": "0.0", "base_open_price": "0.0" }, "short_summary": { "pnl": "0.0", "position": "0.0", "base_open_price": "0.0" } }, #... ]
-
update_leverage_level
(account_id, leverage_level) Update Trading account leverage level
Only available on Quoinex
https://developers.quoine.com/#update-leverage-level
Parameters: - account_id (int) – Trading Account Id
- leverage_level (int) – New leverage level
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 1759, "leverage_level": 25, "max_leverage_level": 25, "pnl": "0.0", "equity": "10000.1773", "margin": "4.2302", "free_margin": "9995.9471", "trader_id": 4807, "status": "active", "product_code": "CASH", "currency_pair_code": "BTCUSD", "position": "0.1", "balance": "10000.1773", "created_at": 1421992165, "updated_at": 1457242996, "pusher_channel": "trading_account_1759", "margin_percent": "0.1", "product_id": 1, "funding_currency": "USD" }
-
Trades Endpoints¶
-
class
quoine.client.
Quoinex
(api_token_id, api_secret, vendor_id=None, language=None)[source] -
close_all_trades
(side=None) Close all trades
https://developers.quoine.com/#close-all-trade
Parameters: side (string) – optional - Close all trades of this side. Close trades of both side if left blank Returns: API response Raises: QuoineResponseException, QuoineAPIException [ { "id": 57896, "currency_pair_code": "BTCUSD", "status": "closed", "side": "short", "margin_used": "0.83588", "open_quantity": "0.01", "close_quantity": "0.0", "quantity": "0.01", "leverage_level": 5, "product_code": "CASH", "product_id": 1, "open_price": "417.65", "close_price": "417.0", "trader_id": 3020, "open_pnl": "0.0", "close_pnl": "0.0065", "pnl": "0.0065", "stop_loss": "0.0", "take_profit": "0.0", "funding_currency": "USD", "created_at": 1456250726, "updated_at": 1456251837, "close_fee": "0.0", "total_interest": "0.02", "daily_interest": "0.02" } ]
-
close_trade
(trade_id, closed_quantity=None) Close a trade
https://developers.quoine.com/#close-a-trade
Parameters: - trade_id (int) – Trade Id
- closed_quantity (string) – optional - The quantity you want to close
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 57896, "currency_pair_code": "BTCUSD", "status": "closed", "side": "short", "margin_used": "0.83588", "open_quantity": "0.01", "close_quantity": "0.0", "quantity": "0.01", "leverage_level": 5, "product_code": "CASH", "product_id": 1, "open_price": "417.65", "close_price": "417.0", "trader_id": 3020, "open_pnl": "0.0", "close_pnl": "0.0065", "pnl": "0.0065", "stop_loss": "0.0", "take_profit": "0.0", "funding_currency": "USD", "created_at": 1456250726, "updated_at": 1456251837, "close_fee": "0.0", "total_interest": "0.02", "daily_interest": "0.02" }
-
get_trade_loans
(trade_id) Get a trade’s loans
https://developers.quoine.com/#get-a-trade’s-loans
Parameters: trade_id (int) – Trade Id Returns: API response Raises: QuoineResponseException, QuoineAPIException [ { "id": 103520, "quantity": "42.302", "rate": "0.0002", "created_at": 1461998432, "lender_id": 100, "borrower_id": 3020, "status": "open", "currency": "USD", "fund_reloaned": true } ]
-
get_trades
(funding_currency=None, status=None, limit=None, page=None) Get Trades
https://developers.quoine.com/#get-trades
Parameters: - funding_currency (string) – optional - get trades of a particular funding currency
- status (string) – optional - open or closed
- limit (int) – Limit trades per request
- page (int) – Page
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "models": [ { "id": 57896, "currency_pair_code": "BTCUSD", "status": "open", "side": "short", "margin_used": "0.83588", "open_quantity": "0.01", "close_quantity": "0.0", "quantity": "0.01", "leverage_level": 5, "product_code": "CASH", "product_id": 1, "open_price": "417.65", "close_price": "417.0", "trader_id": 3020, "open_pnl": "0.0", "close_pnl": "0.0", "pnl": "0.0065", "stop_loss": "0.0", "take_profit": "0.0", "funding_currency": "USD", "created_at": 1456250726, "updated_at": 1456251837, "close_fee": "0.0", "total_interest": "0.02", "daily_interest": "0.02" }, #... ], "current_page": 1, "total_pages": 1 }
-
update_trade
(trade_id, stop_loss, take_profit) Update a trade
https://developers.quoine.com/#update-a-trade
Parameters: - trade_id (int) – Trade Id
- stop_loss (string) – Stop Loss price
- take_profit (string) – Take Profit price
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 57897, "currency_pair_code": "BTCUSD", "status": "open", "side": "short", "margin_used": "0.83588", "open_quantity": "0.01", "close_quantity": "0.0", "quantity": "0.01", "leverage_level": 5, "product_code": "CASH", "product_id": 1, "open_price": "417.65", "close_price": "0", "trader_id": 3020, "open_pnl": "0.0", "close_pnl": "0.0065", "pnl": "0.0065", "stop_loss": "300.0", "take_profit": "600.0", "funding_currency": "USD", "created_at": 1456250726, "updated_at": 1456251837, "close_fee": "0.0", "total_interest": "0.02", "daily_interest": "0.02" }
-
Exceptions¶
QuoineResponseException¶
Raised if a non JSON response is returned
QuoineAPIException¶
On an API call error a quoine.exceptions.QuoineAPIException will be raised.
The exception provides access to the
- status_code - response status code
- response - response object
- messages - Quoine error message dictionary
- request - request object if available
try:
client.get_products()
except QuoineAPIException as e:
print(e.status_code)
print(e.messages)
Changelog¶
v0.1.0 - 2017-11-07¶
Added
- Qryptos and Quoinex client interface
- Coverage for all main endpoints
- Constants for order type, side and status
- Full documentation
Quoine API¶
client module¶
-
class
quoine.client.
Quoine
(api_token_id, api_secret, vendor_id=None, language=None)[source]¶ Bases:
object
-
API_URL
= 'https://api.quoine.com'¶
-
API_VERSION
= '2'¶
-
SIDE_BUY
= 'buy'¶
-
SIDE_SELL
= 'sell'¶
-
STATUS_FILLED
= 'filled'¶
-
STATUS_LIVE
= 'live'¶
-
STATUS_PARTIAL
= 'partially_filled'¶
-
STATUS_CANCELLED
= 'cancelled'¶
-
ORDER_TYPE_LIMIT
= 'limit'¶
-
ORDER_TYPE_MARKET
= 'market'¶
-
ORDER_TYPE_MARKET_RANGE
= 'market_with_range'¶
-
LEVERAGE_LEVEL_2
= 2¶
-
LEVERAGE_LEVEL_4
= 4¶
-
LEVERAGE_LEVEL_5
= 5¶
-
LEVERAGE_LEVEL_10
= 10¶
-
LEVERAGE_LEVEL_25
= 25¶
-
MARGIN_ORDER_DIRECTION_ONE
= 'one_direction'¶
-
MARGIN_ORDER_DIRECTION_TWO
= 'two_direction'¶
-
MARGIN_ORDER_DIRECTION_NET
= 'netout'¶
-
__init__
(api_token_id, api_secret, vendor_id=None, language=None)[source]¶ Quoine API Client constructor
Parameters: - api_token_id (str.) – Api Token Id
- api_secret (str.) – Api Secret
- vendor_id (str.) – Vendor ID optional
- language (str.) – Langague optional
-
VENDOR_ID
= None¶
-
LANGUAGE
= 'en'¶
-
get_products
()[source]¶ Get the list of all available products
https://developers.quoine.com/#products
products = client.get_products()
Returns: list - List of product dictionaries [ { "id": 5, "product_type": "CurrencyPair", "code": "CASH", "name": "CASH Trading", "market_ask": "48203.05", "market_bid": "48188.15", "indicator": -1, "currency": "JPY", "currency_pair_code": "BTCJPY", "symbol": "¥", "fiat_minimum_withdraw": "1500.0", "pusher_channel": "product_cash_btcjpy_5", "taker_fee": "0.0", "maker_fee": "0.0", "low_market_bid": "47630.99", "high_market_ask": "48396.71", "volume_24h": "2915.627366519999999998", "last_price_24h": "48217.2", "last_traded_price": "48203.05", "last_traded_quantity": "1.0", "quoted_currency": "JPY", "base_currency": "BTC", "exchange_rate": "0.009398151671149725" }, #... ]
Raises: QuoineResponseException, QuoineAPIException
-
get_product
(product_id)[source]¶ Get product details
https://developers.quoine.com/#get-a-product
Parameters: product_id (int) – required product = client.get_product(1)
Returns: list - List of product dictionaries { "id": 5, "product_type": "CurrencyPair", "code": "CASH", "name": "CASH Trading", "market_ask": "48203.05", "market_bid": "48188.15", "indicator": -1, "currency": "JPY", "currency_pair_code": "BTCJPY", "symbol": "¥", "fiat_minimum_withdraw": "1500.0", "pusher_channel": "product_cash_btcjpy_5", "taker_fee": "0.0", "maker_fee": "0.0", "low_market_bid": "47630.99", "high_market_ask": "48396.71", "volume_24h": "2915.62736652", "last_price_24h": "48217.2", "last_traded_price": "48203.05", "last_traded_quantity": "1.0", "quoted_currency": "JPY", "base_currency": "BTC", "exchange_rate": "0.009398151671149725" }
Raises: QuoineResponseException, QuoineAPIException
-
get_order_book
(product_id, full=False)[source]¶ Get order book for a product
https://developers.quoine.com/#get-order-book
Parameters: - product_id (int) – required
- full (bool) – default False, optional
order_book = client.get_order_book(1, full=False)
Returns: API response { "buy_price_levels": [ [ "416.23000", # price "1.75000" # amount ], #... ], "sell_price_levels": [ [ "416.47000", # price "0.28675" # amount ], #... ] }
Raises: QuoineResponseException, QuoineAPIException
-
get_executions
(product_id, limit=None, page=None)[source]¶ Get a list of recent executions from a product (Executions are sorted in DESCENDING order - Latest first)
https://developers.quoine.com/#executions
Parameters: - product_id (int) – required
- limit (int) – How many executions should be returned. Must be <= 1000. Default is 20
- page (int) – From what page the executions should be returned, e.g if limit=20 and page=2, the response would start from the 21st execution. Default is 1
executions = client.get_executions( product_id=1, limit=200)
Returns: API response { "models": [ { "id": 1011880, "quantity": "6.118954", "price": "409.78", "taker_side": "sell", "created_at": 1457370745 }, { "id": 1011791, "quantity": "1.15", "price": "409.12", "taker_side": "sell", "created_at": 1457365585 } ], "current_page": 2, "total_pages": 1686 }
Raises: QuoineResponseException, QuoineAPIException
-
get_executions_since_time
(product_id, timestamp, limit=None)[source]¶ Get a list of executions after a particular time (Executions are sorted in ASCENDING order)
Note this call has an optional limit parameter but no paging.
https://developers.quoine.com/#get-executions-by-timestamp
Parameters: - product_id (int) – required
- timestamp (int (Unix timestamps in seconds)) – Only show executions at or after this timestamp
- limit (int) – How many executions should be returned. Must be <= 1000. Default is 20
import time since = int(time.time()) executions = client.get_executions_since_time( product_id=1, timestamp=since, limit=50)
Returns: API response [ { "id": 960598, "quantity": "5.6", "price": "431.89", "taker_side": "buy", "created_at": 1456705487 }, { "id": 960603, "quantity": "0.06", "price": "431.74", "taker_side": "buy", "created_at": 1456705564 } ]
Raises: QuoineResponseException, QuoineAPIException
-
get_interest_rate_ladder
(currency)[source]¶ Get a list of executions after a particular time (Executions are sorted in ASCENDING order)
https://developers.quoine.com/#interest-rates
Parameters: currency (string) – required (i.e. USD) ladder = client.get_interest_rate_ladder(currency='USD')
Returns: API response { "bids": [ [ "0.00020", "23617.81698" ], [ "0.00040", "50050.42000" ], [ "0.00050", "100000.00000" ] ], "asks": [ ] }
Raises: QuoineResponseException, QuoineAPIException
-
create_order
(order_type, product_id, side, quantity, price=None, price_range=None)[source]¶ Create a limit, market or market with range spot order. This function gives full flexibility for spot orders.
https://developers.quoine.com/#orders
Parameters: - order_type (string) – required - limit, market or market_with_range
- product_id (int) – required
- side (string) – required - buy or sell
- quantity (string) – required quantity to buy or sell
- price (string) – required price per unit of cryptocurrency
- price_range (string) – optional For order_type of market_with_range only, slippage of the order.
order = client.create_order( type=Quoinex.ORDER_TYPE_LIMIT product_id=1, side=Quoinex.SIDE_BUY, quantity='100', price='0.00001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
create_limit_buy
(product_id, quantity, price)[source]¶ Create a limit spot buy order
https://developers.quoine.com/#orders
Parameters: - product_id (int) – required
- quantity (string) – required quantity to buy or sell
- price (string) – required price per unit of cryptocurrency
order = client.create_limit_buy( product_id=1, quantity='100', price='0.00001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
create_limit_sell
(product_id, quantity, price)[source]¶ Create a limit spot sell order
https://developers.quoine.com/#orders
Parameters: - product_id (int) – required
- quantity (string) – required quantity to buy or sell
- price (string) – required price per unit of cryptocurrency
order = client.create_limit_sell( product_id=1, quantity='100', price='0.00001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
create_market_buy
(product_id, quantity, price_range=None)[source]¶ Create a market spot buy order
https://developers.quoine.com/#orders
Parameters: - product_id (int) – required
- quantity (string) – required quantity to buy or sell
- price_range (string) – optional - slippage of the order.
order = client.create_market_buy( product_id=1, quantity='100') # place a market buy with range for slippage order = client.create_market_buy( product_id=1, quantity='100', price_range='0.001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
create_market_sell
(product_id, quantity, price_range=None)[source]¶ Create a market spot sell order
https://developers.quoine.com/#orders
Parameters: - product_id (int) – required
- quantity (string) – required quantity to buy or sell
- price_range (string) – optional - slippage of the order.
order = client.create_market_sell( product_id=1, quantity='100') # place a market sell with range for slippage order = client.create_market_sell( product_id=1, quantity='100', price_range='0.001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
create_margin_order
(order_type, product_id, side, quantity, price, leverage_level=2, price_range=None, funding_currency=None, order_direction=None)[source]¶ Create a leveraged margin order of type limit, market, or market with range
Only available on Quoinex
To trade at any specific leverage level, you will first need to go to margin trading dashboard, click on that leverage level and then confirm to get authorized. Or you can do it using the update_leverage_level function
https://developers.quoine.com/#orders
Parameters: - order_type (string) – required - limit, market or market_with_range
- product_id (int) – required
- side (string) – required - buy or sell
- quantity (string) – required quantity to buy or sell
- price (string) – required price per unit of cryptocurrency
- leverage_level (int) – optional - 2, 4, 5, 10 or 25 (default 2)
- price_range (string) – optional - For order_type of market_with_range only, slippage of the order.
- funding_currency (string) – optional - Currency used to fund the trade with. Default is quoted currency
order = client.create_order( type=Quoinex.ORDER_TYPE_LIMIT product_id=1, side=Quoinex.SIDE_BUY, quantity='100', price='0.00001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, }
Raises: QuoineResponseException, QuoineAPIException
-
get_order
(order_id)[source]¶ Get an order
https://developers.quoine.com/#get-an-order
Parameters: order_id (int) – required order = client.get_order(order_id=2157479)
Returns: API response { "id": 2157479, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.01", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "filled", "leverage_level": 2, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "unwound_trade_leverage_level": null, "executions": [ { "id": 4566133, "quantity": "0.01", "price": "500.0", "taker_side": "buy", "my_side": "sell", "created_at": 1465396785 } ] }
Raises: QuoineResponseException, QuoineAPIException
-
get_orders
(funding_currency=None, product_id=None, status=None, with_details=False, limit=None, page=None)[source]¶ Get a list of orders using filters with pagination
https://developers.quoine.com/#get-orders
Parameters: - funding_currency (string) – optional - filter orders based on funding currency
- product_id (int) – optional - filter orders based on product
- status (string) – optional - filter orders based on status
- with_details (bool) – optional - return full order details (attributes between *) including executions
- limit (int) – optional - page limit
- page (int) – optional - page number
orders = client.get_orders(product_id=1, limit=10)
Returns: API response { "models": [ { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "live", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD", "unwound_trade_leverage_level": null, "order_fee": "0.0", "margin_used": "0.0", "margin_interest": "0.0", "executions": [] } ], "current_page": 1, "total_pages": 1 }
Raises: QuoineResponseException, QuoineAPIException
-
cancel_order
(order_id)[source]¶ Cancel an order
https://developers.quoine.com/#cancel-an-order
Parameters: order_id (int) – required result = client.cancel_order(order_id=2157479)
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "cancelled", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD" }
Raises: QuoineResponseException, QuoineAPIException
-
update_live_order
(order_id, quantity=None, price=None)[source]¶ Update a live order
https://developers.quoine.com/#edit-a-live-order
Parameters: - order_id (int) – required
- quantity (string) – optional - one or both of quantity or price should be set
- price (string) – optional - one or both of quantity or price should be set
order = client.update_live_order( order_id=2157479, quantity='101', price='0.001')
Returns: API response { "id": 2157474, "order_type": "limit", "quantity": "0.01", "disc_quantity": "0.0", "iceberg_total_quantity": "0.0", "side": "sell", "filled_quantity": "0.0", "price": "500.0", "created_at": 1462123639, "updated_at": 1462123639, "status": "cancelled", "leverage_level": 1, "source_exchange": "QUOINE", "product_id": 1, "product_code": "CASH", "funding_currency": "USD", "currency_pair_code": "BTCUSD" }
Raises: QuoineResponseException, QuoineAPIException
-
get_order_trades
(order_id)[source]¶ Get an orders trades
https://developers.quoine.com/#get-an-order’s-trades
Parameters: order_id (int) – required trades = client.get_order_trades(order_id=2157479)
Returns: API response [ { "id": 57896, "currency_pair_code": "BTCUSD", "status": "closed", "side": "short", "margin_used": "0.83588", "open_quantity": "0.01", "close_quantity": "0.0", "quantity": "0.01", "leverage_level": 5, "product_code": "CASH", "product_id": 1, "open_price": "417.65", "close_price": "417.0", "trader_id": 3020, "open_pnl": "0.0", "close_pnl": "0.0065", "pnl": "0.0065", "stop_loss": "0.0", "take_profit": "0.0", "funding_currency": "USD", "created_at": 1456250726, "updated_at": 1456251837, "close_fee": "0.0", "total_interest": "0.02", "daily_interest": "0.02" } ]
Raises: QuoineResponseException, QuoineAPIException
-
get_my_executions
(product_id, limit=None, page=None)[source]¶ Get list of your executions by product with pagination
https://developers.quoine.com/#get-your-executions
Parameters: - product_id (int) – required
- limit (int) – Limit execution per request
- page (int) – Page
executions = client.get_my_executions(product_id=1)
Returns: API response { "models": [ { "id": 1001232, "quantity": "0.37153179", "price": "390.0", "taker_side": "sell", "my_side": "sell", "created_at": 1457193798 } ], "current_page": 1, "total_pages": 2 }
Raises: QuoineResponseException, QuoineAPIException
-
get_fiat_accounts
()[source]¶ Get list of fiat accounts
https://developers.quoine.com/#get-fiat-accounts
accounts = client.get_fiat_accounts()
Returns: API response [ { "id": 4695, "currency": "USD", "currency_symbol": "$", "balance": "10000.1773", "pusher_channel": "user_3020_account_usd", "lowest_offer_interest_rate": "0.00020", "highest_offer_interest_rate": "0.00060", "exchange_rate": "1.0", "currency_type": "fiat", "margin": "0.0", "free_margin": "10000.1773" } ]
Raises: QuoineResponseException, QuoineAPIException
-
create_fiat_account
(currency)[source]¶ Create a fiat account for a currency
https://developers.quoine.com/#create-a-fiat-account
Parameters: currency (string) – required account = client.create_fiat_accounts(currency='USD')
Returns: API response { "id": 5595, "currency": "USD", "currency_symbol": "$", "balance": "0.0", "pusher_channel": "user_3122_account_usd", "lowest_offer_interest_rate": "0.00020", "highest_offer_interest_rate": "0.00060", "exchange_rate": "1.0", "currency_type": "fiat", "margin": "0.0", "free_margin": "0.0" }
Raises: QuoineResponseException, QuoineAPIException
-
get_crypto_accounts
()[source]¶ Get list of crypto accounts
https://developers.quoine.com/#get-crypto-accounts
accounts = client.get_crypto_accounts()
Returns: API response [ { "id": 4668, "balance": "4.99", "address": "1F25zWAQ1BAAmppNxLV3KtK6aTNhxNg5Hg", "currency": "BTC", "currency_symbol": "฿", "pusher_channel": "user_3020_account_btc", "minimum_withdraw": 0.02, "lowest_offer_interest_rate": "0.00049", "highest_offer_interest_rate": "0.05000", "currency_type": "crypto" } ]
Raises: QuoineResponseException, QuoineAPIException
-
get_account_balances
()[source]¶ Get all account balances
https://developers.quoine.com/#get-all-account-balances
account = client.get_account_balances()
Returns: API response [ { "currency": "BTC", "balance": "0.04925688" }, { "currency": "USD", "balance": "7.17696" }, { "currency": "JPY", "balance": "356.01377" } ]
Raises: QuoineResponseException, QuoineAPIException
-
get_main_asset
()[source]¶ Get name of your main asset with balance
Returns: API response Raises: QuoineResponseException, QuoineAPIException { "currency": "JPY", "total_amount": "23050.04" }
-
create_loan_bid
(rate, quantity, currency)[source]¶ Create a loan bid
https://developers.quoine.com/#create-a-loan-bid
Parameters: - rate (string) – daily interest rate, e.g 0.0002 (0.02%), must be <= 0.07%
- quantity (string) – amount to lend
- currency (string) – lending currency (all available in the system except JPY)
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 3580, "bidask_type": "limit", "quantity": "50.0", "currency": "USD", "side": "bid", "filled_quantity": "0.0", "status": "live", "rate": "0.0002", "user_id": 3020 }
-
get_loan_bid
(currency, limit=None, page=None)[source]¶ Get loan bids
https://developers.quoine.com/#get-loan-bids
Parameters: - currency (string) – lending currency (all available in the system except JPY)
- limit (int) – Limit execution per request
- page (int) – Page
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 3580, "bidask_type": "limit", "quantity": "50.0", "currency": "USD", "side": "bid", "filled_quantity": "0.0", "status": "live", "rate": "0.0002", "user_id": 3020 }
-
close_loan_bid
(loan_bid_id)[source]¶ Close loan bid
https://developers.quoine.com/#close-loan-bid
Parameters: loan_bid_id (int) – load bid Id Returns: API response Raises: QuoineResponseException, QuoineAPIException { "id": 3580, "bidask_type": "limit", "quantity": "50.0", "currency": "USD", "side": "bid", "filled_quantity": "0.0", "status": "closed", "rate": "0.0007", "user_id": 3020 }
-
get_loans
(currency, limit=None, page=None)[source]¶ Get loans
https://developers.quoine.com/#get-loans
Parameters: - currency (string) – lending currency (all available in the system except JPY)
- limit (int) – Limit execution per request
- page (int) – Page
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "models": [ { "id": 144825, "quantity": "495.1048", "rate": "0.0005", "created_at": 1464168246, "lender_id": 312, "borrower_id": 5712, "status": "open", "currency": "JPY", "fund_reloaned": true } ], "current_page": 1, "total_pages": 1 }
-
update_loan
(loan_id, fund_reloaned=None)[source]¶ Update a loan
https://developers.quoine.com/#update-a-loan
TODO: work out what else we can update
Parameters: - loan_id (int) – Loan Id
- fund_reloaned (bool) – optional
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 144825, "quantity": "495.1048", "rate": "0.0005", "created_at": 1464168246, "lender_id": 312, "borrower_id": 5712, "status": "open", "currency": "JPY", "fund_reloaned": false }
-
get_trading_accounts
()[source]¶ Get Trading Accounts
https://developers.quoine.com/#get-trading-accounts
Returns: API response Raises: QuoineResponseException, QuoineAPIException [ { "id": 1759, "leverage_level": 10, "max_leverage_level": 10, "pnl": "0.0", "equity": "10000.1773", "margin": "4.2302", "free_margin": "9995.9471", "trader_id": 4807, "status": "active", "product_code": "CASH", "currency_pair_code": "BTCUSD", "position": "0.1", "balance": "10000.1773", "created_at": 1421992165, "updated_at": 1457242996, "pusher_channel": "trading_account_1759", "margin_percent": "0.1", "product_id": 1, "funding_currency": "USD", "base_open_price": 0, "long_summary": { "pnl": "0.0", "position": "0.0", "base_open_price": "0.0" }, "short_summary": { "pnl": "0.0", "position": "0.0", "base_open_price": "0.0" } }, #... ]
-
get_trading_account
(account_id)[source]¶ Get a Trading Account
https://developers.quoine.com/#get-a-trading-account
Parameters: account_id (int) – Trading Account Id Returns: API response Raises: QuoineResponseException, QuoineAPIException { "id": 1759, "leverage_level": 10, "max_leverage_level": 10, "pnl": "0.0", "equity": "10000.1773", "margin": "4.2302", "free_margin": "9995.9471", "trader_id": 4807, "status": "active", "product_code": "CASH", "currency_pair_code": "BTCUSD", "position": "0.1", "balance": "10000.1773", "created_at": 1421992165, "updated_at": 1457242996, "pusher_channel": "trading_account_1759", "margin_percent": "0.1", "product_id": 1, "funding_currency": "USD" }
-
update_leverage_level
(account_id, leverage_level)[source]¶ Update Trading account leverage level
Only available on Quoinex
https://developers.quoine.com/#update-leverage-level
Parameters: - account_id (int) – Trading Account Id
- leverage_level (int) – New leverage level
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 1759, "leverage_level": 25, "max_leverage_level": 25, "pnl": "0.0", "equity": "10000.1773", "margin": "4.2302", "free_margin": "9995.9471", "trader_id": 4807, "status": "active", "product_code": "CASH", "currency_pair_code": "BTCUSD", "position": "0.1", "balance": "10000.1773", "created_at": 1421992165, "updated_at": 1457242996, "pusher_channel": "trading_account_1759", "margin_percent": "0.1", "product_id": 1, "funding_currency": "USD" }
-
get_trades
(funding_currency=None, status=None, limit=None, page=None)[source]¶ Get Trades
https://developers.quoine.com/#get-trades
Parameters: - funding_currency (string) – optional - get trades of a particular funding currency
- status (string) – optional - open or closed
- limit (int) – Limit trades per request
- page (int) – Page
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "models": [ { "id": 57896, "currency_pair_code": "BTCUSD", "status": "open", "side": "short", "margin_used": "0.83588", "open_quantity": "0.01", "close_quantity": "0.0", "quantity": "0.01", "leverage_level": 5, "product_code": "CASH", "product_id": 1, "open_price": "417.65", "close_price": "417.0", "trader_id": 3020, "open_pnl": "0.0", "close_pnl": "0.0", "pnl": "0.0065", "stop_loss": "0.0", "take_profit": "0.0", "funding_currency": "USD", "created_at": 1456250726, "updated_at": 1456251837, "close_fee": "0.0", "total_interest": "0.02", "daily_interest": "0.02" }, #... ], "current_page": 1, "total_pages": 1 }
-
close_trade
(trade_id, closed_quantity=None)[source]¶ Close a trade
https://developers.quoine.com/#close-a-trade
Parameters: - trade_id (int) – Trade Id
- closed_quantity (string) – optional - The quantity you want to close
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 57896, "currency_pair_code": "BTCUSD", "status": "closed", "side": "short", "margin_used": "0.83588", "open_quantity": "0.01", "close_quantity": "0.0", "quantity": "0.01", "leverage_level": 5, "product_code": "CASH", "product_id": 1, "open_price": "417.65", "close_price": "417.0", "trader_id": 3020, "open_pnl": "0.0", "close_pnl": "0.0065", "pnl": "0.0065", "stop_loss": "0.0", "take_profit": "0.0", "funding_currency": "USD", "created_at": 1456250726, "updated_at": 1456251837, "close_fee": "0.0", "total_interest": "0.02", "daily_interest": "0.02" }
-
close_all_trades
(side=None)[source]¶ Close all trades
https://developers.quoine.com/#close-all-trade
Parameters: side (string) – optional - Close all trades of this side. Close trades of both side if left blank Returns: API response Raises: QuoineResponseException, QuoineAPIException [ { "id": 57896, "currency_pair_code": "BTCUSD", "status": "closed", "side": "short", "margin_used": "0.83588", "open_quantity": "0.01", "close_quantity": "0.0", "quantity": "0.01", "leverage_level": 5, "product_code": "CASH", "product_id": 1, "open_price": "417.65", "close_price": "417.0", "trader_id": 3020, "open_pnl": "0.0", "close_pnl": "0.0065", "pnl": "0.0065", "stop_loss": "0.0", "take_profit": "0.0", "funding_currency": "USD", "created_at": 1456250726, "updated_at": 1456251837, "close_fee": "0.0", "total_interest": "0.02", "daily_interest": "0.02" } ]
-
update_trade
(trade_id, stop_loss, take_profit)[source]¶ Update a trade
https://developers.quoine.com/#update-a-trade
Parameters: - trade_id (int) – Trade Id
- stop_loss (string) – Stop Loss price
- take_profit (string) – Take Profit price
Returns: API response
Raises: QuoineResponseException, QuoineAPIException
{ "id": 57897, "currency_pair_code": "BTCUSD", "status": "open", "side": "short", "margin_used": "0.83588", "open_quantity": "0.01", "close_quantity": "0.0", "quantity": "0.01", "leverage_level": 5, "product_code": "CASH", "product_id": 1, "open_price": "417.65", "close_price": "0", "trader_id": 3020, "open_pnl": "0.0", "close_pnl": "0.0065", "pnl": "0.0065", "stop_loss": "300.0", "take_profit": "600.0", "funding_currency": "USD", "created_at": 1456250726, "updated_at": 1456251837, "close_fee": "0.0", "total_interest": "0.02", "daily_interest": "0.02" }
-
get_trade_loans
(trade_id)[source]¶ Get a trade’s loans
https://developers.quoine.com/#get-a-trade’s-loans
Parameters: trade_id (int) – Trade Id Returns: API response Raises: QuoineResponseException, QuoineAPIException [ { "id": 103520, "quantity": "42.302", "rate": "0.0002", "created_at": 1461998432, "lender_id": 100, "borrower_id": 3020, "status": "open", "currency": "USD", "fund_reloaned": true } ]
-
-
class
quoine.client.
Quoinex
(api_token_id, api_secret, vendor_id=None, language=None)[source]¶ Bases:
quoine.client.Quoine
-
class
quoine.client.
Qryptos
(api_token_id, api_secret, vendor_id=None, language=None)[source]¶ Bases:
quoine.client.Quoinex
-
API_URL
= 'https://api.qryptos.com'¶
-
exceptions module¶
-
exception
quoine.exceptions.
QuoineAPIException
(response)[source]¶ Bases:
exceptions.Exception
Exception class to handle general API Exceptions
code values
- HTTP 400: Bad Request
- There was an error with the request. The body of the response will have more info
- HTTP 401: Unauthorized
- Token is invalid. If your API key is wrong a 401 will also be served, so check the response body, it might be that the API_KEY is invalid.
- HTTP 422: Unprocessable Entity
- There was an error with the request. The body of the response will have more info. Some possible reasons: - Missing params - The format of data is wrong
- HTTP 429: Too Many Requests
- This status indicates that the user has sent too many requests in a given amount of time
- HTTP 503: Service Unavailable
- Many reasons, body will include details - An internal error on Authy. - Your application is accessing an API call you don’t have access too. - API usage limit. If you reach API usage limits a 503 will be returned, please wait until you can do the call again.
message format
{ "user": ["not_enough_fund"] }