import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2WalletPerformance('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { period: '30d' });curl --request GET \
--url https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"wallet": "CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"identity": {
"name": "Cented",
"twitter": "@Cented7",
"avatar": "https://kol-avatar.solanatracker.io/CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"platforms": [
"axiom",
"bloom"
],
"type": "kol",
"tags": [
"kol",
"axiom",
"bloom"
]
},
"window": 30,
"totals": {
"realizedPnl": 511646.27,
"volume": 4525541.11,
"trades": 1854
},
"bestDay": {
"date": "2026-03-23",
"realizedPnl": 85718.59,
"volume": 266262.59,
"totalPnl": 10264040.54,
"trades": 954
},
"worstDay": {
"date": "2026-04-10",
"realizedPnl": 3543.36,
"volume": 30954.42,
"totalPnl": 10509957.54,
"trades": 12
},
"streaks": {
"positive": 27,
"negative": 0,
"currentPositive": 27,
"currentNegative": 0
},
"drawdown": {
"amount": 0,
"percent": 0
},
"days": [
{
"date": "2026-03-20",
"realizedPnl": 21677.68,
"unrealizedPnl": 0,
"totalPnl": 10133634.03,
"volume": 252414.51,
"trades": 812
},
{
"date": "2026-03-21",
"realizedPnl": 20060.91,
"unrealizedPnl": 0,
"totalPnl": 10153694.95,
"volume": 190766.56,
"trades": 642
}
],
"updatedAt": "2026-04-19T17:53:30.439Z"
}{
"error": "<string>"
}{
"error": "<string>"
}Solana 钱包表现 API
获取钱包的滚动窗口统计,包含已实现 PnL、成交量、连胜连败、回撤、最佳日、最差日及对应的逐日明细。
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2WalletPerformance('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { period: '30d' });curl --request GET \
--url https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"wallet": "CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"identity": {
"name": "Cented",
"twitter": "@Cented7",
"avatar": "https://kol-avatar.solanatracker.io/CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"platforms": [
"axiom",
"bloom"
],
"type": "kol",
"tags": [
"kol",
"axiom",
"bloom"
]
},
"window": 30,
"totals": {
"realizedPnl": 511646.27,
"volume": 4525541.11,
"trades": 1854
},
"bestDay": {
"date": "2026-03-23",
"realizedPnl": 85718.59,
"volume": 266262.59,
"totalPnl": 10264040.54,
"trades": 954
},
"worstDay": {
"date": "2026-04-10",
"realizedPnl": 3543.36,
"volume": 30954.42,
"totalPnl": 10509957.54,
"trades": 12
},
"streaks": {
"positive": 27,
"negative": 0,
"currentPositive": 27,
"currentNegative": 0
},
"drawdown": {
"amount": 0,
"percent": 0
},
"days": [
{
"date": "2026-03-20",
"realizedPnl": 21677.68,
"unrealizedPnl": 0,
"totalPnl": 10133634.03,
"volume": 252414.51,
"trades": 812
},
{
"date": "2026-03-21",
"realizedPnl": 20060.91,
"unrealizedPnl": 0,
"totalPnl": 10153694.95,
"volume": 190766.56,
"trades": 642
}
],
"updatedAt": "2026-04-19T17:53:30.439Z"
}{
"error": "<string>"
}{
"error": "<string>"
}totals.trades 与每日 trades)为窗口内每日活动(day_buys + day_sells),非累计终身总数。
SDK Example
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2WalletPerformance('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { period: '30d' });
授权
用于鉴权的 API Key
路径参数
Solana 钱包地址(Base58,约 32–44 字符)
^[1-9A-HJ-NP-Za-km-z]{32,44}$查询参数
响应金额字段的计价单位,默认 usd。传 sol 或 eur 时按 ClickHouse 参考价在读取时将美元快照换算;历史端点按各快照日汇率,钱包摘要用现货。笔数、百分比、时间戳与 ROI 不换算;无效值返回 400。
usd, sol, eur 周期简写(如 30d),与 days 二选一
1d, 7d, 14d, 30d, 90d, all 滚动窗口天数,默认 30,最大 365
x <= 365响应
Successful response.
Response denomination when ?currency=sol or ?currency=eur is requested. Omitted for the default USD response.
sol, eur Unified wallet identity. Only fields with known values are returned; a wallet can carry multiple tags at once.
Show child attributes
Show child attributes
Number of days in the window.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Win/loss streaks in consecutive trading days.
Show child attributes
Show child attributes
Maximum drawdown from peak total PnL within the window.
Show child attributes
Show child attributes
Day-by-day PnL and volume for the window.
Show child attributes
Show child attributes
此页面对您有帮助吗?