MCP 服务器

TraderSpy

app.traderspy/traderspy

此 MCP 可以做什么

Provides crypto futures prices, candles, technical indicators, derivatives data, smart-money positions, AI signals, screeners, leaderboards, and historical backtests.

backtest_condition
What happened AFTER a condition in the past, on one symbol and timeframe — "how did BTC do after RSI dropped below 30 on 4h", "is a golden cross on ETH daily actually bullish", "what usually follows a −5% day on SOL". Runs an event study over the whole stored tape (up to 1000 candles: ~41 days on 1h, ~166 days on 4h, ~3 years on 1d): occurrences, average / median forward return, win rate, average best and worst excursion per horizon, the unconditional baseline over the same tape and the EDGE the condition adds over it, the last five episodes, and whether the condition is active on the latest bar. Same condition vocabulary as screen_symbols. Quote the edge and the sample size together — a 3-sample stat is an anecdote.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['symbol', 'conditions'], 'properties': {'symbol': {'type': 'string', 'description': 'Trading pair, e.g. BTCUSDT (a bare "BTC" is read as its USDT perpetual)'}, 'horizons': {'type': 'array', 'items': {'type': 'integer', 'maximum': 200, 'minimum': 1}, 'maxItems': 4, 'minItems': 1, 'description': 'Bars ahead to measure returns over (â\x89¤ 4). Default per interval â\x89\x88 4h / 1d / 3d: 1h â\x86\x92 [4, 24, 72], 4h â\x86\x92 [6, 18, 42], 1d â\x86\x92 [1, 3, 7].'}, 'interval': {'enum': ['1m', '5m', '15m', '1h', '4h', '1d'], 'type': 'string', 'default': '4h', 'description': 'Candle timeframe'}, 'conditions': {'type': 'array', 'items': {'type': 'object', 'required': ['metric', 'op', 'value'], 'properties': {'op': {'enum': ['lt', 'gt', 'crossAbove', 'crossBelow'], 'type': 'string', 'description': 'lt / gt compare the latest value; crossAbove / crossBelow are one-bar events (previous bar on the other side).'}, 'value': {'type': 'number', 'description': "Threshold, in the metric's own unit (RSI 30, %B 0, spread 0, change â\x88\x925 â\x80¦)"}, 'metric': {'enum': ['rsi', 'stochastic', 'cci', 'mfi', 'williamsR', 'adx', 'roc', 'macdHistogram', 'atrPct', 'volumeRatio', 'bbPercentB', 'bbWidthPct', 'priceVsEma', 'emaSpread', 'supertrend', 'changePct', 'price'], 'type': 'string', 'description': 'Metric. Defaults in brackets. rsi(14): RSI, 0â\x80\x93100; stochastic(14,3): Slow stochastic %K (period, %D smoothing), 0â\x80\x93100; cci(20): Commodity Channel Index; mfi(14): Money Flow Index, 0â\x80\x93100; williamsR(14): Williams %R, â\x88\x92100â\x80\x930; adx(14): Average Directional Index; roc(12): Rate of change in %; macdHistogram(12,26): MACD histogram (fast, slow; signal 9); atrPct(14): ATR as % of price; volumeRatio(20): Bar volume ÷ average of the previous N bars; bbPercentB(20): Position inside Bollinger (20, 2): 0 = lower band, 1 = upper band; bbWidthPct(20): Bollinger band width as % of the middle band; priceVsEma(50): % distance of close from EMA(period); > 0 = above; emaSpread(50,200): % of EMA(period) over EMA(period2); crossAbove 0 = golden cross; supertrend(10): +1 in an up-trend, â\x88\x921 in a down-trend (ATR period, multiplier 3); changePct(24): % change of close over the last N bars; price: Close price'}, 'period': {'type': 'integer', 'maximum': 200, 'minimum': 2, 'description': "Override the metric's primary period (RSI length, EMA period, bars for changePct)"}, 'period2': {'type': 'integer', 'maximum': 200, 'minimum': 2, 'description': 'Second period where the metric has one: slow EMA for emaSpread, slow MACD, stochastic %D'}}, 'additionalProperties': False}, 'maxItems': 3, 'description': 'Up to 3 conditions, AND-ed. Examples: RSI oversold = {"metric":"rsi","op":"lt","value":30}; above the 200 EMA = {"metric":"priceVsEma","op":"gt","value":0,"period":200}; golden cross = {"metric":"emaSpread","op":"crossAbove","value":0,"period":50,"period2":200}; MACD bullish cross = {"metric":"macdHistogram","op":"crossAbove","value":0}; dumped 5% in a day = {"metric":"changePct","op":"lt","value":-5,"period":24}.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'to': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'bars': {'type': ['number', 'null'], 'description': 'Candles the study ran on (the whole stored tape)'}, 'from': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'recent': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Newest episodes first: { openTime, barsAgo, price, returnsPct { "<bars>": pct } }'}, 'symbol': {'type': ['string', 'null']}, 'horizons': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Per look-ahead: { bars, samples, avgReturnPct, medianReturnPct, winRatePct, avgMaxUpPct, avgMaxDownPct, bestPct, worstPct, baselineAvgReturnPct, edgePct } â\x80\x94 edge = avg â\x88\x92 unconditional baseline'}, 'interval': {'type': ['string', 'null']}, 'warnings': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}]}, 'activeNow': {'type': ['boolean', 'null'], 'description': 'Conditions hold on the latest closed bar'}, 'conditions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}]}, 'occurrences': {'type': ['number', 'null'], 'description': 'Episodes â\x80\x94 the FIRST bar of each run where the conditions held'}, 'horizonHours': {'anyOf': [{'type': 'array', 'items': {'type': 'number'}}, {'type': 'null'}]}, 'coverageHours': {'type': ['number', 'null']}, 'currentValues': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': True}, {'type': 'null'}], 'description': 'Latest value of every metric involved'}, 'evaluableBars': {'type': ['number', 'null']}, 'lastOccurrence': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': True}, {'type': 'null'}], 'description': '{ openTime, barsAgo, price }'}}, 'additionalProperties': False}
get_candles
Get OHLCV (Open, High, Low, Close, Volume) candle data for a crypto futures symbol. Useful for charting, price history, and technical analysis.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['symbol'], 'properties': {'limit': {'type': 'number', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Number of candles to return'}, 'symbol': {'type': 'string', 'description': 'Trading pair symbol, e.g. BTCUSDT'}, 'interval': {'enum': ['1m', '5m', '15m', '1h', '4h', '1d'], 'type': 'string', 'default': '1h', 'description': 'Candle interval/timeframe'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'symbol': {'type': ['string', 'null']}, 'candles': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {'low': {'type': ['number', 'null']}, 'high': {'type': ['number', 'null']}, 'open': {'type': ['number', 'null']}, 'close': {'type': ['number', 'null']}, 'volume': {'type': ['number', 'null']}, 'isFinal': {'type': ['boolean', 'null'], 'description': 'False for the candle still forming'}, 'openTime': {'type': ['number', 'null']}, 'closeTime': {'type': ['number', 'null']}}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Oldest first'}, 'interval': {'type': ['string', 'null']}}, 'additionalProperties': False}
get_derivatives
Funding rate, open interest and positioning for Binance USDⓈ-M perpetual futures — the derivatives questions candles cannot answer: is funding high (who is paying whom, annualized), is open interest building or unwinding (24h/4h change, and the OI×price regime: new longs, short covering, new shorts, long liquidation), and which way accounts lean (top-trader long/short by position, all-account ratio, taker buy/sell flow). Each symbol carries plain-language notes — quote those. Up to 5 symbols per call; data is 60s fresh.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['symbols'], 'properties': {'symbols': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 5, 'minItems': 1, 'description': 'Up to 5 Binance USDâ\x93\x88-M futures symbols, e.g. ["BTCUSDT", "ETHUSDT"]. A bare base asset ("BTC") is read as its USDT perpetual.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'data': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'One entry per symbol: { symbol, markPrice, indexPrice, premiumPct, funding { rate, ratePct, annualizedPct, nextFundingTime, minutesToNextFunding, avg24hPct, avg3dPct, label }, openInterest { contracts, valueUsd, change4hPct, change24hPct, priceChange24hPct, regime }, positioning { globalLongShortRatio, globalLongPct, topTraderLongShortRatio, topTraderLongPct, takerBuySellRatio, label }, notes[] } â\x80\x94 or { symbol, error, message } when the symbol is not a Binance USDâ\x93\x88-M futures pair'}, 'count': {'type': ['number', 'null']}}, 'additionalProperties': False}
get_elite_leaderboard
Use this when the user specifically asks for the elite leaderboard by SmartScore across exchanges.
只读 幂等
输入模式
{'type': 'object', 'properties': {}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'key': {'type': ['string', 'null']}, 'title': {'type': ['string', 'null']}, 'source': {'type': ['string', 'null']}, 'leaders': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Ranked traders with score, scoreBreakdown, metrics, rationale[] and tier'}, 'summary': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': True}, {'type': 'null'}], 'description': 'Coverage of the run: traders scored, trades counted'}, 'lastRunAt': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'updatedAt': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'algorithmDetails': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'How each scoring component is weighted'}, 'algorithmVersion': {'type': ['string', 'null']}}, 'additionalProperties': False}
get_exchanges
Use this when the user asks which exchanges are currently available in TraderSpy smart-money tracking.
只读 幂等
输入模式
{'type': 'object', 'properties': {}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'data': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {'source': {'type': ['string', 'null']}, 'enabled': {'type': ['boolean', 'null']}}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Tracked exchanges and whether each is currently enabled'}}, 'additionalProperties': False}
get_market_stats
Use this when the user asks for aggregate market stats (positions, PNL, win rate), optionally scoped by source and period.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'period': {'enum': ['4h', '8h', '24h', '7d'], 'type': 'string', 'description': 'Time period for closed position stats'}, 'source': {'enum': ['all', 'binance', 'hyperliquid', 'bybit', 'okx'], 'type': 'string', 'default': 'all', 'description': 'Exchange filter'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'avgRoi': {'type': ['number', 'null']}, 'period': {'type': ['string', 'null']}, 'winRate': {'type': ['number', 'null'], 'description': 'Percentage of closed positions in profit; null when none closed'}, 'byExchange': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': True}, {'type': 'null'}], 'description': 'Per-exchange { totalPositions, openPositions }, keyed by exchange'}, 'realizedPnl': {'type': ['number', 'null']}, 'openPositions': {'type': ['number', 'null']}, 'closedInPeriod': {'type': ['number', 'null']}, 'totalPositions': {'type': ['number', 'null']}}, 'additionalProperties': False}
get_positions
Use this when the user asks for current or historical smart-money positions, optionally filtered by status, source, or symbol.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Number of positions to return'}, 'offset': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Offset for pagination'}, 'source': {'enum': ['all', 'binance', 'hyperliquid', 'bybit', 'okx'], 'type': 'string', 'default': 'all', 'description': 'Exchange filter'}, 'status': {'enum': ['all', 'open', 'closed'], 'type': 'string', 'default': 'all', 'description': 'Position status filter'}, 'symbol': {'type': 'string', 'description': 'Filter by trading pair, e.g. BTC, ETHUSDT'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'data': {'anyOf': [{'type': 'array', 'items': {'allOf': [{'type': 'object', 'properties': {'pnl': {'type': ['number', 'null']}, 'roi': {'type': ['number', 'null']}, 'side': {'type': ['string', 'null']}, 'size': {'type': ['number', 'null']}, 'isOpen': {'type': ['boolean', 'null']}, 'symbol': {'type': ['string', 'null']}, 'leverage': {'type': ['number', 'null']}, 'openTime': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'closeTime': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'lastEvent': {'type': ['string', 'null']}, 'markPrice': {'type': ['number', 'null']}, 'closePrice': {'type': ['number', 'null']}, 'entryPrice': {'type': ['number', 'null']}, 'unrealizedPnl': {'type': ['number', 'null']}}, 'additionalProperties': True}, {'type': 'object', 'properties': {'sortDate': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}}, 'additionalProperties': True}]}}, {'type': 'null'}], 'description': 'Smart money positions across the tracked exchanges'}, 'pagination': {'anyOf': [{'type': 'object', 'properties': {'limit': {'type': ['number', 'null']}, 'total': {'type': ['number', 'null']}, 'offset': {'type': ['number', 'null']}, 'hasMore': {'type': ['boolean', 'null']}}, 'additionalProperties': True}, {'type': 'null'}]}}, 'additionalProperties': False}
get_price
Get real-time price data for one or more crypto futures symbols. Returns current price, 24h high/low, volume, and 24h price change percentage.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['symbols'], 'properties': {'symbols': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 20, 'minItems': 1, 'description': 'List of symbols to get prices for, e.g. ["BTCUSDT", "ETHUSDT"]'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'data': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {'price': {'type': ['number', 'null']}, 'low24h': {'type': ['number', 'null']}, 'symbol': {'type': ['string', 'null']}, 'high24h': {'type': ['number', 'null']}, 'change24h': {'type': ['number', 'null'], 'description': '24h change as a percentage'}, 'updatedAt': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'volume24h': {'type': ['number', 'null']}}, 'additionalProperties': True}}, {'type': 'null'}]}}, 'additionalProperties': False}
get_signal_details
Use this when the user needs full details for one AI signal by ID, including review and resolution data.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['signalId'], 'properties': {'signalId': {'type': 'string', 'description': 'The ID of the signal to retrieve'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': ['string', 'null'], 'description': 'Signal id â\x80\x94 pass to get_signal_details'}, 'coin': {'type': ['string', 'null']}, 'price': {'type': ['number', 'null'], 'description': 'Price when the signal triggered'}, 'action': {'type': ['string', 'null'], 'description': 'buy or sell'}, 'history': {'anyOf': [{'type': 'object', 'properties': {'entryPrice': {'type': ['number', 'null']}, 'resolution': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': True}, {'type': 'null'}], 'description': '{ status, price, time } once resolved'}, 'lowestPrice': {'type': ['number', 'null']}, 'currentPrice': {'type': ['number', 'null']}, 'highestPrice': {'type': ['number', 'null']}}, 'additionalProperties': True}, {'type': 'null'}]}, 'targets': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Take-profit and stop levels: { label, type, pct }'}, 'aiReview': {'anyOf': [{'type': 'object', 'properties': {'score': {'type': ['number', 'null']}, 'analysis': {'type': ['string', 'null']}, 'decision': {'type': ['string', 'null']}}, 'additionalProperties': True}, {'type': 'null'}]}, 'createdAt': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'livePrice': {'type': ['number', 'null'], 'description': 'Current price, so the model can judge whether the signal still stands'}, 'timeframe': {'type': ['string', 'null'], 'description': 'Chart timeframe the preset evaluated, e.g. 4h'}, 'importance': {'type': ['string', 'null'], 'description': 'high | medium | low'}, 'strategyName': {'type': ['string', 'null'], 'description': 'Preset that produced the signal'}, 'signalStrength': {'type': ['string', 'null'], 'description': 'weak | moderate | strong | very_strong'}, 'indicatorValues': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': True}, {'type': 'null'}], 'description': 'Indicator readings at trigger time'}, 'resolutionStatus': {'type': ['string', 'null'], 'description': 'pending | stop | tp1_hit | tp2_hit | tp3_hit | profit_locked | expired'}, 'triggeredConditions': {'anyOf': [{'type': 'array', 'items': {}}, {'type': 'null'}]}}, 'additionalProperties': False}
get_signals
Use this when the user asks for recent public AI crypto trading signals, optionally filtered by coin, importance, strategy (the preset that produced them, by name) or pagination. When the user names a count ("last 5 signals"), pass it as `limit` — the card view renders exactly what was fetched, so over-fetching shows more cards than the user asked for.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'coin': {'type': 'string', 'description': 'Filter by coin symbol, e.g. BTC, ETH'}, 'skip': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Offset for pagination'}, 'limit': {'type': 'number', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Number of signals to return'}, 'strategy': {'type': 'string', 'description': 'Filter by the AI strategy (preset) that produced the signal â\x80\x94 part of its name, words in order, case-insensitive, e.g. "ATR Squeeze" or "Triple Oversold". get_signal_stats (period 7d) lists the strategies that fired recently with their names; a filter that matches nothing answers with the closest names.'}, 'importance': {'enum': ['high', 'medium', 'low', 'all'], 'type': 'string', 'default': 'all', 'description': 'Filter by signal importance'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'data': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': ['string', 'null'], 'description': 'Signal id â\x80\x94 pass to get_signal_details'}, 'coin': {'type': ['string', 'null']}, 'price': {'type': ['number', 'null'], 'description': 'Price when the signal triggered'}, 'action': {'type': ['string', 'null'], 'description': 'buy or sell'}, 'targets': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Take-profit and stop levels: { label, type, pct }'}, 'createdAt': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'timeframe': {'type': ['string', 'null'], 'description': 'Chart timeframe the preset evaluated, e.g. 4h'}, 'importance': {'type': ['string', 'null'], 'description': 'high | medium | low'}, 'strategyName': {'type': ['string', 'null'], 'description': 'Preset that produced the signal'}, 'signalStrength': {'type': ['string', 'null'], 'description': 'weak | moderate | strong | very_strong'}, 'resolutionStatus': {'type': ['string', 'null'], 'description': 'pending | stop | tp1_hit | tp2_hit | tp3_hit | profit_locked | expired'}, 'triggeredConditions': {'anyOf': [{'type': 'array', 'items': {}}, {'type': 'null'}]}}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Signals, newest first'}, 'warning': {'type': ['string', 'null'], 'description': 'Set when a strategy filter could not be applied or matched nothing (with the closest preset names)'}, 'pagination': {'anyOf': [{'type': 'object', 'properties': {'skip': {'type': ['number', 'null']}, 'limit': {'type': ['number', 'null']}, 'total': {'type': ['number', 'null']}, 'hasMore': {'type': ['boolean', 'null']}}, 'additionalProperties': True}, {'type': 'null'}]}}, 'additionalProperties': False}
get_signal_stats
Use this when the user asks for aggregate AI signal performance statistics over a specific period — overall, or for one strategy (preset) by name. The answer also breaks the period down per strategy (byStrategy), which is how to learn the strategy names for get_signals.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'period': {'enum': ['4h', '8h', '24h', '7d'], 'type': 'string', 'default': '24h', 'description': 'Time period for statistics'}, 'strategy': {'type': 'string', 'description': 'Only the signals of one AI strategy (preset), matched by part of its name, case-insensitive.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'total': {'type': ['number', 'null'], 'description': 'Signals published in the period'}, 'pending': {'type': ['number', 'null'], 'description': 'Still open at the end of the period'}, 'stopped': {'type': ['number', 'null']}, 'warning': {'type': ['string', 'null'], 'description': 'Set when a strategy filter could not be applied or matched nothing (with the closest preset names)'}, 'winRate': {'type': ['number', 'null'], 'description': 'targetHits / resolved, as a percentage; null when nothing resolved'}, 'strategy': {'type': ['string', 'null'], 'description': 'The strategy filter that was applied, if any'}, 'highCount': {'type': ['number', 'null'], 'description': 'High-importance signals'}, 'byStrategy': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {'total': {'type': ['number', 'null']}, 'pending': {'type': ['number', 'null']}, 'stopped': {'type': ['number', 'null']}, 'winRate': {'type': ['number', 'null'], 'description': 'targetHits / resolved, as a percentage; null when nothing resolved'}, 'targetHits': {'type': ['number', 'null']}, 'strategyName': {'type': ['string', 'null'], 'description': 'The preset â\x80\x94 pass it to get_signals as `strategy`'}}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'The same counts per strategy (preset) that fired in the period, most signals first'}, 'targetHits': {'type': ['number', 'null'], 'description': 'Signals that reached a take-profit or locked profit'}}, 'additionalProperties': False}
get_technical_indicators
Technical analysis for a crypto futures symbol. 19 indicators: RSI, MACD, EMA, SMA, Bollinger Bands, ATR, ADX (+DI/−DI), Stochastic, OBV (with price divergence), VWAP, CCI, MFI, Williams %R, ROC, SuperTrend, Ichimoku, Keltner Channels, classic pivot points and swing support/resistance levels. Every indicator returns its current value, the previous bar, a rising/falling/flat direction, a short `series` history and — where it applies — zones and crossovers. EMA/SMA accept several periods at once (default 20/50/200); every period is overridable via `periods`. Pass `intervals` (up to 3) to get 1h/4h/1d in ONE call with a multi-timeframe `confluence` verdict. Each timeframe also carries a `summary` (bias, trend, momentum, volatility, volume, plain-language notes) computed from a fixed indicator set — quote its notes rather than the raw score.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'description': 'Trading pair symbol, e.g. BTCUSDT'}, 'history': {'type': 'integer', 'default': 5, 'maximum': 20, 'minimum': 0, 'description': 'Prior values returned per indicator as `series` (oldest â\x86\x92 newest, length history + 1). 0 = latest only.'}, 'periods': {'type': 'object', 'properties': {'adx': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'ADX period (default 14)'}, 'atr': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'ATR period (default 14)'}, 'cci': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'CCI period (default 20)'}, 'ema': {'type': 'array', 'items': {'type': 'integer', 'maximum': 500, 'minimum': 2}, 'maxItems': 4, 'minItems': 1, 'description': 'EMA periods, up to 4 (default [20, 50, 200])'}, 'mfi': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'MFI period (default 14)'}, 'obv': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'OBV averaging window (default 20)'}, 'roc': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'Rate-of-change period (default 12)'}, 'rsi': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'RSI period (default 14)'}, 'sma': {'type': 'array', 'items': {'type': 'integer', 'maximum': 500, 'minimum': 2}, 'maxItems': 4, 'minItems': 1, 'description': 'SMA periods, up to 4 (default [20, 50, 200])'}, 'vwap': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'Rolling VWAP window in bars (default 48)'}, 'keltner': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'Keltner EMA period (default 20)'}, 'macdFast': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'MACD fast EMA (default 12)'}, 'macdSlow': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'MACD slow EMA (default 26)'}, 'bollinger': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'Bollinger period (default 20)'}, 'williamsR': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'Williams %R period (default 14)'}, 'keltnerAtr': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'Keltner ATR period (default 10)'}, 'macdSignal': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'MACD signal EMA (default 9)'}, 'stochastic': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'Stochastic %K period (default 14)'}, 'supertrend': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'SuperTrend ATR period (default 10)'}, 'bollingerStdDev': {'type': 'number', 'maximum': 5, 'minimum': 0.5, 'description': 'Bollinger std-dev multiplier (default 2)'}, 'stochasticSignal': {'type': 'integer', 'maximum': 500, 'minimum': 2, 'description': 'Stochastic %D smoothing (default 3)'}, 'keltnerMultiplier': {'type': 'number', 'maximum': 10, 'minimum': 0.5, 'description': 'Keltner ATR multiplier (default 2)'}, 'supertrendMultiplier': {'type': 'number', 'maximum': 10, 'minimum': 0.5, 'description': 'SuperTrend ATR multiplier (default 3)'}}, 'description': 'Optional period overrides, e.g. {"ema":[9,21,55,200],"rsi":7}', 'additionalProperties': False}, 'interval': {'enum': ['1m', '5m', '15m', '1h', '4h', '1d'], 'type': 'string', 'default': '1h', 'description': 'Candle timeframe. Ignored when `intervals` is given.'}, 'intervals': {'type': 'array', 'items': {'enum': ['1m', '5m', '15m', '1h', '4h', '1d'], 'type': 'string'}, 'maxItems': 3, 'minItems': 1, 'description': 'Up to 3 timeframes in ONE call (one quota unit), e.g. ["1h","4h","1d"]. The response then carries per-timeframe results plus a `confluence` verdict.'}, 'indicators': {'type': 'array', 'items': {'enum': ['rsi', 'macd', 'ema', 'sma', 'bollinger', 'atr', 'adx', 'stochastic', 'obv', 'vwap', 'cci', 'mfi', 'williamsR', 'roc', 'supertrend', 'ichimoku', 'keltner', 'pivots', 'levels'], 'type': 'string'}, 'default': ['rsi', 'macd', 'ema', 'bollinger'], 'maxItems': 19, 'minItems': 1, 'description': 'Indicators to compute. `levels` = swing support/resistance from price structure, `pivots` = classic floor pivots from the previous day.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'price': {'type': ['number', 'null'], 'description': 'Latest close on the primary timeframe, or null when no candles are stored'}, 'symbol': {'type': ['string', 'null']}, 'candles': {'type': ['number', 'null'], 'description': 'Closed candles the primary timeframe was computed on'}, 'summary': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': True}, {'type': 'null'}], 'description': 'Single-timeframe call only: bias, score, trend, momentum, volatility, volume, notes[]. Omitted when `timeframes` is present.'}, 'interval': {'type': ['string', 'null'], 'description': 'Primary timeframe (the first requested one)'}, 'settings': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': True}, {'type': 'null'}], 'description': 'Echo of what was computed: indicators, history, resolved periods'}, 'warnings': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}]}, 'confluence': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': True}, {'type': 'null'}], 'description': 'Multi-timeframe agreement: { aligned, bias, byInterval }'}, 'indicators': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': True}, {'type': 'null'}], 'description': 'Single-timeframe call only: requested indicators keyed by name. Each carries value, previous, direction, series and indicator-specific fields (zone, crossover, stack, levelsâ\x80¦); { value: null, reason: "insufficient_data" } when the tape is too short. Omitted when `timeframes` is present â\x80\x94 read them there.'}, 'timeframes': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Present when several intervals were requested: one { interval, price, candles, indicators, summary } per timeframe, in the requested order. The top-level indicators/summary are omitted in that case.'}, 'lastCandleOpenTime': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}}, 'additionalProperties': False}
get_top_traders
Use this when the user wants ranked smart-money traders across supported exchanges with sorting and filtering.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'default': 20, 'maximum': 200, 'minimum': 1, 'description': 'Number of traders to return'}, 'order': {'enum': ['ASC', 'DESC'], 'type': 'string', 'default': 'DESC', 'description': 'Sort direction'}, 'sortBy': {'enum': ['ROI', 'PNL', 'SCORE'], 'type': 'string', 'description': 'Sort metric (defaults to ranking type)'}, 'source': {'enum': ['all', 'binance', 'hyperliquid', 'bybit', 'okx'], 'type': 'string', 'default': 'all', 'description': 'Exchange to filter by'}, 'timeRange': {'enum': ['24h', '3D', '7D', '30D'], 'type': 'string', 'default': '30D', 'description': 'Performance time range'}, 'rankingType': {'enum': ['ROI', 'PNL'], 'type': 'string', 'default': 'ROI', 'description': 'Ranking snapshot type'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'data': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Ranked traders: source, topTraderId, traderName, roi, pnl, winRate, smartScore, rank, rankings[]'}}, 'additionalProperties': False}
get_tracked_symbols
List all crypto futures symbols currently tracked by TraderSpy with real-time candle data available.
只读 幂等
输入模式
{'type': 'object', 'properties': {}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': ['number', 'null']}, 'symbols': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}]}}, 'additionalProperties': False}
get_trader_position_history
Use this when the user asks for closed trade history of a specific trader.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['traderId'], 'properties': {'page': {'type': 'number', 'default': 1, 'minimum': 1, 'description': 'Page number'}, 'limit': {'type': 'number', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Results per page'}, 'source': {'enum': ['binance', 'hyperliquid', 'bybit', 'okx'], 'type': 'string', 'default': 'binance', 'description': 'Exchange'}, 'traderId': {'type': 'string', 'description': 'The trader ID'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'data': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {'pnl': {'type': ['number', 'null']}, 'roi': {'type': ['number', 'null']}, 'side': {'type': ['string', 'null']}, 'size': {'type': ['number', 'null']}, 'isOpen': {'type': ['boolean', 'null']}, 'symbol': {'type': ['string', 'null']}, 'leverage': {'type': ['number', 'null']}, 'openTime': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'closeTime': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'lastEvent': {'type': ['string', 'null']}, 'markPrice': {'type': ['number', 'null']}, 'closePrice': {'type': ['number', 'null']}, 'entryPrice': {'type': ['number', 'null']}, 'unrealizedPnl': {'type': ['number', 'null']}}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Closed positions, most recently closed first'}, 'pagination': {'anyOf': [{'type': 'object', 'properties': {'page': {'type': ['number', 'null']}, 'limit': {'type': ['number', 'null']}, 'total': {'type': ['number', 'null']}, 'hasMore': {'type': ['boolean', 'null']}}, 'additionalProperties': True}, {'type': 'null'}]}}, 'additionalProperties': False}
get_trader_profile
Use this when the user needs one trader profile, including metrics and latest positions.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['traderId'], 'properties': {'source': {'enum': ['binance', 'hyperliquid', 'bybit', 'okx'], 'type': 'string', 'default': 'binance', 'description': 'Exchange the trader is on'}, 'traderId': {'type': 'string', 'description': 'The trader ID'}, 'timeRange': {'enum': ['24h', '3D', '7D', '30D'], 'type': 'string', 'default': '30D', 'description': 'Performance time range'}, 'rankingType': {'enum': ['ROI', 'PNL'], 'type': 'string', 'default': 'ROI', 'description': 'Ranking snapshot type'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'aum': {'type': ['number', 'null']}, 'mdd': {'type': ['number', 'null'], 'description': 'Maximum drawdown'}, 'pnl': {'type': ['number', 'null']}, 'roi': {'type': ['number', 'null']}, 'rank': {'type': ['number', 'null']}, 'source': {'type': ['string', 'null']}, 'winRate': {'type': ['number', 'null']}, 'avatarUrl': {'type': ['string', 'null']}, 'positions': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {'pnl': {'type': ['number', 'null']}, 'roi': {'type': ['number', 'null']}, 'side': {'type': ['string', 'null']}, 'size': {'type': ['number', 'null']}, 'isOpen': {'type': ['boolean', 'null']}, 'symbol': {'type': ['string', 'null']}, 'leverage': {'type': ['number', 'null']}, 'openTime': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'closeTime': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'string', 'format': 'date-time'}]}, {'type': 'null'}]}, 'lastEvent': {'type': ['string', 'null']}, 'markPrice': {'type': ['number', 'null']}, 'closePrice': {'type': ['number', 'null']}, 'entryPrice': {'type': ['number', 'null']}, 'unrealizedPnl': {'type': ['number', 'null']}}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'Currently tracked positions'}, 'timeRange': {'type': ['string', 'null']}, 'smartScore': {'type': ['number', 'null']}, 'traderName': {'type': ['string', 'null']}, 'rankingType': {'type': ['string', 'null']}, 'topTraderId': {'type': ['string', 'null']}}, 'additionalProperties': False}
screen_symbols
Screen MANY crypto futures symbols at once on one timeframe — "which coins are oversold on 4h", "what is above its 200 EMA with rising volume", "show me squeezes". Give up to 3 AND-ed conditions from a fixed metric list (RSI, stochastic, CCI, MFI, Williams %R, ADX, ROC, MACD histogram, ATR%, volume ratio, Bollinger %B / width, price vs EMA, EMA spread, SuperTrend, change %, price) with lt / gt / crossAbove / crossBelow. Scans the most-traded symbols by 24h volume (default 50, max 100) or an explicit list; every row carries the metric values plus bias, trend, RSI, ADX, ATR% and 24h change. With NO conditions and explicit `symbols` it is a side-by-side comparison table ("compare BTC, ETH, SOL"). ONE quota unit however many symbols — always prefer this over calling get_technical_indicators in a loop.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Rows to return'}, 'sortBy': {'enum': ['volume', 'change24h', 'metric'], 'type': 'string', 'description': "volume (24h quote volume), change24h, or metric (the first condition's metric). Default: metric when conditions are given, else volume."}, 'symbols': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 100, 'minItems': 1, 'description': 'Explicit symbols to scan (â\x89¤ 100, e.g. ["BTC","ETH","SOL"]). Omit to scan the most-traded symbols instead. With no `conditions`, every listed symbol is returned as a comparison table.'}, 'interval': {'enum': ['1m', '5m', '15m', '1h', '4h', '1d'], 'type': 'string', 'default': '4h', 'description': 'Candle timeframe to evaluate on'}, 'universe': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 5, 'description': 'How many of the most-traded symbols (by 24h volume) to scan when `symbols` is omitted (max 100)'}, 'sortOrder': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'desc'}, 'conditions': {'type': 'array', 'items': {'type': 'object', 'required': ['metric', 'op', 'value'], 'properties': {'op': {'enum': ['lt', 'gt', 'crossAbove', 'crossBelow'], 'type': 'string', 'description': 'lt / gt compare the latest value; crossAbove / crossBelow are one-bar events (previous bar on the other side).'}, 'value': {'type': 'number', 'description': "Threshold, in the metric's own unit (RSI 30, %B 0, spread 0, change â\x88\x925 â\x80¦)"}, 'metric': {'enum': ['rsi', 'stochastic', 'cci', 'mfi', 'williamsR', 'adx', 'roc', 'macdHistogram', 'atrPct', 'volumeRatio', 'bbPercentB', 'bbWidthPct', 'priceVsEma', 'emaSpread', 'supertrend', 'changePct', 'price'], 'type': 'string', 'description': 'Metric. Defaults in brackets. rsi(14): RSI, 0â\x80\x93100; stochastic(14,3): Slow stochastic %K (period, %D smoothing), 0â\x80\x93100; cci(20): Commodity Channel Index; mfi(14): Money Flow Index, 0â\x80\x93100; williamsR(14): Williams %R, â\x88\x92100â\x80\x930; adx(14): Average Directional Index; roc(12): Rate of change in %; macdHistogram(12,26): MACD histogram (fast, slow; signal 9); atrPct(14): ATR as % of price; volumeRatio(20): Bar volume ÷ average of the previous N bars; bbPercentB(20): Position inside Bollinger (20, 2): 0 = lower band, 1 = upper band; bbWidthPct(20): Bollinger band width as % of the middle band; priceVsEma(50): % distance of close from EMA(period); > 0 = above; emaSpread(50,200): % of EMA(period) over EMA(period2); crossAbove 0 = golden cross; supertrend(10): +1 in an up-trend, â\x88\x921 in a down-trend (ATR period, multiplier 3); changePct(24): % change of close over the last N bars; price: Close price'}, 'period': {'type': 'integer', 'maximum': 200, 'minimum': 2, 'description': "Override the metric's primary period (RSI length, EMA period, bars for changePct)"}, 'period2': {'type': 'integer', 'maximum': 200, 'minimum': 2, 'description': 'Second period where the metric has one: slow EMA for emaSpread, slow MACD, stochastic %D'}}, 'additionalProperties': False}, 'maxItems': 3, 'description': 'Up to 3 conditions, AND-ed. Examples: RSI oversold = {"metric":"rsi","op":"lt","value":30}; above the 200 EMA = {"metric":"priceVsEma","op":"gt","value":0,"period":200}; golden cross = {"metric":"emaSpread","op":"crossAbove","value":0,"period":50,"period2":200}; MACD bullish cross = {"metric":"macdHistogram","op":"crossAbove","value":0}; dumped 5% in a day = {"metric":"changePct","op":"lt","value":-5,"period":24}.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'sortBy': {'type': ['string', 'null']}, 'matched': {'type': ['number', 'null'], 'description': 'Symbols satisfying every condition (all scanned symbols when no conditions)'}, 'results': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'properties': {}, 'additionalProperties': True}}, {'type': 'null'}], 'description': 'One row per matching symbol: { symbol, price, change24hPct, volume24hUsd, values { "<metric label>": value }, bias, trend, rsi14, adx14, atrPct, volumeRatio, squeeze }'}, 'interval': {'type': ['string', 'null']}, 'returned': {'type': ['number', 'null']}, 'universe': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': True}, {'type': 'null'}], 'description': '{ source: top_by_volume | explicit, requested, scanned, missing[] }'}, 'warnings': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}]}, 'sortOrder': {'type': ['string', 'null']}, 'conditions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Human-readable conditions, e.g. "RSI(14) < 30"'}}, 'additionalProperties': False}
已更改
get_signal_stats
2026年9月29日 03:01
已更改
get_signals
2026年9月29日 03:01
已移除
get_my_account
2026年9月27日 02:51
已更改
get_derivatives
2026年9月27日 02:51
已添加
get_my_account
2026年9月17日 07:58
已添加
backtest_condition
2026年9月17日 07:58
已添加
screen_symbols
2026年9月17日 07:58
已添加
get_derivatives
2026年9月17日 07:58
已添加
get_technical_indicators
2026年9月17日 07:58
已添加
get_tracked_symbols
2026年9月17日 07:58
已添加
get_candles
2026年9月17日 07:58
已添加
get_price
2026年9月17日 07:58
已添加
get_exchanges
2026年9月17日 07:58
已添加
get_market_stats
2026年9月17日 07:58
已添加
get_positions
2026年9月17日 07:58
已添加
get_trader_position_history
2026年9月17日 07:58
已添加
get_trader_profile
2026年9月17日 07:58
已添加
get_elite_leaderboard
2026年9月17日 07:58
已添加
get_top_traders
2026年9月17日 07:58
已添加
get_signal_stats
2026年9月17日 07:58
已添加
get_signal_details
2026年9月17日 07:58
已添加
get_signals
2026年9月17日 07:58