def test_create_order_message(self): """ Check if response match expected dict structure. :return: """ expect: dict = { 'market': str, 'side': str, 'quantity': str, 'price': str, 'type': str, 'time_in_force': str, 'stop_price': str, 'trigger_type': str, 'is_post_only': bool, 'is_reduce_only': bool, 'originator': str, } test_type = types.CreateOrderMessage(market="swth_eth1", side="swth", quantity="1", price="0.1", type='limit', time_in_force="gtc", stop_price="0.2", trigger_type="stop-limit", is_post_only=False, is_reduce_only=False, originator=WALLET_ADDRESS) self.assertDictStructure(expect, jsons.dump(test_type))
def test_create_order(self): txn_message: dict = types.CreateOrderMessage(market='swth_eth', side="sell", quantity="200", type="market") result: dict = self.authenticated_client.create_order( message=txn_message) self.assertDictStructure(expect=self.expect, actual=result)
def stop_limit_sell(self, pair: str, price: str, quantity: str, stop_price: str): """ Function to place a stop limit sell order on Demex. Execution of this function is as follows:: stop_limit_sell(pair='swth_eth1', quantity=1000, price='0.0002', stop_price='0.00015') The expected return result for this function is as follows:: { 'height': str, 'txhash': str, `'raw_log': str, 'logs': [{ 'msg_index': int, 'log': str, 'events': [{ 'type': str, 'attributes': [{ 'key': str, 'value': str }, { 'key': str, 'value': str }] }] }], 'gas_wanted': str, 'gas_used': str } :return: Dictionary in the form of a JSON message with the stop limit order details. """ current_price = self.tradehub.get_prices(market=pair)["last"] if Decimal(stop_price) < Decimal(current_price): create_order_msg = types.CreateOrderMessage( market=pair, side="sell", quantity=quantity, price=price, type="stop-limit", stop_price=stop_price, trigger_type="last_price") return self.tradehub.create_order(message=create_order_msg) else: raise ValueError( "Stop Price target {} is required to be below the current market price {} to trigger a stop order." .format(stop_price, current_price))
def limit_sell(self, pair: str, quantity: str, price: str): """ Function to place a limit sell order on Demex. Execution of this function is as follows:: limit_sell(pair='swth_eth1', quantity=1000, price='0.0002') The expected return result for this function is as follows:: { 'height': str, 'txhash': str, `'raw_log': str, 'logs': [{ 'msg_index': int, 'log': str, 'events': [{ 'type': str, 'attributes': [{ 'key': str, 'value': str }, { 'key': str, 'value': str }] }] }], 'gas_wanted': str, 'gas_used': str } :return: Dictionary in the form of a JSON message with the limit order details. """ create_order_msg = types.CreateOrderMessage(market=pair, side="sell", quantity=quantity, price=price, type="limit") return self.tradehub.create_order(message=create_order_msg)