关于 custom-indicators
面向加密货币市场分析的技能,提供 9 种链上与衍生品指标的公式、解读指南和 Python 计算脚本,适合研究交易信号的分析者。
主要功能
- 01计算 9 种加密货币原生指标
- 02提供公式与信号解读指南
- 03支持多指标综合评分与背离识别
- 04通过免费 API 或演示数据计算指标
适用场景
- 01评估链上活动与市场估值
- 02分析交易所资金流和持仓变化
- 03跟踪代币持有者增长及流动性
- 04结合多个指标筛选交易信号
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agiprolabs/ claude-trading-skills --skill custom-indicators安装后在 Claude Code 中输入/custom-indicators确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/indicator_formulas.mdsignal_interpretation.mdscripts/compute_crypto_indicators.pyholder_momentum.py详细介绍
自定义加密货币指标
为什么标准技术分析不适用于加密货币
传统技术分析是为股票和外汇市场设计的——这些市场具有固定的供应量、受监管的交易所,以及以机构为主导的订单流。 加密货币市场具有独特的属性,因此需要专门设计的指标:
- 链上透明度:每笔交易都是公开的。我们可以衡量真实的经济活动,而不仅仅是单一交易所的价格和交易量。
- 供应机制:固定或按程序设定的供应计划,使供应侧分析(流通速度、持有者分布)具有意义。
- 衍生品主导:永续期货的资金费率和未平仓合约量往往会推动现货价格,而非相反。
- 巨鲸集中度:少数钱包持有了大量供应。追踪它们的行为,可以获得股票市场技术分析无法提供的超额收益。
- 交易所资金流:链上向中心化交易所存入或提取资产,表明了卖出或积累的意图。
本技能涵盖九种原生于加密货币的指标。每个章节都包含公式、解读指南、数据源和可运行的代码片段。
文件
| 文件 | 描述 |
|---|---|
references/indicator_formulas.md | 全部 9 种指标的完整公式、参数表和信号范围 |
references/signal_interpretation.md | 综合评分、背离检测、错误信号过滤 |
scripts/compute_crypto_indicators.py | 使用免费 API 或演示数据计算全部 9 种指标 |
scripts/holder_momentum.py | 持有者数量追踪及动量信号 |
指标 1:NVT 比率
网络价值与交易量比率——相当于加密货币领域的市盈率。
NVT = Market Cap / Daily On-Chain Transaction Volume (USD)
- NVT 高(> 65):相对于其经济吞吐量,网络被高估。看跌信号。
- NVT 低(< 25):网络被低估,或实际使用量很大。看涨信号。
- 数据源:CoinGecko(市值)、区块链浏览器或 DeFiLlama(交易量)。
def nvt_ratio(market_cap: float, daily_tx_volume_usd: float) -> float:
"""Compute NVT ratio.
Args:
market_cap: Current market capitalization in USD.
daily_tx_volume_usd: 24h on-chain transaction volume in USD.
Returns:
NVT ratio value.
"""
if daily_tx_volume_usd <= 0:
return float("inf")
return market_cap / daily_tx_volume_usd
平滑处理:对 NVT 应用 14 天或 28 天移动平均线(称为 NVT 信号),以减少每日交易量激增造成的噪声。
指标 2:MVRV 比率
市场价值与已实现价值比率——比较当前市值与所有持有者的总体成本基础。
MVRV = Market Cap / Realized Cap
Realized Cap = Sum of (each UTXO * price when it last moved)
- MVRV > 3.5:大多数持有者都获得了丰厚利润,可能出现派发。
- MVRV < 1.0:大多数持有者都处于亏损状态。历史上,这通常意味着市场触底。
- 数据源:Glassnode、CryptoQuant(Bitcoin/Ethereum)。对于 Solana 代币,可根据大额持有者的平均买入价格进行估算。
def mvrv_ratio(market_cap: float, realized_cap: float) -> float:
"""Compute MVRV ratio.
Args:
market_cap: Current market capitalization in USD.
realized_cap: Realized capitalization (aggregate cost basis).
Returns:
MVRV ratio value.
"""
if realized_cap <= 0:
return float("inf")
return market_cap / realized_cap
对于没有基于 UTXO 的已实现市值的代币,可根据 DEX 交易历史中的平均买入价格乘以流通供应量进行估算。
指标 3:交易所资金流
交易所净存入量减去净提取量——表明卖出或积累的意图。
Exchange Netflow = Deposits to Exchanges - Withdrawals from Exchanges
- 净流入为正(大量存入):持有者将代币转入交易所,可能准备卖出。看跌。
- 净流入为负(提取):代币从交易所转入冷存储。看涨的积累信号。
- 数据源:CryptoQuant、Glassnode。对于 Solana SPL 代币,可通过 Helius 或 Solana RPC 追踪转入已知交易所钱包的资产。
def exchange_netflow(
deposits_usd: float, withdrawals_usd: float
) -> tuple[float, str]:
"""Compute exchange netflow and interpret.
Returns:
Tuple of (netflow_value, signal_label).
"""
netflow = deposits_usd - withdrawals_usd
if netflow > 0:
signal = "bearish"
elif netflow < 0:
signal = "bullish"
else:
signal = "neutral"
return netflow, signal
按市值归一化,以便跨代币比较:
Netflow Ratio = Netflow / Market Cap。
指标 4:资金费率信号
永续期货合约使用资金费率,使价格锚定现货价格。
Funding Rate = (Perp Mark Price - Spot Price) / Spot Price
(paid every 8 hours on most exchanges)
- 资金费率极高且为正(> 0.05%):多头向空头支付资金费。市场多头杠杆过高。反向看跌。
- 资金费率极低且为负(< -0.05%):空头向多头支付资金费。市场空头杠杆过高。反向看涨。
- 数据源:Binance、Bybit、dYdX API。汇总各交易所数据,计算成交量加权平均值。
def funding_rate_signal(
rates: list[float], weights: list[float] | None = None
) -> tuple[float, str]:
"""Volume-weighted average funding rate with signal.
Args:
rates: Funding rates from multiple exchanges.
weights: Optional volume weights per exchange.
"""
import numpy as np
if weights is None:
weights = [1.0 / len(rates)] * len(rates)
vw_rate = float(np.average(rates, weights=weights))
if vw_rate > 0.0005:
signal = "bearish"
elif vw_rate < -0.0005:
signal = "bullish"
else:
signal = "neutral"
return vw_rate, signal
指标 5:未平仓合约量动能
跟踪衍生品交易所未平仓合约总量的变化率。
OI Momentum = (OI_today - OI_n_days_ago) / OI_n_days_ago * 100
- 未平仓合约量上升 + 价格上涨:新增资金进入多头。确认趋势。
- 未平仓合约量上升 + 价格下跌:新增空头仓位。看跌压力。
- 未平仓合约量下降 + 价格上涨:空头挤压/空头平仓。
- 未平仓合约量下降 + 价格下跌:多头清算。
- 数据来源:CoinGlass、Binance、Bybit 的未平仓合约量接口。
def oi_momentum(
oi_series: list[float], lookback: int = 7
) -> float:
"""Compute open interest momentum as percentage change.
Args:
oi_series: Daily open interest values (newest last).
lookback: Number of days for momentum calculation.
"""
if len(oi_series) < lookback + 1:
return 0.0
old = oi_series[-(lookback + 1)]
new = oi_series[-1]
if old <= 0:
return 0.0
return (new - old) / old * 100.0
指标 6:持有者动能
跟踪独立代币持有者数量随时间的净变化。
Holder Momentum = (Holders_today - Holders_n_days_ago) / Holders_n_days_ago
Holder Acceleration = Holder Momentum_today - Holder Momentum_yesterday
- 增长加速:病毒式普及阶段。看涨。
- 增长放缓:普及速度减慢。留意反转。
- 负向动能:持有者正在离场。看跌。
- 数据来源:Helius DAS API(Solana)、Etherscan 代币持有者数量、Birdeye 持有者统计数据。
def holder_momentum(
holder_counts: list[int], lookback: int = 7
) -> tuple[float, float]:
"""Compute holder momentum and acceleration.
Returns:
Tuple of (momentum_pct, acceleration).
"""
if len(holder_counts) < lookback + 2:
return 0.0, 0.0
old = holder_counts[-(lookback + 1)]
new = holder_counts[-1]
prev_old = holder_counts[-(lookback + 2)]
prev_new = holder_counts[-2]
mom = (new - old) / old if old > 0 else 0.0
prev_mom = (prev_new - prev_old) / prev_old if prev_old > 0 else 0.0
accel = mom - prev_mom
return mom, accel
完整的跟踪实现请参见 scripts/holder_momentum.py。
指标 7:流动性评分
综合订单簿深度、买卖价差和 DEX 池深度,估算建立/退出仓位的难易程度。
Liquidity Score = w1 * Depth Score + w2 * Spread Score + w3 * Pool Score
其中:
- 深度评分 =
min(1, total_bids_within_2pct / target_position_size) - 价差评分 =
max(0, 1 - spread_bps / 100) - 池评分 =
min(1, pool_tvl / (target_position_size * 10)) - 默认权重:
w1=0.4, w2=0.3, w3=0.3
def liquidity_score(
depth_usd: float,
spread_bps: float,
pool_tvl: float,
position_size: float,
weights: tuple[float, float, float] = (0.4, 0.3, 0.3),
) -> float:
"""Composite liquidity score from 0 (illiquid) to 1 (highly liquid)."""
depth_s = min(1.0, depth_usd / position_size) if position_size > 0 else 0
spread_s = max(0.0, 1.0 - spread_bps / 100.0)
pool_s = min(1.0, pool_tvl / (position_size * 10)) if position_size > 0 else 0
return weights[0] * depth_s + weights[1] * spread_s + weights[2] * pool_s
指标 8:聪明钱流向
被识别为“聪明钱”的钱包(历史上盈利、大额余额、较早入场的模式)所产生的净买入压力。
Smart Money Flow = Sum(smart_wallet_buys_usd) - Sum(smart_wallet_sells_usd)
SMF Ratio = Smart Money Flow / Total Volume
- SMF 比率 > 0.1:聪明钱正在净买入。看涨。
- SMF 比率 < -0.1:聪明钱正在分发。看跌。
- 数据来源:Helius 交易解析和钱包标记、Birdeye 钱包分析、Nansen(Ethereum)。
def smart_money_flow(
smart_buys_usd: float,
smart_sells_usd: float,
total_volume_usd: float,
) -> tuple[float, float, str]:
"""Compute smart money flow and ratio.
Returns:
Tuple of (net_flow, smf_ratio, signal).
"""
net = smart_buys_usd - smart_sells_usd
ratio = net / total_volume_usd if total_volume_usd > 0 else 0.0
if ratio > 0.1:
signal = "bullish"
elif ratio < -0.1:
signal = "bearish"
else:
signal = "neutral"
return net, ratio, signal
指标 9:代币周转率
衡量代币相对于其供应量的易手频率。
Token Velocity = Daily Trading Volume (tokens) / Circulating Supply
- 周转率高(> 0.3):投机交易占主导。代币在被频繁转手,而非持有。可能预示抛售。
- 周转率低(< 0.05):持有者坚定持有。强势持仓者。
- 数据来源:CoinGecko(交易量、供应量)、DEX 聚合器交易量。
def token_velocity(
daily_volume_tokens: float, circulating_supply: float
) -> tuple[float, str]:
"""Compute token velocity.
Returns:
Tuple of (velocity, interpretation).
"""
if circulating_supply <= 0:
return 0.0, "unknown"
vel = daily_volume_tokens / circulating_supply
if vel > 0.3:
interp = "high_speculation"
elif vel > 0.1:
interp = "moderate"
elif vel > 0.05:
interp = "low"
else:
interp = "very_low_strong_holders"
return vel, interp
组合指标
没有任何单一指标能独立提供可靠信号。如何进行以下操作,请参见
references/signal_interpretation.md:
- 根据多个指标构建综合评分
- 检测背离(例如,价格上涨但 NVT 扩大)
- 根据市场状态调整解读
- 过滤错误信号
依赖项
uv pip install httpx pandas numpy
免责声明
本技能提供的所有指标和分析仅用于提供信息和教育目的,不构成财务建议。做出任何投资决策之前,请务必自行研究。