alphax/app/core/sector_map.py
2026-05-13 22:49:47 +08:00

151 lines
5.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
山寨币板块映射表 + 动态龙头识别
板块分类硬编码,龙头动态计算(板块内涨幅最大的就是龙头)
"""
# 板块定义:币种 → 板块名
# 只包含Binance上线的主流山寨币
SECTOR_MEMBERS = {
"AI_DePIN": [
"FET/USDT", "RENDER/USDT", "TAO/USDT", "AKT/USDT", "AETH/USDT",
"WLD/USDT", "RNDR/USDT", "OCEAN/USDT", "INJ/USDT", "ATH/USDT",
"AI/USDT", "VANA/USDT",
],
"Layer2": [
"ARB/USDT", "OP/USDT", "MATIC/USDT", "IMX/USDT", "STRK/USDT",
"METIS/USDT", "SKL/USDT", "CELO/USDT", "LRC/USDT",
"POL/USDT",
],
"DeFi": [
"AAVE/USDT", "UNI/USDT", "COMP/USDT", "CRV/USDT", "MKR/USDT",
"SNX/USDT", "SUSHI/USDT", "1INCH/USDT", "YFI/USDT", "LDO/USDT",
"RPL/USDT", "PENDLE/USDT", "ENA/USDT", "EIGEN/USDT",
"API3/USDT", "BIO/USDT", "ENSO/USDT", "LINK/USDT",
"SPK/USDT", "TRB/USDT", "WLFI/USDT",
],
"MEME": [
"PEPE/USDT", "WIF/USDT", "BONK/USDT", "FLOKI/USDT", "DOGE/USDT",
"SHIB/USDT", "MEME/USDT", "TRUMP/USDT", "BOME/USDT",
"BANANAS31/USDT", "KAT/USDT", "NEIRO/USDT",
],
"Solana_eco": [
"SOL/USDT", "JUP/USDT", "JTO/USDT", "PYTH/USDT", "BONK/USDT",
"WIF/USDT", "HNT/USDT", "RAY/USDT",
],
"BTC_eco": [
"STX/USDT", "ORDI/USDT", "SATS/USDT", "RIF/USDT",
],
"Gaming_Metaverse": [
"AXS/USDT", "MANA/USDT", "SAND/USDT", "ENJ/USDT", "GALA/USDT",
"ALICE/USDT", "ILV/USDT", "MAGIC/USDT", "YGG/USDT",
"APE/USDT", "CHZ/USDT",
],
"Storage_Computing": [
"FIL/USDT", "AR/USDT", "CHIA/USDT", "RNDR/USDT", "AKT/USDT",
"ETHFI/USDT",
],
"RWA": [
"POLYX/USDT", "TRU/USDT", "CFG/USDT", "MPL/USDT",
"PLUME/USDT",
],
"Layer1_alt": [
"ADA/USDT", "ATOM/USDT", "DOT/USDT", "AVAX/USDT", "NEAR/USDT",
"ALGO/USDT", "FTM/USDT", "SEI/USDT", "SUI/USDT", "APT/USDT",
"TON/USDT", "KAS/USDT", "TIA/USDT",
"AXL/USDT", "DASH/USDT", "HBAR/USDT", "LTC/USDT",
"MOVR/USDT", "TRX/USDT", "XRP/USDT", "ZEN/USDT",
],
}
# MEME板块的特殊阈值波动大阈值不同
MEME_SECTORS = {"MEME", "Solana_eco"} # Solana生态也包含很多MEME
# 构建反向映射:币种 → 所属板块列表(一个币可能属于多个板块)
COIN_TO_SECTORS = {}
for sector, coins in SECTOR_MEMBERS.items():
for coin in coins:
if coin not in COIN_TO_SECTORS:
COIN_TO_SECTORS[coin] = []
COIN_TO_SECTORS[coin].append(sector)
# 排除列表(不监控的币种)
EXCLUDE_SYMBOLS = set() # 稳定币、Wrapped代币在粗筛中过滤
# 市值Top200门槛24h成交量最低要求
MIN_24H_VOLUME_USD = 5_000_000 # $5M
# MEME板块最低成交量更低MEME流动性更差
MEME_MIN_24H_VOLUME_USD = 2_000_000 # $2M
def get_sector_for_coin(symbol):
"""获取币种所属的所有板块"""
return COIN_TO_SECTORS.get(symbol, [])
def is_meme_coin(symbol):
"""判断是否是MEME类币种阈值不同"""
sectors = set(get_sector_for_coin(symbol))
return bool(sectors & MEME_SECTORS)
def get_burst_threshold(symbol):
"""获取爆发涨幅阈值MEME更高"""
if is_meme_coin(symbol):
return 10.0 # MEME: 10%才算爆发
return 5.0 # 主流: 5%算爆发
def get_stop_loss_pct(symbol):
"""获取止损百分比MEME更大"""
if is_meme_coin(symbol):
return 5.0 # MEME: -5%止损
return 3.0 # 主流: -3%止损
def dynamic_leader_detection(sector_perf):
"""
动态龙头识别
sector_perf: {sector: {symbol: pct_change_4h}}
返回: {sector: {"leader": symbol, "leader_pct": float, "is_leader_hot": bool}}
"""
results = {}
for sector, coin_perf in sector_perf.items():
if not coin_perf:
results[sector] = {"leader": None, "leader_pct": 0, "is_leader_hot": False}
continue
# 找涨幅最大的作为龙头
sorted_perf = sorted(coin_perf.items(), key=lambda x: x[1], reverse=True)
leader = sorted_perf[0][0]
leader_pct = sorted_perf[0][1]
# MEME板块龙头启动阈值更高
threshold = 8.0 if sector in MEME_SECTORS else 5.0
results[sector] = {
"leader": leader,
"leader_pct": leader_pct,
"is_leader_hot": leader_pct >= threshold,
}
return results
if __name__ == "__main__":
# 测试
print("币种 → 板块映射示例:")
for coin in ["FET/USDT", "JUP/USDT", "PEPE/USDT", "ARB/USDT"]:
print(f" {coin}{get_sector_for_coin(coin)}")
print(f" 爆发阈值: {get_burst_threshold(coin)}%, 止损: {get_stop_loss_pct(coin)}%")
# 测试动态龙头
test_perf = {
"AI_DePIN": {"FET/USDT": 7.2, "RENDER/USDT": 3.1, "TAO/USDT": 1.5},
"MEME": {"PEPE/USDT": 12.0, "WIF/USDT": 4.5, "DOGE/USDT": 2.1},
}
leaders = dynamic_leader_detection(test_perf)
print("\n动态龙头检测结果:")
for sector, info in leaders.items():
print(f" {sector}: 龙头={info['leader']}, 涨幅={info['leader_pct']}%, 热度={info['is_leader_hot']}")