Skip to main content

Market Data Reference

HyperionX exposes bar data, tick updates, market data events, and depth snapshots to scripts.

Bar Data

Primary bar series:

  • Open
  • High
  • Low
  • Close
  • Volume
  • DateTime

Ctx.MarketData.GetCandles(seriesIndex) returns candle objects for the primary or extra series.

var candles = Ctx.MarketData.GetCandles();
var extraCandles = Ctx.MarketData.GetCandles(1);

MarketDataEventArgs

OnMarketData(MarketDataEventArgs marketData) receives:

FieldMeaning
InstrumentCurrent instrument.
CandleCurrent candle.
TickTick candle/update when available.
TimeEvent time.
PriceEvent price.
VolumeEvent volume.
BidVolumeBid-side volume when available.
AskVolumeAsk-side volume when available.
TradeCountTrade count when available.
IsFirstTickOfBarWhether this is the first tick of a bar.
public override void OnMarketData(MarketDataEventArgs marketData)
{
if (marketData.IsFirstTickOfBar)
Print($"New bar: {marketData.Time}");
}

Market Depth

Ctx.MarketData exposes best bid/ask and depth snapshots.

double bid = Ctx.MarketData.Bid;
double ask = Ctx.MarketData.Ask;
double spread = Ctx.MarketData.Spread;

var depth = Ctx.MarketData.GetDepth(20);

Async version:

var depth = await Ctx.MarketData.GetDepthAsync(20);

Depth subscription:

Ctx.MarketData.SubscribeDepth(depth: 20, refreshMilliseconds: 1000);
Ctx.MarketData.UnsubscribeDepth();

MarketDepthSnapshot

FieldMeaning
SymbolSnapshot symbol.
ProviderProvider/connection name.
ReceivedAtUTC receive time.
BidsBid levels.
AsksAsk levels.
HasDepthWhether bids or asks exist.
BestBidTop bid price.
BestAskTop ask price.

Each MarketDepthLevel includes:

  • Price
  • Size
  • OrderCount

OrderCount depends on provider support.

Provider Support Direction

Current provider work includes REST/WebSocket market data, historical candles, broker connection adapters, and depth providers for supported connections. Hyperliquid, KuCoin, Binance, and other providers can implement IMarketDepthProvider so scripts can use the same Ctx.MarketData.GetDepth(...) path.

Order-flow tools need two data classes:

  • real trades: prints, aggressor side, volume, and timestamps where the provider exposes them
  • book depth: bid/ask levels, sizes, and order counts where the provider exposes them

When provider data is missing, scripts should degrade cleanly and show no-depth/no-trade state rather than throwing.

Bar Timer Helpers

bool timeBased = Ctx.MarketData.IsTimeBasedSeries;
System.TimeSpan? remaining = Ctx.MarketData.GetTimeRemainingInBar();

These helpers return null for series that do not have a fixed time duration.