def time_order_create(self): self.op = operations.Limit_order_create( **{ "owner": "", "orderid": 0, "amount_to_sell": "0.000 STEEM", "min_to_receive": "0.000 STEEM", "fill_or_kill": False, "expiration": "2016-12-31T23:59:59", "prefix": self.default_prefix }) self.doit()
def sell( self, price, amount, expiration=None, killfill=False, account=None, orderid=None, returnOrderId=False ): """ Places a sell order in a given market :param float price: price denoted in ``base``/``quote`` :param number amount: Amount of ``quote`` to sell :param number expiration: (optional) expiration time of the order in seconds (defaults to 7 days) :param bool killfill: flag that indicates if the order shall be killed if it is not filled (defaults to False) :param string account: Account name that executes that order :param string returnOrderId: 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 SBD_STEEM market is priced in STEEM per SBD. **Example:** in the SBD_STEEM market, a price of 300 means a SBD is worth 300 STEEM .. note:: All prices returned are in the **reversed** orientation as the market. I.e. in the STEEM/SBD market, prices are SBD per STEEM. That way you can multiply prices with `1.05` to get a +5%. """ if not expiration: expiration = self.steem.config["order-expiration"] if not account: if "default_account" in self.steem.config: account = self.steem.config["default_account"] if not account: raise ValueError("You need to provide an account") account = Account(account, steem_instance=self.steem) if isinstance(price, Price): price = price.as_base(self["base"]["symbol"]) if isinstance(amount, Amount): amount = Amount(amount, steem_instance=self.steem) if not amount["asset"]["symbol"] == self["quote"]["symbol"]: raise AssertionError("Price: {} does not match amount: {}".format( str(price), str(amount))) elif isinstance(amount, str): amount = Amount(amount, steem_instance=self.steem) else: amount = Amount(amount, self["quote"]["symbol"], steem_instance=self.steem) order = operations.Limit_order_create(**{ "owner": account["name"], "orderid": orderid or random.getrandbits(32), "amount_to_sell": Amount( float(amount), self["quote"]["symbol"], steem_instance=self.steem ), "min_to_receive": Amount( float(amount) * float(price), self["base"]["symbol"], steem_instance=self.steem ), "expiration": formatTimeFromNow(expiration), "fill_or_kill": killfill, "prefix": self.steem.prefix, }) if returnOrderId: # Make blocking broadcasts prevblocking = self.steem.blocking self.steem.blocking = returnOrderId tx = self.steem.finalizeOp(order, account["name"], "active") if returnOrderId: tx["orderid"] = tx["operation_results"][0][1] self.steem.blocking = prevblocking return tx