Remove trade object from order manager

This commit is contained in:
Jacob Plaster
2018-12-04 11:05:16 +00:00
parent 468c7911ab
commit 1f2fdf9fa0
3 changed files with 16 additions and 24 deletions

View File

@@ -18,10 +18,9 @@ async def close_all(data):
await bfx.ws.close_all_orders() await bfx.ws.close_all_orders()
@bfx.ws.on('order_confirmed') @bfx.ws.on('order_confirmed')
async def trade_completed(order, trade): async def trade_completed(order):
print ("Order confirmed.") print ("Order confirmed.")
print (order) print (order)
print (trade)
## close the order ## close the order
# await order.close() # await order.close()
# or # or

View File

@@ -14,21 +14,19 @@ bfx = Client(
) )
@bfx.ws.on('order_update') @bfx.ws.on('order_update')
def order_updated(order, trade): def order_updated(order):
print ("Order updated.") print ("Order updated.")
print (order) print (order)
print (trade)
@bfx.ws.once('order_update') @bfx.ws.once('order_update')
async def order_once_updated(order, trade): async def order_once_updated(order):
# update a second time using the object function # update a second time using the object function
await order.update(price=80, amount=0.02, flags="2nd update") await order.update(price=80, amount=0.02, flags="2nd update")
@bfx.ws.once('order_confirmed') @bfx.ws.once('order_confirmed')
async def trade_completed(order, trade): async def trade_completed(order):
print ("Order confirmed.") print ("Order confirmed.")
print (order) print (order)
print (trade)
await bfx.ws.update_order(order.id, price=100, amount=0.01) await bfx.ws.update_order(order.id, price=100, amount=0.01)
@bfx.ws.on('error') @bfx.ws.on('error')

View File

@@ -2,7 +2,7 @@ import time
import asyncio import asyncio
from ..utils.CustomLogger import CustomLogger from ..utils.CustomLogger import CustomLogger
from ..models import Order, Trade from ..models import Order
class OrderManager: class OrderManager:
@@ -23,7 +23,7 @@ class OrderManager:
def get_pending_orders(self): def get_pending_orders(self):
return list(self.pending_orders.values()) return list(self.pending_orders.values())
async def _confirm_order(self, order, trade): async def _confirm_order(self, order):
''' '''
Called once when we first recieve infomation back from the bitfinex api Called once when we first recieve infomation back from the bitfinex api
that the order has been accepted. that the order has been accepted.
@@ -31,12 +31,12 @@ class OrderManager:
if order.cId in self.pending_orders: if order.cId in self.pending_orders:
if self.pending_callbacks[order.cId][0]: if self.pending_callbacks[order.cId][0]:
# call onComplete callback # call onComplete callback
await self.pending_callbacks[order.cId][0](order, trade) await self.pending_callbacks[order.cId][0](order)
order.set_confirmed() order.set_confirmed()
# remove from pending orders list # remove from pending orders list
del self.pending_orders[order.cId] del self.pending_orders[order.cId]
del self.pending_callbacks[order.cId] del self.pending_callbacks[order.cId]
self.bfxapi._emit('order_confirmed', order, trade) self.bfxapi._emit('order_confirmed', order)
async def confirm_order_closed(self, raw_ws_data): async def confirm_order_closed(self, raw_ws_data):
# order created and executed # order created and executed
@@ -45,13 +45,12 @@ class OrderManager:
# @ 18909.0(0.06700003)",null,null,18909,18913.2899961,0,0,null,null,null,0,0,null,null,null, # @ 18909.0(0.06700003)",null,null,18909,18913.2899961,0,0,null,null,null,0,0,null,null,null,
# "API>BFX",null,null,null]] # "API>BFX",null,null,null]]
order = Order(self.bfxapi, raw_ws_data[2]) order = Order(self.bfxapi, raw_ws_data[2])
trade = Trade(order)
order.set_open_state(False) order.set_open_state(False)
if order.id in self.open_orders: if order.id in self.open_orders:
del self.open_orders[order.id] del self.open_orders[order.id]
await self._confirm_order(order, trade) await self._confirm_order(order)
self.logger.info("Order closed: {} {}".format(order.symbol, order.status)) self.logger.info("Order closed: {} {}".format(order.symbol, order.status))
self.bfxapi._emit('order_closed', order, trade) self.bfxapi._emit('order_closed', order)
async def build_from_order_snapshot(self, raw_ws_data): async def build_from_order_snapshot(self, raw_ws_data):
''' '''
@@ -61,10 +60,8 @@ class OrderManager:
self.open_orders = {} self.open_orders = {}
for raw_order in osData: for raw_order in osData:
order = Order(self.bfxapi, raw_order) order = Order(self.bfxapi, raw_order)
trade = Trade(order)
order.set_open_state(True) order.set_open_state(True)
self.open_orders[order.id] = order self.open_orders[order.id] = order
# await self._confirm_order(order, trade)
self.bfxapi._emit('order_snapshot', self.get_open_orders()) self.bfxapi._emit('order_snapshot', self.get_open_orders())
async def confirm_order_update(self, raw_ws_data): async def confirm_order_update(self, raw_ws_data):
@@ -75,11 +72,10 @@ class OrderManager:
# None, None, None]] # None, None, None]]
order = Order(self.bfxapi, raw_ws_data[2]) order = Order(self.bfxapi, raw_ws_data[2])
order.set_open_state(True) order.set_open_state(True)
trade = Trade(order)
self.open_orders[order.id] = order self.open_orders[order.id] = order
await self._confirm_order(order, trade) await self._confirm_order(order)
self.logger.info("Order update: {} {}".format(order, trade)) self.logger.info("Order update: {}".format(order))
self.bfxapi._emit('order_update', order, trade) self.bfxapi._emit('order_update', order)
async def confirm_order_new(self, raw_ws_data): async def confirm_order_new(self, raw_ws_data):
# order created but not executed / created but partially filled # order created but not executed / created but partially filled
@@ -89,11 +85,10 @@ class OrderManager:
# None, None, None]] # None, None, None]]
order = Order(self.bfxapi, raw_ws_data[2]) order = Order(self.bfxapi, raw_ws_data[2])
order.set_open_state(True) order.set_open_state(True)
trade = Trade(order)
self.open_orders[order.id] = order self.open_orders[order.id] = order
await self._confirm_order(order, trade) await self._confirm_order(order)
self.logger.info("Order new: {} {}".format(order, trade)) self.logger.info("Order new: {}".format(order))
self.bfxapi._emit('order_new', order, trade) self.bfxapi._emit('order_new', order)
def _gen_unqiue_cid(self): def _gen_unqiue_cid(self):
return int(round(time.time() * 1000)) return int(round(time.time() * 1000))