Merge pull request #21 from nicolasakf/main

Enhance data processing and utility functions
This commit is contained in:
warproxxx
2026-01-23 10:32:09 -08:00
committed by GitHub
3 changed files with 23 additions and 8 deletions
+13 -5
View File
@@ -18,9 +18,12 @@ def process_book_data(asset, json_data):
global_state.all_data[asset]['bids'].update({float(entry['price']): float(entry['size']) for entry in json_data['bids']})
global_state.all_data[asset]['asks'].update({float(entry['price']): float(entry['size']) for entry in json_data['asks']})
def process_price_change(asset, side, price_level, new_size):
if asset_id != global_state.all_data[asset]['asset_id']:
return # skip updates for the No token to prevent duplicated updates
def process_price_change(asset, side, price_level, new_size, asset_id=None):
# Skip updates for the No token to prevent duplicated updates
# Only process if asset_id matches the stored asset_id for this market
if asset_id and asset in global_state.all_data and asset_id != global_state.all_data[asset]['asset_id']:
return
if side == 'bids':
book = global_state.all_data[asset]['bids']
else:
@@ -33,7 +36,10 @@ def process_price_change(asset, side, price_level, new_size):
book[price_level] = new_size
def process_data(json_datas, trade=True):
# Ensure input is always a list
if isinstance(json_datas, dict):
json_datas = [json_datas]
for json_data in json_datas:
event_type = json_data['event_type']
asset = json_data['market']
@@ -49,7 +55,9 @@ def process_data(json_datas, trade=True):
side = 'bids' if data['side'] == 'BUY' else 'asks'
price_level = float(data['price'])
new_size = float(data['size'])
process_price_change(asset, side, price_level, new_size)
# Pass asset_id if available in the data
asset_id = data.get('asset_id', None)
process_price_change(asset, side, price_level, new_size, asset_id)
if trade:
asyncio.create_task(perform_trade(asset))
+6
View File
@@ -149,6 +149,12 @@ def update_markets():
received_df, received_params = get_sheet_df()
if len(received_df) > 0:
# Ensure multiplier column exists and fill NaN values with empty string
if 'multiplier' not in received_df.columns:
received_df['multiplier'] = ''
else:
received_df['multiplier'] = received_df['multiplier'].fillna('')
global_state.df, global_state.params = received_df.copy(), received_params
+4 -3
View File
@@ -188,9 +188,10 @@ def get_buy_sell_amount(position, bid_price, row, other_token_position=0):
# Apply multiplier for low-priced assets
if bid_price < 0.1 and buy_amount > 0:
if row['multiplier'] != '':
print(f"Multiplying buy amount by {int(row['multiplier'])}")
buy_amount = buy_amount * int(row['multiplier'])
multiplier = row.get('multiplier', '')
if multiplier != '':
print(f"Multiplying buy amount by {int(multiplier)}")
buy_amount = buy_amount * int(multiplier)
return buy_amount, sell_amount