Merge pull request #21 from nicolasakf/main
Enhance data processing and utility functions
This commit is contained in:
@@ -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]['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']})
|
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):
|
def process_price_change(asset, side, price_level, new_size, asset_id=None):
|
||||||
if asset_id != global_state.all_data[asset]['asset_id']:
|
# Skip updates for the No token to prevent duplicated updates
|
||||||
return # 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':
|
if side == 'bids':
|
||||||
book = global_state.all_data[asset]['bids']
|
book = global_state.all_data[asset]['bids']
|
||||||
else:
|
else:
|
||||||
@@ -33,7 +36,10 @@ def process_price_change(asset, side, price_level, new_size):
|
|||||||
book[price_level] = new_size
|
book[price_level] = new_size
|
||||||
|
|
||||||
def process_data(json_datas, trade=True):
|
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:
|
for json_data in json_datas:
|
||||||
event_type = json_data['event_type']
|
event_type = json_data['event_type']
|
||||||
asset = json_data['market']
|
asset = json_data['market']
|
||||||
@@ -49,7 +55,9 @@ def process_data(json_datas, trade=True):
|
|||||||
side = 'bids' if data['side'] == 'BUY' else 'asks'
|
side = 'bids' if data['side'] == 'BUY' else 'asks'
|
||||||
price_level = float(data['price'])
|
price_level = float(data['price'])
|
||||||
new_size = float(data['size'])
|
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:
|
if trade:
|
||||||
asyncio.create_task(perform_trade(asset))
|
asyncio.create_task(perform_trade(asset))
|
||||||
|
|||||||
@@ -149,6 +149,12 @@ def update_markets():
|
|||||||
received_df, received_params = get_sheet_df()
|
received_df, received_params = get_sheet_df()
|
||||||
|
|
||||||
if len(received_df) > 0:
|
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
|
global_state.df, global_state.params = received_df.copy(), received_params
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -188,9 +188,10 @@ def get_buy_sell_amount(position, bid_price, row, other_token_position=0):
|
|||||||
|
|
||||||
# Apply multiplier for low-priced assets
|
# Apply multiplier for low-priced assets
|
||||||
if bid_price < 0.1 and buy_amount > 0:
|
if bid_price < 0.1 and buy_amount > 0:
|
||||||
if row['multiplier'] != '':
|
multiplier = row.get('multiplier', '')
|
||||||
print(f"Multiplying buy amount by {int(row['multiplier'])}")
|
if multiplier != '':
|
||||||
buy_amount = buy_amount * int(row['multiplier'])
|
print(f"Multiplying buy amount by {int(multiplier)}")
|
||||||
|
buy_amount = buy_amount * int(multiplier)
|
||||||
|
|
||||||
return buy_amount, sell_amount
|
return buy_amount, sell_amount
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user