|
@@ -55,7 +55,8 @@ QUESTDB_TABLE_PREFIX = "lighter_binance" # 表前缀,用于隔离其他项目
|
|
|
INFLUX_URL = f"http://{QUESTDB_HOST}:{QUESTDB_INFLUX_PORT}/write"
|
|
INFLUX_URL = f"http://{QUESTDB_HOST}:{QUESTDB_INFLUX_PORT}/write"
|
|
|
|
|
|
|
|
# 全局变量存储market_id到symbol的映射
|
|
# 全局变量存储market_id到symbol的映射
|
|
|
-market_id_to_symbol = {}
|
|
|
|
|
|
|
+# 存储market_id到orderbook(市场信息)的映射,不是深度信息
|
|
|
|
|
+market_id_to_orderbook = {}
|
|
|
|
|
|
|
|
# 全局变量存储最新的Market Stats数据
|
|
# 全局变量存储最新的Market Stats数据
|
|
|
market_stats_cache = {}
|
|
market_stats_cache = {}
|
|
@@ -122,8 +123,8 @@ async def fetch_binance_ticker_price(session):
|
|
|
|
|
|
|
|
|
|
|
|
|
def update_market_id_mapping(orderbooks_data):
|
|
def update_market_id_mapping(orderbooks_data):
|
|
|
- """更新market_id到symbol的映射"""
|
|
|
|
|
- global market_id_to_symbol
|
|
|
|
|
|
|
+ """更新market_id到orderbook(市场信息)的映射"""
|
|
|
|
|
+ global market_id_to_orderbook
|
|
|
if not orderbooks_data:
|
|
if not orderbooks_data:
|
|
|
return
|
|
return
|
|
|
|
|
|
|
@@ -132,9 +133,11 @@ def update_market_id_mapping(orderbooks_data):
|
|
|
market_id = orderbook.get('market_id')
|
|
market_id = orderbook.get('market_id')
|
|
|
symbol = orderbook.get('symbol')
|
|
symbol = orderbook.get('symbol')
|
|
|
if market_id is not None and symbol:
|
|
if market_id is not None and symbol:
|
|
|
- market_id_to_symbol[market_id] = symbol
|
|
|
|
|
|
|
+ market_id_to_orderbook[market_id] = orderbook
|
|
|
|
|
|
|
|
- logger.info(f"更新market_id映射,共 {len(market_id_to_symbol)} 个交易对,{market_id_to_symbol}")
|
|
|
|
|
|
|
+ # 只打印映射数量和symbol信息,避免日志过长
|
|
|
|
|
+ symbols_info = {market_id: orderbook.get('symbol') for market_id, orderbook in market_id_to_orderbook.items()}
|
|
|
|
|
+ logger.info(f"更新market_id映射,共 {len(market_id_to_orderbook)} 个交易对,{symbols_info}")
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
logger.error(f"更新market_id映射时出错: {str(e)}")
|
|
logger.error(f"更新market_id映射时出错: {str(e)}")
|
|
|
|
|
|
|
@@ -234,7 +237,7 @@ async def handle_market_stats_websocket():
|
|
|
"timestamp": time.time()
|
|
"timestamp": time.time()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- symbol = market_id_to_symbol.get(market_id, f"UNKNOWN_{market_id}")
|
|
|
|
|
|
|
+ symbol = market_id_to_orderbook.get(market_id, {}).get('symbol', f"UNKNOWN_{market_id}")
|
|
|
logger.debug(f"更新Market Stats缓存 - {symbol}(ID:{market_id}): mark_price={market_data.get('mark_price')}, last_trade_price={market_data.get('last_trade_price')}")
|
|
logger.debug(f"更新Market Stats缓存 - {symbol}(ID:{market_id}): mark_price={market_data.get('mark_price')}, last_trade_price={market_data.get('last_trade_price')}")
|
|
|
|
|
|
|
|
# # 触发策略更新
|
|
# # 触发策略更新
|
|
@@ -314,10 +317,11 @@ async def trigger_strategy_update():
|
|
|
return
|
|
return
|
|
|
|
|
|
|
|
# 遍历所有匹配的交易对,调用策略
|
|
# 遍历所有匹配的交易对,调用策略
|
|
|
- for market_id, symbol in market_id_to_symbol.items():
|
|
|
|
|
|
|
+ for market_id, orderbook in market_id_to_orderbook.items():
|
|
|
if market_id not in market_stats_cache:
|
|
if market_id not in market_stats_cache:
|
|
|
continue
|
|
continue
|
|
|
|
|
|
|
|
|
|
+ symbol = orderbook.get('symbol')
|
|
|
binance_symbol = f"{symbol}USDT"
|
|
binance_symbol = f"{symbol}USDT"
|
|
|
if (binance_symbol not in binance_data_cache['mark_prices'] or
|
|
if (binance_symbol not in binance_data_cache['mark_prices'] or
|
|
|
binance_symbol not in binance_data_cache['latest_prices']):
|
|
binance_symbol not in binance_data_cache['latest_prices']):
|
|
@@ -330,7 +334,8 @@ async def trigger_strategy_update():
|
|
|
'binance_price': binance_data_cache['latest_prices'][binance_symbol],
|
|
'binance_price': binance_data_cache['latest_prices'][binance_symbol],
|
|
|
'lighter_mark_price': lighter_stats.get('mark_price'),
|
|
'lighter_mark_price': lighter_stats.get('mark_price'),
|
|
|
'lighter_price': lighter_stats.get('last_trade_price'),
|
|
'lighter_price': lighter_stats.get('last_trade_price'),
|
|
|
- 'timestamp': int(time.time() * 1000)
|
|
|
|
|
|
|
+ 'timestamp': int(time.time() * 1000),
|
|
|
|
|
+ 'orderbook': orderbook # 传入orderbook(市场信息,不是深度信息)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
# 调用策略
|
|
# 调用策略
|
|
@@ -350,12 +355,14 @@ def process_data():
|
|
|
batch_data = []
|
|
batch_data = []
|
|
|
matching_count = 0
|
|
matching_count = 0
|
|
|
|
|
|
|
|
- # 遍历market_id_to_symbol映射,查找匹配的交易对
|
|
|
|
|
- for market_id, symbol in market_id_to_symbol.items():
|
|
|
|
|
|
|
+ # 遍历market_id_to_orderbook映射,查找匹配的交易对
|
|
|
|
|
+ for market_id, orderbook in market_id_to_orderbook.items():
|
|
|
# 检查Lighter数据是否存在
|
|
# 检查Lighter数据是否存在
|
|
|
if market_id not in market_stats_cache:
|
|
if market_id not in market_stats_cache:
|
|
|
continue
|
|
continue
|
|
|
|
|
|
|
|
|
|
+ # 获取交易对符号
|
|
|
|
|
+ symbol = orderbook.get('symbol')
|
|
|
# 构造Binance交易对名称
|
|
# 构造Binance交易对名称
|
|
|
binance_symbol = f"{symbol}USDT"
|
|
binance_symbol = f"{symbol}USDT"
|
|
|
|
|
|