This commit is contained in:
薇薇安 2026-01-24 10:32:41 +08:00
parent 27ddbcb8c1
commit f2d71d3390
3 changed files with 16 additions and 13 deletions

View File

@ -153,7 +153,11 @@ class BinanceClient:
retries: 重试次数默认从config读取 retries: 重试次数默认从config读取
""" """
# 连接前刷新API密钥确保使用最新值支持热更新 # 连接前刷新API密钥确保使用最新值支持热更新
self._refresh_api_credentials() # 但如果 API 密钥为空(只用于获取公开行情),则跳过
if self.api_key and self.api_secret:
self._refresh_api_credentials()
else:
logger.info("BinanceClient: 使用公开 API无需认证只能获取行情数据")
timeout = timeout or config.CONNECTION_TIMEOUT timeout = timeout or config.CONNECTION_TIMEOUT
retries = retries or config.CONNECTION_RETRIES retries = retries or config.CONNECTION_RETRIES
@ -166,10 +170,10 @@ class BinanceClient:
f"测试网: {self.testnet}, 超时: {timeout}秒)..." f"测试网: {self.testnet}, 超时: {timeout}秒)..."
) )
# 创建客户端使用最新的API密钥 # 创建客户端使用最新的API密钥,如果为空则只能访问公开接口
self.client = await AsyncClient.create( self.client = await AsyncClient.create(
api_key=self.api_key, api_key=self.api_key or None, # 空字符串转为 None
api_secret=self.api_secret, api_secret=self.api_secret or None,
testnet=self.testnet testnet=self.testnet
) )

View File

@ -126,7 +126,10 @@ async def main():
client: BinanceClient | None = None client: BinanceClient | None = None
try: try:
client = BinanceClient() # 推荐服务不需要特定账户的 API 密钥,只需要获取行情数据
# 使用空 API 密钥(公开接口)或使用只读权限的密钥
logger.info("推荐服务初始化(不依赖特定账户,只获取行情数据)")
client = BinanceClient(api_key="", api_secret="") # 使用空密钥,只获取公开行情
await client.connect() await client.connect()
scanner = MarketScanner(client) scanner = MarketScanner(client)

View File

@ -90,14 +90,10 @@ class TradeRecommender:
""" """
logger.info("开始生成交易推荐...") logger.info("开始生成交易推荐...")
# 获取账户余额(用于计算盈亏评估) # 推荐服务不需要获取特定账户余额,直接使用固定值用于计算推荐仓位
try: # 用户可以根据自己的实际余额调整实际下单量
balance = await self.client.get_account_balance() account_balance = 1000 # 固定使用 1000 USDT 作为参考余额
account_balance = balance.get('total', 1000) logger.debug(f"推荐服务使用固定参考余额: {account_balance:.2f} USDT用于计算推荐仓位比例")
logger.debug(f"账户余额: {account_balance:.2f} USDT")
except Exception as e:
account_balance = 1000
logger.warning(f"获取账户余额失败使用默认值1000 USDT: {e}")
# 1. 从Redis读取现有推荐如果启用缓存 # 1. 从Redis读取现有推荐如果启用缓存
existing_recommendations = {} existing_recommendations = {}