bitshares.market module

class bitshares.market.Market(*args, **kwargs)[source]

Bases: bitshares.instance.BlockchainInstance, bitshares.market.Market

This class allows to easily access Markets on the blockchain for trading, etc.

Parameters:
Returns:

Blockchain Market

Return type:

dictionary with overloaded methods

Instances of this class are dictionaries that come with additional methods (see below) that allow dealing with a market and it’s corresponding functions.

This class tries to identify two assets as provided in the parameters in one of the following forms:

  • base and quote are valid assets (according to bitshares.asset.Asset)
  • base:quote separated with :
  • base/quote separated with /
  • base-quote separated with -

Note

Throughout this library, the quote symbol will be presented first (e.g. USD:BTS with USD being the quote), while the base only refers to a secondary asset for a trade. This means, if you call bitshares.market.Market.sell() or bitshares.market.Market.buy(), you will sell/buy only quote and obtain/pay only base.

accountopenorders(account=None)[source]

Returns open Orders.

Parameters:account (bitshares.account.Account) – Account name or instance of Account to show orders for in this market
accounttrades(account=None, limit=25)[source]

Returns your trade history for a given market, specified by the “currencyPair” parameter. You may also specify “all” to get the orderbooks of all markets.

Parameters:
  • currencyPair (str) – Return results for a particular market only (default: “all”)
  • limit (int) – Limit the amount of orders (default: 25)

Output Parameters:

  • type: sell or buy
  • rate: price for quote denoted in base per quote
  • amount: amount of quote
  • total: amount of base at asked price (amount/price)

Note

This call goes through the trade history and searches for your account, if there are no orders within limit trades, this call will return an empty array.

bitshares

Alias for the specific blockchain.

blockchain
blockchain_instance_class

alias of bitshares.instance.BlockchainInstance

buy(price, amount, expiration=None, killfill=False, account=None, returnOrderId=False, **kwargs)[source]

Places a buy order in a given market.

Parameters:
  • price (float) – price denoted in base/quote
  • amount (number) – Amount of quote to buy
  • expiration (number) – (optional) expiration time of the order in seconds (defaults to 7 days)
  • killfill (bool) – flag that indicates if the order shall be killed if it is not filled (defaults to False)
  • account (string) – Account name that executes that order
  • returnOrderId (string) – If set to “head” or “irreversible” the call will wait for the tx to appear in the head/irreversible block and add the key “orderid” to the tx output

Prices/Rates are denoted in ‘base’, i.e. the USD_BTS market is priced in BTS per USD.

Example: in the USD_BTS market, a price of 300 means a USD is worth 300 BTS

Note

All prices returned are in the reversed orientation as the market. I.e. in the BTC/BTS market, prices are BTS per BTC. That way you can multiply prices with 1.05 to get a +5%.

Warning

Since buy orders are placed as limit-sell orders for the base asset, you may end up obtaining more of the buy asset than you placed the order for. Example:

  • You place and order to buy 10 USD for 100 BTS/USD
  • This means that you actually place a sell order for 1000 BTS in order to obtain at least 10 USD
  • If an order on the market exists that sells USD for cheaper, you will end up with more than 10 USD
cancel(orderNumber, account=None, **kwargs)[source]

Cancels an order you have placed in a given market. Requires only the “orderNumber”. An order number takes the form 1.7.xxx.

Parameters:orderNumber (str) – The Order Object ide of the form 1.7.xxxx
chain

Short form for blockchain (for the lazy)

clear() → None. Remove all items from D.
copy() → a shallow copy of D
core_base_market()[source]

This returns an instance of the market that has the core market of the base asset.

It means that base needs to be a market pegged asset and returns a market to it’s collateral asset.

core_quote_market()[source]

This returns an instance of the market that has the core market of the quote asset.

It means that quote needs to be a market pegged asset and returns a market to it’s collateral asset.

define_classes()

Needs to define instance variables that provide classes

fromkeys()

Create a new dictionary with keys from iterable and values set to value.

get()

Return the value for key if key is in the dictionary, else default.

get_instance_class()

Should return the Chain instance class, e.g. bitshares.BitShares

get_limit_orders(limit=25)[source]

Returns the list of limit orders for a given market.

Parameters:limit (int) – Limit the amount of orders (default: 25)

Sample output:

