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: - blockchain_instance (bitshares.bitshares.BitShares) – BitShares instance
- base (bitshares.asset.Asset) – Base asset
- quote (bitshares.asset.Asset) – Quote asset
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
andquote
are valid assets (according tobitshares.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
withUSD
being the quote), while thebase
only refers to a secondary asset for a trade. This means, if you callbitshares.market.Market.sell()
orbitshares.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
¶
-
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
- price (float) – price denoted in
-
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
andprice
. 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
andprice
. From those you can obtain the actual amounts for saleNote
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%.
- price (float) – price denoted in
-
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 filledlowestAsk
: Price of the lowest askhighestBid
: Price of the highest bidbaseVolume
: Volume of the base assetquoteVolume
: Volume of the quote assetpercentChange
: 24h change percentage (in %)settlement_price
: Settlement Price for borrow/settlementcore_exchange_rate
: Core exchange rate for payment of fee in non-BTS assetprice24h
: 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¶