Skip to main content

Track ZEC on Hyperliquid

ZEC (Zcash) is one of the most actively traded perp markets on Hyperliquid. This page collects ready-to-run queries for tracking the entire ZEC market — every open position, liquidations as they happen, funding flow, whale-sized fills, candles and the latest price — using the Hyperliquid cube on the streaming API.

Every query below except CurrentPositions also works as a real-time WebSocket stream: change query to subscription and drop limit/orderBy.

API Key Required

To query or stream data outside the Bitquery IDE, you need an API access token.

Follow the steps here: How to generate Bitquery API token ➤

Every open ZEC position on the exchange​

CurrentPositions is a state cube (query-only): it holds the latest position of every trader on the market. Unlike the native Hyperliquid API — which only returns positions for an address you already know — this enumerates the whole ZEC book, so you can compute market-wide long/short totals or find the biggest whales without knowing a single wallet in advance. Negative Size is a short and "0" a closed position (skip those); the size is exact even for positions opened before the data window, because the exchange restates every open position at each hourly funding. Funding and RealizedPnl are summed since the data window started (about 30 days back), not over the position's lifetime; positive Funding = collected, negative = paid. LastTradeTime is the trader's last ZEC fill; LastTime also moves with every hourly funding.

Run it in the IDE: All Open ZEC Positions ➤

query {
Hyperliquid {
CurrentPositions(
limit: {count: 200}
orderBy: {descending: LastTradeTime}
where: {Market: {Symbol: {is: "ZEC"}}}
) {
LastTime
LastTradeTime
Market { Symbol Kind }
Position { Size Leverage IsCross Funding RealizedPnl }
Trader { Address }
}
}
}

To watch one whale instead, swap the filter to where: {Trader: {Address: {is: "0x..."}}, Market: {IsPerp: true}} and you get every perp position of that wallet across all markets.

ZEC liquidations — history and live stream​

Each liquidation carries the liquidated user, the Method (market for open-market liquidation, backstop when the backstop vault takes over), the mark price and the forced execution. Both sides of the forced fill are listed with the same LiquidatedUser: the row whose Trader.Address equals LiquidatedUser is the liquidated account's own fill, the others are the accounts that took the other side. On the liquidated account's row the execution Side tells you which side got wiped: a liquidated short is closed by a Buy, a liquidated long by a Sell; Position.Size is what is left of the position after the fill.

Run it in the IDE: ZEC Liquidations ➤

query {
Hyperliquid {
PerpLiquidations(
limit: {count: 100}
orderBy: {descending: [Block_Time, Liquidation_Execution_Index]}
where: {Liquidation: {Market: {Symbol: {is: "ZEC"}}}}
) {
Block { Time }
Liquidation {
Market { Symbol }
Method MarkPx Liquidator LiquidatedUser
Trader { Address }
Execution { Price Size Side Index }
Position { Leverage IsCross Side SizeBefore Size }
}
}
}
}

Real-time ZEC liquidation alerts​

Run it in the IDE: ZEC Liquidations Stream ➤

subscription {
Hyperliquid {
PerpLiquidations(
where: {Liquidation: {Market: {Symbol: {is: "ZEC"}}}}
) {
Block { Time }
Liquidation {
Market { Symbol }
Method MarkPx LiquidatedUser
Trader { Address }
Execution { Price Size Side }
Position { Leverage IsCross SizeBefore Size }
}
}
}
}

ZEC funding payments — who pays whom​

PerpFundings records every per-trader funding transfer at each hourly tick: the signed Amount (negative = the trader paid funding), the Rate applied and the position Size. When ZEC longs are crowded the rate is positive and longs pay shorts — summing Amount over a window shows exactly how much it costs to stay long.

Run it in the IDE: ZEC Funding Payments ➤

query {
Hyperliquid {
PerpFundings(
limit: {count: 200}
orderBy: {descending: Block_Time}
where: {Funding: {Market: {Symbol: {is: "ZEC"}}}, Block: {Time: {since_relative: {hours_ago: 2}}}}
) {
Block { Time }
Funding {
Market { Symbol }
Amount Rate Size
Trader { Address }
}
}
}
}

Add Trader: {Address: {is: "0x..."}} inside the Funding filter and widen the time window (up to about 30 days on the API; for older data, ask about a Data Store export) to compute the total funding one wallet has paid or collected on ZEC.

Whale-sized ZEC trades​

Every fill carries direction, leverage and realized PnL. Filter on Execution: {Size: ...} to see only whale prints — here, fills of 200 ZEC or more in the last 24 hours (the default window when Trades has no Block.Time filter). Each match appears twice, once for the taker (IsAggressor: true) and once for the maker.

Run it in the IDE: ZEC Whale Trades ➤

query {
Hyperliquid {
Trades(
limit: {count: 100}
orderBy: {descending: [Block_Time, Trade_Execution_Index]}
where: {Trade: {Market: {Symbol: {is: "ZEC"}}, Execution: {Size: {ge: "200"}}}}
) {
Block { Time }
Trade {
Execution { Price Size Side Direction IsAggressor Index }
Position { Leverage IsCross SizeBefore Size RealizedPnl }
Trader { Address }
}
}
}
}

Stream every ZEC fill in real time​

Run it in the IDE: ZEC Trades Stream ➤

subscription {
Hyperliquid {
Trades(
where: {Trade: {Market: {Symbol: {is: "ZEC"}}}}
) {
Block { Time }
Trade {
Execution { Price Size Side Direction IsAggressor Index }
Position { Leverage IsCross Size RealizedPnl }
Trader { Address }
}
}
}
}

ZEC candles (OHLCV)​

Candle Duration is in seconds — 60 for 1-minute, 300 for 5-minute, 3600 for hourly.

Run it in the IDE: ZEC Hourly Candles ➤

query {
Hyperliquid {
Candles(
limit: {count: 168}
orderBy: {descending: Interval_Time_Start}
where: {Market: {Symbol: {is: "ZEC"}}, Interval: {Time: {Duration: {eq: 3600}}}}
) {
Interval { Time { Start Duration } }
Market { Symbol }
Ohlc { Open High Low Close Volume }
}
}
}

ZEC latest price​

The close of the latest 1-minute candle is the last traded ZEC price; stream Candles with the same filter for a live price feed. MarkPrices does not help here: it holds HIP-3 markets only, and Symbol: "ZEC" there returns the separate HIP-3 market hyna:ZEC, not the ZEC perp — hence the CoinRaw filter below.

query {
Hyperliquid {
Candles(
limit: {count: 1}
orderBy: {descending: Interval_Time_Start}
where: {Market: {CoinRaw: {is: "ZEC"}}, Interval: {Time: {Duration: {eq: 60}}}}
) {
Interval { Time { Start } }
Market { Symbol Kind CoinRaw }
Ohlc { Close }
}
}
}

ZEC leverage changes​

TraderLeverageUpdates fires whenever a trader changes leverage or flips between cross and isolated margin on ZEC — often the tell that a large position is about to be opened or defended.

Run it in the IDE: ZEC Leverage Updates ➤

query {
Hyperliquid {
TraderLeverageUpdates(
limit: {count: 100}
orderBy: {descending: Block_Time}
where: {LeverageUpdate: {Market: {Symbol: {is: "ZEC"}}}}
) {
Block { Time }
LeverageUpdate {
Leverage IsCross
Market { Symbol }
Trader { Address }
}
}
}
}
Build with Bitquery

Ready to run this in production?

Get an API key and run these queries in minutes, or talk to us about plans and enterprise delivery.