[0.003679 USD/BTS (1.9103 USD|519.29602 BTS),
0.003676 USD/BTS (299.9997 USD|81606.16394 BTS),
0.003665 USD/BTS (288.4618 USD|78706.21881 BTS),
0.003665 USD/BTS (3.5285 USD|962.74409 BTS),
0.003665 USD/BTS (72.5474 USD|19794.41299 BTS),
[0.003738 USD/BTS (36.4715 USD|9756.17339 BTS),
0.003738 USD/BTS (18.6915 USD|5000.00000 BTS),
0.003742 USD/BTS (182.6881 USD|48820.22081 BTS),
0.003772 USD/BTS (4.5200 USD|1198.14798 BTS),
0.003799 USD/BTS (148.4975 USD|39086.59741 BTS)]

Note

Each bid is an instance of class:bitshares.price.Order and thus carries the keys base, quote and price. From those you can obtain the actual amounts for sale

get_string(separator=':')[source]

Return a formated string that identifies the market, e.g. USD:BTS

Parameters:separator (str) – The separator of the assets (defaults to :)
classmethod inject(cls)
items() → a set-like object providing a view on D's items
keys() → a set-like object providing a view on D's keys
orderbook(limit=25)[source]

Returns the order book for a given market. You may also specify “all” to get the orderbooks of all markets.

Parameters:limit (int) – Limit the amount of orders (default: 25)

Sample output:

{'bids': [0.003679 USD/BTS (1.9103 USD|519.29602 BTS),
0.003676 USD/BTS (299.9997 USD|81606.16394 BTS),
0.003665 USD/BTS (288.4618 USD|78706.21881 BTS),
0.003665 USD/BTS (3.5285 USD|962.74409 BTS),
0.003665 USD/BTS (72.5474 USD|19794.41299 BTS)],
'asks': [0.003738 USD/BTS (36.4715 USD|9756.17339 BTS),
0.003738 USD/BTS (18.6915 USD|5000.00000 BTS),
0.003742 USD/BTS (182.6881 USD|48820.22081 BTS),
0.003772 USD/BTS (4.5200 USD|1198.14798 BTS),
0.003799 USD/BTS (148.4975 USD|39086.59741 BTS)]}

Note

Each bid is an instance of class:bitshares.price.Order and thus carries the keys base, quote and price. From those you can obtain the actual amounts for sale

Note

This method does order consolidation and hides some details of individual orders!

pop(k[, d]) → v, remove specified key and return the corresponding value.

If key is not found, d is returned if given, otherwise KeyError is raised

popitem() → (k, v), remove and return some (key, value) pair as a

2-tuple; but raise KeyError if D is empty.

sell(price, amount, expiration=None, killfill=False, account=None, returnOrderId=False, **kwargs)[source]

Places a sell order in a given market.

Parameters:
  • price (float) – price denoted in base/quote
  • amount (number) – Amount of quote to sell
  • expiration (number) – (optional) expiration time of the order in seconds (defaults to 7 days)
  • killfill (bool) – flag that indicates if the order shall be killed if it is not filled (defaults to False)
  • account (string) – Account name that executes that order
  • returnOrderId (string) – If set to “head” or “irreversible” the call will wait for the tx to appear in the head/irreversible block and add the key “orderid” to the tx output

Prices/Rates are denoted in ‘base’, i.e. the USD_BTS market is priced in BTS per USD.

Example: in the USD_BTS market, a price of 300 means a USD is worth 300 BTS

Note

All prices returned are in the reversed orientation as the market. I.e. in the BTC/BTS market, prices are BTS per BTC. That way you can multiply prices with 1.05 to get a +5%.

classmethod set_shared_blockchain_instance(instance)

This method allows us to override default instance for all users of SharedInstance.instance.

Parameters:instance (chaininstance) – Chain instance
classmethod set_shared_config(config)

This allows to set a config that will be used when calling shared_blockchain_instance and allows to define the configuration without requiring to actually create an instance

set_shared_instance()

This method allows to set the current instance as default

setdefault()

Insert key with a value of default if key is not in the dictionary.

Return the value for key if key is in the dictionary, else default.

shared_blockchain_instance()

This method will initialize SharedInstance.instance and return it. The purpose of this method is to have offer single default instance that can be reused by multiple classes.

ticker()[source]

Returns the ticker for all markets.

Output Parameters:

  • last: Price of the order last filled
  • lowestAsk: Price of the lowest ask
  • highestBid: Price of the highest bid
  • baseVolume: Volume of the base asset
  • quoteVolume: Volume of the quote asset
  • percentChange: 24h change percentage (in %)
  • settlement_price: Settlement Price for borrow/settlement
  • core_exchange_rate: Core exchange rate for payment of fee in non-BTS asset
  • price24h: the price 24h ago

Sample Output:

{
    {
        "quoteVolume": 48328.73333,
        "quoteSettlement_price": 332.3344827586207,
        "lowestAsk": 340.0,
        "baseVolume": 144.1862,
        "percentChange": -1.9607843231354893,
        "highestBid": 334.20000000000005,
        "latest": 333.33333330133934,
    }
}
trades(limit=25, start=None, stop=None)[source]

Returns your trade history for a given market.

Parameters:
  • limit (int) – Limit the amount of orders (default: 25)
  • start (datetime) – start time
  • stop (datetime) – stop time
update([E, ]**F) → None. Update D from dict/iterable E and F.

If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

values() → an object providing a view on D's values
volume24h()[source]

Returns the 24-hour volume for all markets, plus totals for primary currencies.

Sample output:

{
    "BTS": 361666.63617,
    "USD": 1087.0
}