mirror of
https://github.com/aljazceru/bitfinex-api-py.git
synced 2025-12-20 07:14:20 +01:00
102 lines
2.9 KiB
Python
102 lines
2.9 KiB
Python
import time
|
|
import datetime
|
|
|
|
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, id, gId, cId, symbol, mtsCreate, mtsUpdate, amount, amountOrig, oType,
|
|
typePrev, flags, status, price, priceAvg, priceTrailing, priceAuxLimit, notfiy, placeId):
|
|
self.id = id
|
|
self.gId = gId
|
|
self.cId = cId
|
|
self.symbol = symbol
|
|
self.mtsCreate = mtsCreate
|
|
self.mtsUpdate = mtsUpdate
|
|
self.amount = amount
|
|
self.amountOrig = amountOrig
|
|
self.type = oType
|
|
self.typePrev = typePrev
|
|
self.flags = flags
|
|
self.status = status
|
|
self.price = price
|
|
self.priceAvg = priceAvg
|
|
self.priceTrailing = priceTrailing
|
|
self.priceAuxLimit = priceAuxLimit
|
|
self.notfiy = notfiy
|
|
self.placeId = placeId
|
|
|
|
self.is_pending_bool = True
|
|
self.is_confirmed_bool = False
|
|
self.is_open_bool = False
|
|
|
|
self.date = datetime.datetime.fromtimestamp(mtsCreate/1000.0)
|
|
if priceAvg:
|
|
## if cancelled then priceAvg wont exist
|
|
self.fee = (priceAvg * abs(amount)) * 0.002
|
|
|
|
@staticmethod
|
|
def from_raw_order(raw_order):
|
|
id = raw_order[OrderClosedModel.ID]
|
|
gId = raw_order[OrderClosedModel.GID]
|
|
cId = raw_order[OrderClosedModel.CID]
|
|
symbol = raw_order[OrderClosedModel.SYMBOL]
|
|
mtsCreate = raw_order[OrderClosedModel.MTS_CREATE]
|
|
mtsUpdate = raw_order[OrderClosedModel.MTS_UPDATE]
|
|
amount = raw_order[OrderClosedModel.AMOUNT]
|
|
amountOrig = raw_order[OrderClosedModel.AMOUNT_ORIG]
|
|
oType = raw_order[OrderClosedModel.TYPE]
|
|
typePrev = raw_order[OrderClosedModel.TYPE_PREV]
|
|
flags = raw_order[OrderClosedModel.FLAGS]
|
|
status = raw_order[OrderClosedModel.STATUS]
|
|
price = raw_order[OrderClosedModel.PRICE]
|
|
priceAvg = raw_order[OrderClosedModel.PRIVE_AVG]
|
|
priceTrailing = raw_order[OrderClosedModel.PRICE_TRAILING]
|
|
priceAuxLimit = raw_order[OrderClosedModel.PRICE_AUX_LIMIT]
|
|
notfiy = raw_order[OrderClosedModel.NOTIFY]
|
|
placeId = raw_order[OrderClosedModel.PLACE_ID]
|
|
|
|
return Order(id, gId, cId, symbol, mtsCreate, mtsUpdate, amount, amountOrig, oType,
|
|
typePrev, flags, status, price, priceAvg, priceTrailing, priceAuxLimit, notfiy, placeId)
|
|
|
|
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)
|