Files
bitfinex-api-py/bfxapi/models/Order.py
2018-11-28 13:27:36 +00:00

93 lines
3.0 KiB
Python

import time
class OrderClosedModel:
ID = 0
GID = 1
CID = 2
SYMBOL = 3
MTS_CREATE = 4
MTS_UPDATE = 5
AMOUNT = 6
AMOUNT_ORIG = 7
TYPE = 8
TYPE_PREV = 9
FLAGS = 12
STATUS = 13
PRICE = 16
PRIVE_AVG = 17
PRICE_TRAILING = 18
PRICE_AUX_LIMIT = 19
NOTIFY = 23
PLACE_ID = 25
def now_in_mills():
return int(round(time.time() * 1000))
class Order:
def __init__(self, bfxapi, closingOrderArray):
self.bfxapi = bfxapi
self.id = closingOrderArray[OrderClosedModel.ID]
self.gId = closingOrderArray[OrderClosedModel.GID]
self.cId = closingOrderArray[OrderClosedModel.CID]
self.symbol = closingOrderArray[OrderClosedModel.SYMBOL]
self.mtsCreate = closingOrderArray[OrderClosedModel.MTS_CREATE]
self.mtsUpdate = closingOrderArray[OrderClosedModel.MTS_UPDATE]
self.amount = closingOrderArray[OrderClosedModel.AMOUNT]
self.amountOrig = closingOrderArray[OrderClosedModel.AMOUNT_ORIG]
self.type = closingOrderArray[OrderClosedModel.TYPE]
self.typePrev = closingOrderArray[OrderClosedModel.TYPE_PREV]
self.flags = closingOrderArray[OrderClosedModel.FLAGS]
self.status = closingOrderArray[OrderClosedModel.STATUS]
self.price = closingOrderArray[OrderClosedModel.PRICE]
self.priceAvg = closingOrderArray[OrderClosedModel.PRIVE_AVG]
self.priceTrailing = closingOrderArray[OrderClosedModel.PRICE_TRAILING]
self.priceAuxLimit = closingOrderArray[OrderClosedModel.PRICE_AUX_LIMIT]
self.notfiy = closingOrderArray[OrderClosedModel.NOTIFY]
self.placeId = closingOrderArray[OrderClosedModel.PLACE_ID]
self.is_pending_bool = True
self.is_confirmed_bool = False
self.is_open_bool = False
async def update(self, price=None, amount=None, delta=None, price_aux_limit=None,
price_trailing=None, flags=None, time_in_force=None):
payload = { "id": self.id }
if price is not None:
payload['price'] = str(price)
if amount is not None:
payload['amount'] = str(amount)
if delta is not None:
payload['delta'] = str(delta)
if price_aux_limit is not None:
payload['price_aux_limit'] = str(price_aux_limit)
if price_trailing is not None:
payload['price_trailing'] = str(price_trailing)
if flags is not None:
payload['flags'] = str(flags)
if time_in_force is not None:
payload['time_in_force'] = str(time_in_force)
await self.bfxapi._send_auth_command('ou', payload)
async def close(self):
await self.bfxapi._send_auth_command('oc', { 'id': self.id })
def set_confirmed(self):
self.is_pending_bool = False
self.is_confirmed_bool = True
def set_open_state(self, isOpen):
self.is_open_bool = isOpen
def isOpen(self):
return self.is_open_bool
def isPending(self):
return self.is_pending_bool
def isConfirmed(self):
return self.is_confirmed_bool
def __str__(self):
''' Allow us to print the Order object in a pretty format '''
return "Order <'{0}' mtsCreate={1} {2}>".format(self.symbol, self.mtsCreate,
self.status)