line trigger fixes

This commit is contained in:
tim
2024-09-04 02:47:09 -04:00
parent 18f22e2f09
commit c648d38ab9
3 changed files with 11 additions and 5 deletions

View File

@@ -52,7 +52,7 @@ async def handle_order_placed(event: EventData):
log.debug(f'raw order status {obj}')
order = Order.create(addr, index, event['transactionHash'], obj)
await activate_order(order)
log.debug(f'new order {order} {order.order}')
log.debug(f'new order{order}')
def handle_swap_filled(event: EventData):

View File

@@ -280,6 +280,8 @@ class Order:
'of', db=True, redis=True, pub=pub_order_fills,
str2key=OrderKey.str2key, value2str=lambda v: json.dumps(v.dump()), str2value=lambda s:OrderFilled.load(json.loads(s)))
def __str__(self):
return str(self.order)
# "active" means the order wants to be executed now. this is not BlockData because it's cleared every block
active_orders: dict[OrderKey,Order] = {}

View File

@@ -153,6 +153,7 @@ class Trigger:
self.position = position
self.tk = tk
self.value = value
_dirty.add(self.tk)
@property
def value(self):
@@ -361,10 +362,11 @@ async def activate_orders():
log.debug('activating orders')
# this is a state init callback, called only once after the state has been loaded from the db or created fresh
keys = list(Order.open_orders)
orders = [Order.of(key) for key in keys]
for order in orders:
for key in keys:
order = Order.of(key)
# setup triggers
await activate_order(order) # too many to really parallelize, and it's startup anyway
# log.debug(f'activated {order}')
log.debug(f'activated {len(keys)} orders')
@@ -402,9 +404,11 @@ class TrancheTrigger:
if tranche.marketOrder:
min_trigger = max_trigger = None
else:
pool = await get_pool(order.pool_address)
buy = pool['base'] == order.order.tokenOut
min_trigger, max_trigger = await asyncio.gather(
PriceLineTrigger.create(tk, tranche.minLine, True, tranche.minIsBarrier),
PriceLineTrigger.create(tk, tranche.maxLine, True, tranche.maxIsBarrier))
PriceLineTrigger.create(tk, tranche.minLine, True is buy, tranche.minIsBarrier),
PriceLineTrigger.create(tk, tranche.maxLine, False is buy, tranche.maxIsBarrier))
return TrancheTrigger(order, tk, balance_trigger, activation_trigger, expiration_trigger, min_trigger, max_trigger)
def __init__(self, order: Order, tk: TrancheKey,