mirror of
https://github.com/aljazceru/bitfinex-api-py.git
synced 2025-12-19 14:54:21 +01:00
93 lines
3.0 KiB
Python
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)
|