PriceTrigger bugfix
This commit is contained in:
@@ -104,8 +104,8 @@ async def update_balance_triggers(vault: str, token: str, balance: int):
|
||||
async def update_price_triggers(pool: OldPoolDict, price: dec):
|
||||
price = price * dec(10) ** dec(-pool['decimals']) # adjust for pool decimals to get onchain price
|
||||
price = float(price) # since we use SIMD operations to evaluate lines, we must convert to float
|
||||
updates = [pt.update(price) for pt in PriceLineTrigger.by_pool.get(pool['address'], [])]
|
||||
await asyncio.gather(*updates)
|
||||
for pt in PriceLineTrigger.by_pool.get(pool['address'], []):
|
||||
pt.update(price)
|
||||
|
||||
|
||||
inflight_execution_requests: set[TrancheKey] = set()
|
||||
@@ -162,10 +162,11 @@ class Trigger:
|
||||
def value(self, value):
|
||||
if value != self.value:
|
||||
_dirty.add(self.tk)
|
||||
old = _trigger_state.get(self.tk,0)
|
||||
if not value: # this conditional is inverted
|
||||
_trigger_state[self.tk] |= 1 << self.position # set
|
||||
_trigger_state[self.tk] = old | (1 << self.position) # set
|
||||
else:
|
||||
_trigger_state[self.tk] &= ~(1 << self.position) # clear
|
||||
_trigger_state[self.tk] = old & ~(1 << self.position) # clear
|
||||
|
||||
@abstractmethod
|
||||
def remove(self): ...
|
||||
@@ -350,7 +351,10 @@ class PriceLineTrigger (Trigger):
|
||||
self.value = value
|
||||
|
||||
def remove(self):
|
||||
PriceLineTrigger.by_pool[self.pool_address].remove(self)
|
||||
try:
|
||||
PriceLineTrigger.by_pool[self.pool_address].remove(self)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
|
||||
async def activate_orders():
|
||||
|
||||
Reference in New Issue
Block a user