HA looks good

This commit is contained in:
2023-06-29 09:48:11 +02:00
parent 4bfe5245a9
commit 4d4d609cea
13 changed files with 134 additions and 98 deletions

View File

@@ -14,6 +14,8 @@ class Price_Believe_Distribiute_Agent(Base_Distribution_Agent):
self.price_believe = {i: 1 for i in range(len(self.exchanges))}
self.open_orders = {i: [] for i in range(len(self.exchanges))}
self.open_qty = 0
self.lp_threshold=0.25
self.hp_threshold=0.90
def tick(self, step, episode):
@@ -72,16 +74,12 @@ class Price_Believe_Distribiute_Agent(Base_Distribution_Agent):
if o.leaves_qty == 0:
# order is done
self.open_orders[cx_id].remove(i) # remove order from open
sold = o.qty-o.leaves_qty
if o.qty==0:
o.qty=1
soldperc=sold/o.qty
dem = cx.total_demand[self.resource]+sold
if dem == 0:
dem = 1
coverage = sold/dem
# 50 % coverage limit
modifier = (max([coverage,soldperc])*2)-1
succsess=self.calc_order_success(cx,o)
modifier=0
if succsess>=self.hp_threshold:
modifier=1
elif succsess<=self.lp_threshold:
modifier=-1
self.update_believe(cx_id, modifier) # update price believe
self.collect_balance_from_cxs()
self.collect_resource_from_cxs(self.resource)
@@ -101,20 +99,29 @@ class Price_Believe_Distribiute_Agent(Base_Distribution_Agent):
else:
# timeout
self.update_trades()
sold = o.qty-o.leaves_qty
soldperc=sold/o.qty
dem = cx.total_demand[self.resource]+sold
if dem == 0:
dem = 1
coverage = sold/dem
# 50 % coverage limit
modifier = (max([coverage,soldperc])*2)-1
succsess=self.calc_order_success(cx,o)
modifier=0
if succsess>=self.hp_threshold:
modifier=1
elif succsess<=self.lp_threshold:
modifier=-1
cx.cancel_order(i["id"])
self.collect_balance_from_cxs()
self.collect_resource_from_cxs(self.resource)
self.update_believe(cx_id, modifier)
self.open_orders[cx_id].remove(i)
def calc_order_success(self,cx, o):
"""
Calculate how we should adjust the price belive
"""
sold = o.qty-o.leaves_qty
soldperc=sold/o.qty
dem = cx.total_demand[self.resource]+sold
if dem == 0:
dem = 1
coverage = sold/dem
base_success=max([coverage,soldperc])
return base_success
def update_believe(self, cx_id, modifier):
"""