|
|
from huobi.constant import *
|
|
|
from huobi.utils.json_parser import fill_obj
|
|
|
|
|
|
|
|
|
class Order:
|
|
|
"""
|
|
|
The detail order information.
|
|
|
|
|
|
:member
|
|
|
amount: The amount of base currency in this order.
|
|
|
price: The limit price of limit order.
|
|
|
created_timestamp: The UNIX formatted timestamp in UTC when the order was created.
|
|
|
canceled_timestamp: The UNIX formatted timestamp in UTC when the order was canceled, if not canceled then has value of 0.
|
|
|
finished_timestamp: The UNIX formatted timestamp in UTC when the order was changed to a final state. This is not the time the order is matched.
|
|
|
order_id: The order id.
|
|
|
symbol: The symbol, like "btcusdt".
|
|
|
order_type: The order type, possible values are: buy-market, sell-market, buy-limit, sell-limit, buy-ioc, sell-ioc, buy-limit-maker, sell-limit-maker, buy-limit-fok, sell-limit-fok, buy-stop-limit-fok, sell-stop-limit-fok.
|
|
|
filled_amount: The amount which has been filled.
|
|
|
filled_cash_amount: The filled total in quote currency.
|
|
|
filled_fees: The transaction fee paid so far.
|
|
|
source: The source where the order was triggered, possible values: sys, web, api, app.
|
|
|
state: The order state: submitted, partial-filled, cancelling, filled, canceled.
|
|
|
stop_price : stop price used for buy-stop-limit,sell-stop-limit
|
|
|
operator : only [gte] and [lte] to trigger buy-stop-limit,sell-stop-limit
|
|
|
"""
|
|
|
|
|
|
def __init__(self):
|
|
|
self.id = 0
|
|
|
self.symbol = ""
|
|
|
self.account_id = 0
|
|
|
self.amount = 0.0
|
|
|
self.price = 0.0
|
|
|
self.created_at = 0
|
|
|
self.canceled_at = 0
|
|
|
self.finished_at = 0
|
|
|
self.type = OrderType.INVALID
|
|
|
self.filled_amount = 0.0
|
|
|
self.filled_cash_amount = 0.0
|
|
|
self.filled_fees = 0.0
|
|
|
self.source = OrderSource.INVALID
|
|
|
self.state = OrderState.INVALID
|
|
|
self.client_order_id = ""
|
|
|
self.stop_price = ""
|
|
|
self.next_time = 0
|
|
|
self.operator=""
|
|
|
|
|
|
@staticmethod
|
|
|
def json_parse(json_data):
|
|
|
order = fill_obj(json_data, Order)
|
|
|
order.filled_amount = json_data.get("filled-amount", json_data.get("field-amount", 0))
|
|
|
order.filled_cash_amount = json_data.get("filled-cash-amount", json_data.get("field-cash-amount", 0))
|
|
|
order.filled_fees = json_data.get("filled-fees", json_data.get("field-fees", 0))
|
|
|
return order
|
|
|
|
|
|
@staticmethod
|
|
|
def json_parse_list(json_data):
|
|
|
if json_data and len(json_data):
|
|
|
order_list = list()
|
|
|
for idx, row in enumerate(json_data):
|
|
|
order_item = Order.json_parse(row)
|
|
|
order_list.append(order_item)
|
|
|
return order_list
|
|
|
|
|
|
return list()
|
|
|
|
|
|
def print_object(self, format_data=""):
|
|
|
from huobi.utils.print_mix_object import PrintBasic
|
|
|
PrintBasic.print_basic(self.id, format_data + "Order Id")
|
|
|
PrintBasic.print_basic(self.symbol, format_data + "Symbol")
|
|
|
PrintBasic.print_basic(self.price, format_data + "Price")
|
|
|
PrintBasic.print_basic(self.amount, format_data + "Amount")
|
|
|
PrintBasic.print_basic(self.created_at, format_data + "Create Time")
|
|
|
PrintBasic.print_basic(self.canceled_at, format_data + "Cancel Time")
|
|
|
PrintBasic.print_basic(self.finished_at, format_data + "Finish Time")
|
|
|
PrintBasic.print_basic(self.type, format_data + "Order Type")
|
|
|
PrintBasic.print_basic(self.filled_amount, format_data + "Filled Amount")
|
|
|
PrintBasic.print_basic(self.filled_cash_amount, format_data + "Filled Cash Amount")
|
|
|
PrintBasic.print_basic(self.filled_fees, format_data + "Filled Fees")
|
|
|
#PrintBasic.print_basic(self.account_type, format_data + "Account Type")
|
|
|
PrintBasic.print_basic(self.source, format_data + "Order Source")
|
|
|
PrintBasic.print_basic(self.state, format_data + "Order State")
|
|
|
PrintBasic.print_basic(self.client_order_id, format_data + "Client Order Id")
|
|
|
PrintBasic.print_basic(self.stop_price, format_data + "Stop Price")
|
|
|
PrintBasic.print_basic(self.operator, format_data + "Operator")
|
|
|
PrintBasic.print_basic(self.next_time, format_data + "Next Time")
|
|
|
|