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>"
}Get Wallet Performance
滚动窗口内的表现:已实现盈亏、成交量、连胜/连败、回撤、最佳/最差日及逐日明细。成交笔数(totals.trades 与每日 trades)为窗口内每日活动(day_buys + day_sells),非累计终身总数。
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>"
}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
此页面对您有帮助吗?