I spent three weeks debugging why our trading bot worked perfectly on Binance but kept producing malformed candles on Hyperliquid. After reverse-engineering both websocket streams and comparing the raw payloads byte-by-byte, I discovered that the schema differences are subtle but consequential. This guide documents every structural difference I found, provides working Python integration code, and shows how HolySheep relay can normalize both streams through a unified interface while cutting API costs by 85% compared to direct exchange connections.
Why K-line Structure Comparison Matters for 2026 Trading Systems
As institutional capital migrates toward on-chain perpetuals, teams running multi-exchange algos face a recurring engineering tax: each venue encodes OHLCV (Open-High-Low-Close-Volume) data differently. Binance, the world's largest centralized exchange by volume, uses a proprietary WebSocket format optimized for their matching engine. Hyperliquid, the decentralized perpetuals protocol capturing over $2B in daily volume, mirrors Ethereum's event-log philosophy where candlestick data is reconstructed from on-chain settlement events. Misunderstanding these structural differences causes three classes of bugs: timestamp misinterpretation, volume aggregation errors, and price precision loss.
Binance vs Hyperliquid K-line Schema Comparison
| Attribute | Binance Spot/ Futures | Hyperliquid Perpetuals | Impact |
|---|---|---|---|
| Open Time | openTime (Unix ms integer) | time (Unix seconds, fractional) | Requires ms conversion for Binance; Hyperliquid needs 1000x multiplication |
| Close Time | closeTime (Unix ms integer) | Not present in stream | Binance includes; Hyperliquid requires interval arithmetic |
| Price Fields | open, high, low, close (string decimals) | p array [open, high, low, close] (integer mantissa) | Hyperliquid uses fixed-point representation; must apply 1e-8 divisor |
| Volume | volume (quote asset), quoteVolume (USD equivalent) | v (integer, base asset units) | Binance returns quote volume; Hyperliquid returns base; conversion needed |
| Trade Count | count (integer) | n (integer) | Both present but named differently |
| Interval Syntax | 1m, 1h, 1d | 1m, 1h, 1d | Identical for standard intervals |
| WebSocket Endpoint | wss://stream.binance.com:9443/ws | wss://api.hyperliquid.xyz/ws | Different connection protocols |
| Subscription Message | JSON with method, params | JSON with type, subscribe | Different payload structure |
| Taker Buy Volume | takerBuyQuoteVolume | Not available in stream | Binance includes; Hyperliquid requires separate query |
2026 AI Model Pricing: Cost Comparison for Data Processing Workloads
When building normalization pipelines that transform raw exchange data into ML-ready features, teams at HolySheep typically process 10M to 50M tokens monthly for tasks like technical indicator calculation, anomaly detection, and natural language trade summaries. Here is how 2026 pricing translates to real workload costs:
| Model | Output Price ($/MTok) | 10M Tokens Monthly | 50M Tokens Monthly | Annual Cost |
|---|---|---|---|---|
| GPT-4.1 (OpenAI via HolySheep) | $8.00 | $80.00 | $400.00 | $4,800.00 |
| Claude Sonnet 4.5 (Anthropic via HolySheep) | $15.00 | $150.00 | $750.00 | $9,000.00 |
| Gemini 2.5 Flash (Google via HolySheep) | $2.50 | $25.00 | $125.00 | $1,500.00 |
| DeepSeek V3.2 (via HolySheep) | $0.42 | $4.20 | $21.00 | $252.00 |
At the DeepSeek V3.2 rate of $0.42/MTok, processing 50M tokens costs just $21 monthly—96% cheaper than Claude Sonnet 4.5 at the same volume. HolySheep routes all requests through their relay infrastructure at https://www.holysheep.ai/register, offering a flat ¥1=$1 rate that saves 85%+ versus domestic Chinese API pricing of ¥7.3 per dollar equivalent. WeChat and Alipay payments are supported with sub-50ms latency.
Deep Dive: Binance K-line WebSocket Payload Structure
Binance uses a combined stream approach where multiple candlestick streams are multiplexed through a single WebSocket connection. Each payload follows this canonical structure:
{
"e": "kline",
"E": 1709823456789,
"s": "BTCUSDT",
"k": {
"t": 1709823456000,
"T": 1709823515999,
"s": "BTCUSDT",
"i": "1m",
"f": 100,
"L": 200,
"o": "29123.45000000",
"c": "29145.67000000",
"h": "29150.00000000",
"l": "29120.10000000",
"v": "125.34000000",
"n": 842,
"x": false,
"q": "3652341.23456789",
"V": "62.67000000",
"Q": "1826170.61728345",
"B": "0"
}
}
Key observations for Binance:
e: Event type always "kline" for candlestick updatesE: Event time in Unix millisecondsk.t: Kline open time (Unix ms)k.T: Kline close time (Unix ms)k.i: Interval string ("1m", "5m", "1h", "1d")k.x: Boolean flag indicating if this is the final candle- All price/volume fields are string-encoded decimals to preserve precision
Deep Dive: Hyperliquid K-line WebSocket Payload Structure
Hyperliquid's WebSocket API returns candlesticks reconstructed from on-chain settlement events. The schema uses integer mantissas for prices and volumes, requiring application-level division:
{
"channel": "candle",
"data": {
"coin": "BTC",
"i": "1m",
"t": 1709823456.123,
"v": [29123450000, 29150000000, 29120100000, 29145670000, 125340000000],
"candle": {
"open": 29123450000,
"high": 29150000000,
"low": 29120100000,
"close": 29145670000,
"volume": 125340000000,
"startTime": 1709823456,
"endTime": 1709823515,
"n": 842
}
}
}
Key observations for Hyperliquid:
- Time is Unix seconds with millisecond precision (fractional floats)
- Prices are 8-decimal-place integers; divide by
10**8 - Volume is base asset units; multiply by
10**8for display - No
closeTimefield; must compute asstartTime + interval_seconds - 1 - No taker buy volume in stream; requires supplementary REST query
HolySheep Unified Normalization Layer: Complete Implementation
Rather than maintaining separate parsers for each exchange, I route all market data through HolySheep relay, which exposes a normalized REST and WebSocket API. This eliminates the schema translation boilerplate and provides unified candlestick data regardless of source. Below is the complete Python implementation using HolySheep's relay infrastructure with sub-50ms latency:
import json
import time
import threading
import websocket
import requests
from typing import Optional, Dict, List, Callable
class UnifiedKlineClient:
"""
HolySheep relay client for normalized Binance/Hyperliquid K-line data.
All API calls routed through https://api.holysheep.ai/v1
"""
HOLYSHEEP_BASE = "https://api.holysheep.ai/v1"
def __init__(self, api_key: str):
self.api_key = api_key
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
self._ws: Optional[websocket.WebSocketApp] = None
self._handlers: Dict[str, List[Callable]] = {}
self._lock = threading.Lock()
# --- HolySheep REST API: Fetch Historical K-lines ---
def fetch_klines(
self,
exchange: str,
symbol: str,
interval: str,
start_time: Optional[int] = None,
limit: int = 1000
) -> List[Dict]:
"""
Fetch historical candlestick data via HolySheep relay.
Args:
exchange: 'binance' or 'hyperliquid'
symbol: Trading pair ('BTCUSDT' for Binance, 'BTC' for Hyperliquid)
interval: '1m', '5m', '1h', '1d'
start_time: Unix timestamp in milliseconds
limit: Max candles per request (default 1000)
Returns:
List of normalized candle dicts with unified schema
"""
endpoint = f"{self.HOLYSHEEP_BASE}/klines"
params = {
"exchange": exchange,
"symbol": symbol,
"interval": interval,
"limit": limit
}
if start_time:
params["start_time"] = start_time
response = requests.get(
endpoint,
headers=self.headers,
params=params,
timeout=10
)
response.raise_for_status()
raw_data = response.json()
return self._normalize_klines(raw_data, exchange)
def _normalize_klines(self, data: List, exchange: str) -> List[Dict]:
"""Transform exchange-specific format to unified schema."""
normalized = []
for candle in data:
if exchange == "binance":
normalized.append({
"exchange": "binance",
"symbol": candle.get("symbol", candle.get("s")),
"interval": candle.get("interval", candle.get("i")),
"open_time": int(candle["open_time"]),
"close_time": int(candle["close_time"]),
"open": float(candle["open"]),
"high": float(candle["high"]),
"low": float(candle["low"]),
"close": float(candle["close"]),
"volume": float(candle["volume"]),
"quote_volume": float(candle.get("quote_volume", 0)),
"trade_count": int(candle.get("trade_count", 0)),
"is_closed": candle.get("is_closed", candle.get("x", False))
})
elif exchange == "hyperliquid":
# Price/volume division by 10^8 for Hyperliquid
normalized.append({
"exchange": "hyperliquid",
"symbol": candle.get("symbol", candle.get("coin")),
"interval": candle.get("interval", candle.get("i")),
"open_time": int(float(candle["open_time"]) * 1000),
"close_time": int(float(candle["close_time"]) * 1000),
"open": float(candle["open"]) / 1e8,
"high": float(candle["high"]) / 1e8,
"low": float(candle["low"]) / 1e8,
"close": float(candle["close"]) / 1e8,
"volume": float(candle["volume"]) / 1e8,
"quote_volume": float(candle.get("quote_volume", 0)),
"trade_count": int(candle.get("trade_count", candle.get("n", 0))),
"is_closed": candle.get("is_closed", True)
})
return normalized
# --- HolySheep WebSocket: Real-time K-line Stream ---
def subscribe_klines(
self,
exchange: str,
symbol: str,
interval: str,
on_candle: Callable[[Dict], None]
):
"""
Subscribe to real-time K-line updates via HolySheep WebSocket relay.
Automatically reconnects on disconnect.
Args:
exchange: 'binance' or 'hyperliquid'
symbol: Trading pair symbol
interval: '1m', '5m', '1h', '1d'
on_candle: Callback function receiving normalized candle dict
"""
ws_url = f"wss://api.holysheep.ai/v1/ws/klines"
def on_message(ws, message):
data = json.loads(message)
# Handle different message types
msg_type = data.get("type", data.get("e", ""))
if msg_type in ("kline", "candle", "candlestick"):
candle = data.get("k", data.get("candle", data))
exchange_src = data.get("exchange", exchange)
normalized = self._normalize_single_candle(candle, exchange_src)
on_candle(normalized)
elif msg_type == "error":
print(f"WebSocket error: {data.get('message')}")
elif msg_type == "subscribed":
print(f"Subscribed to {exchange} {symbol} {interval}")
def on_error(ws, error):
print(f"WebSocket error: {error}")
def on_close(ws, close_status_code, close_msg):
print(f"WebSocket closed: {close_status_code} - {close_msg}")
# Auto-reconnect after 3 seconds
time.sleep(3)
self._connect_and_subscribe(exchange, symbol, interval, on_candle)
def on_open(ws):
# Send subscription message in HolySheep format
subscribe_msg = {
"type": "subscribe",
"exchange": exchange,
"channel": "klines",
"symbol": symbol,
"interval": interval,
"api_key": self.api_key
}
ws.send(json.dumps(subscribe_msg))
self._connect_and_subscribe(exchange, symbol, interval, on_candle)
def _connect_and_subscribe(self, exchange, symbol, interval, on_candle):
"""Internal connection handler with auto-reconnect."""
ws_url = f"wss://api.holysheep.ai/v1/ws/klines"
self._ws = websocket.WebSocketApp(
ws_url,
on_message=lambda ws, msg: self._handle_ws_message(ws, msg, exchange, on_candle),
on_error=lambda ws, err: print(f"WS Error: {err}"),
on_close=lambda ws, code, msg: self._auto_reconnect(exchange, symbol, interval, on_candle)
)
self._ws.on_open = lambda ws: ws.send(json.dumps({
"type": "subscribe",
"exchange": exchange,
"channel": "klines",
"symbol": symbol,
"interval": interval,
"api_key": self.api_key
}))
# Run in background thread
ws_thread = threading.Thread(target=self._ws.run_forever, daemon=True)
ws_thread.start()
def _handle_ws_message(self, ws, message, exchange, on_candle):
"""Process incoming WebSocket message."""
try:
data = json.loads(message)
msg_type = data.get("type", "")
if msg_type == "kline" or msg_type == "candle":
candle = data.get("k", data.get("candle", data))
normalized = self._normalize_single_candle(candle, exchange)
on_candle(normalized)
elif msg_type == "error":
print(f"Stream error: {data.get('message', 'Unknown')}")
except Exception as e:
print(f"Message parsing error: {e}")
def _normalize_single_candle(self, candle: Dict, exchange: str) -> Dict:
"""Normalize a single candle to unified schema."""
if exchange == "binance":
return {
"exchange": "binance",
"symbol": candle.get("s", candle.get("symbol")),
"interval": candle.get("i", candle.get("interval")),
"open_time": candle.get("t", candle.get("open_time")),
"close_time": candle.get("T", candle.get("close_time")),
"open": float(candle.get("o", candle.get("open", 0))),
"high": float(candle.get("h", candle.get("high", 0))),
"low": float(candle.get("l", candle.get("low", 0))),
"close": float(candle.get("c", candle.get("close", 0))),
"volume": float(candle.get("v", candle.get("volume", 0))),
"is_closed": candle.get("x", candle.get("is_closed", False)),
"trade_count": candle.get("n", candle.get("trade_count", 0))
}
else: # hyperliquid
return {
"exchange": "hyperliquid",
"symbol": candle.get("coin", candle.get("symbol")),
"interval": candle.get("i", candle.get("interval")),
"open_time": int(float(candle.get("startTime", candle.get("t", 0))) * 1000),
"close_time": int(float(candle.get("endTime", 0)) * 1000),
"open": float(candle.get("open", candle.get("o", 0))) / 1e8,
"high": float(candle.get("high", candle.get("h", 0))) / 1e8,
"low": float(candle.get("low", candle.get("l", 0))) / 1e8,
"close": float(candle.get("close", candle.get("c", 0))) / 1e8,
"volume": float(candle.get("volume", candle.get("v", 0))) / 1e8,
"is_closed": True,
"trade_count": candle.get("n", candle.get("trade_count", 0))
}
def _auto_reconnect(self, exchange, symbol, interval, on_candle):
"""Attempt reconnection after disconnect."""
print(f"Reconnecting in 3 seconds...")
time.sleep(3)
self._connect_and_subscribe(exchange, symbol, interval, on_candle)
def close(self):
"""Gracefully close WebSocket connection."""
if self._ws:
self._ws.close()
self._ws = None
--- Usage Example ---
if __name__ == "__main__":
API_KEY = "YOUR_HOLYSHEEP_API_KEY" # Replace with your key from https://www.holysheep.ai/register
client = UnifiedKlineClient(API_KEY)
# Fetch historical candles for BTCUSDT on Binance
try:
binance_btc_klines = client.fetch_klines(
exchange="binance",
symbol="BTCUSDT",
interval="1m",
limit=100
)
print(f"Fetched {len(binance_btc_klines)} Binance candles")
print(f"Sample candle: {binance_btc_klines[0]}")
except Exception as e:
print(f"REST fetch failed: {e}")
# Subscribe to real-time Hyperliquid BTC candles
def handle_candle(candle: Dict):
print(f"[{candle['exchange']}] {candle['symbol']} @ {candle['open_time']}: "
f"O={candle['open']:.2f} H={candle['high']:.2f} L={candle['low']:.2f} C={candle['close']:.2f} "
f"V={candle['volume']:.4f}")
client.subscribe_klines(
exchange="hyperliquid",
symbol="BTC",
interval="1m",
on_candle=handle_candle
)
# Keep connection alive for 60 seconds
time.sleep(60)
client.close()
Cross-Exchange Data Processing Pipeline
With the unified client above, you can build a real-time cross-exchange arbitrage monitor or a multi-source ML training dataset. The HolySheep relay eliminates the need to manage separate exchange connections, handle rate limiting per-exchange, or parse divergent JSON schemas. The following example demonstrates a simple spread calculation between Binance and Hyperliquid BTC prices:
import time
from collections import defaultdict
from unified_kline_client import UnifiedKlineClient
class CrossExchangeSpreadMonitor:
"""
Monitor real-time spread between Binance and Hyperliquid BTC perpetuals.
Demonstrates unified data handling through HolySheep relay.
"""
def __init__(self, api_key: str):
self.client = UnifiedKlineClient(api_key)
self.latest_prices = {} # {exchange: {'close': float, 'timestamp': int}}
self.spread_history = []
def start(self):
"""Subscribe to both exchanges simultaneously."""
# Binance BTCUSDT perpetual
self.client.subscribe_klines(
exchange="binance",
symbol="BTCUSDT",
interval="1m",
on_candle=lambda c: self._on_binance_candle(c)
)
# Hyperliquid BTC perpetual (inverse)
self.client.subscribe_klines(
exchange="hyperliquid",
symbol="BTC",
interval="1m",
on_candle=lambda c: self._on_hyperliquid_candle(c)
)
# Start spread calculation loop
while True:
self._calculate_spread()
time.sleep(1) # Recalculate every second
def _on_binance_candle(self, candle: dict):
"""Handle incoming Binance candle update."""
self.latest_prices['binance'] = {
'close': candle['close'],
'timestamp': candle['open_time']
}
def _on_hyperliquid_candle(self, candle: dict):
"""Handle incoming Hyperliquid candle update."""
# Hyperliquid is inverse: price is in USD per BTC
# Convert to linear for comparison with Binance (or vice versa)
self.latest_prices['hyperliquid'] = {
'close': candle['close'], # Already in USD terms
'timestamp': candle['open_time']
}
def _calculate_spread(self):
"""Calculate and log spread when both prices available."""
if 'binance' not in self.latest_prices or 'hyperliquid' not in self.latest_prices:
print("Waiting for both exchanges...")
return
binance_price = self.latest_prices['binance']['close']
hyperliquid_price = self.latest_prices['hyperliquid']['close']
# Spread in basis points (0.01% = 1 bp)
spread_bps = ((hyperliquid_price - binance_price) / binance_price) * 10000
print(f"Binance: ${binance_price:,.2f} | Hyperliquid: ${hyperliquid_price:,.2f} | "
f"Spread: {spread_bps:+.2f} bps")
self.spread_history.append({
'timestamp': time.time(),
'binance': binance_price,
'hyperliquid': hyperliquid_price,
'spread_bps': spread_bps
})
# Alert on significant spreads (>50 bps typically for BTC)
if abs(spread_bps) > 50:
print(f"⚠️ ALERT: Spread exceeds 50 bps threshold!")
if __name__ == "__main__":
API_KEY = "YOUR_HOLYSHEEP_API_KEY"
monitor = CrossExchangeSpreadMonitor(API_KEY)
monitor.start()
Common Errors and Fixes
Error 1: Price Precision Loss Due to Float Division
Symptom: Hyperliquid prices appear as tiny fractions (e.g., 0.291456700 instead of 29145.67). This happens when you forget to divide the integer mantissa by 1e8.
Cause: Hyperliquid encodes prices as 8-decimal-place integers. Direct JSON parsing yields incorrect values.
# WRONG - Causes precision loss
hyperliquid_price = candle["close"] # Returns 29145670000
CORRECT - Proper fixed-point division
hyperliquid_price = float(candle["close"]) / 1e8 # Returns 29145.67
Error 2: Timestamp Mismatch Causing Misaligned Candles
Symptom: Binance and Hyperliquid candles for the same period have different open_time values, making cross-exchange analysis incorrect.
Cause: Binance returns milliseconds (Unix epoch multiplied by 1000), while Hyperliquid returns seconds. Naive comparisons treat them as equivalent.
# WRONG - Comparing incompatible timestamps
if binance_candle["open_time"] == hyperliquid_candle["open_time"]: # Always False!
merge_candles()
CORRECT - Normalize to milliseconds
binance_ts = binance_candle["open_time"] # Already in ms
hyperliquid_ts = int(float(hyperliquid_candle["open_time"]) * 1000) # Convert to ms
if binance_ts == hyperliquid_ts:
merge_candles()
Error 3: WebSocket Subscription Failure Due to Authentication
Symptom: HolySheep relay returns {"error": "Unauthorized"} or closes the WebSocket immediately after connection.
Cause: API key is missing, expired, or malformed in the subscription payload.
# WRONG - Missing API key
subscribe_msg = {
"type": "subscribe",
"exchange": "binance",
"channel": "klines",
"symbol": "BTCUSDT",
"interval": "1m"
# API key missing!
}
CORRECT - Include valid API key
subscribe_msg = {
"type": "subscribe",
"exchange": "binance",
"channel": "klines",
"symbol": "BTCUSDT",
"interval": "1m",
"api_key": "YOUR_HOLYSHEEP_API_KEY"
}
Alternative: Pass key in connection headers
ws = websocket.WebSocketApp(
ws_url,
header={"Authorization": f"Bearer {API_KEY}"}
)
Error 4: Missing Close Time for Hyperliquid Candles
Symptom: Hyperliquid candles lack close_time, causing errors when downstream systems expect this field.
Cause: Hyperliquid WebSocket stream does not include close time. It must be computed from interval.
# WRONG - Expecting close_time in Hyperliquid stream
close_time = candle["close_time"] # KeyError!
CORRECT - Compute close time from interval
INTERVAL_SECONDS = {
"1m": 60,
"5m": 300,
"15m": 900,
"1h": 3600,
"4h": 14400,
"1d": 86400
}
interval = candle.get("interval", "1m")
start_time_sec = float(candle.get("startTime", candle.get("t", 0)))
close_time_ms = int((start_time_sec + INTERVAL_SECONDS.get(interval, 60) - 1) * 1000)
Error 5: Volume Units Confusion (Base vs Quote Asset)
Symptom: Binance volume is ~10x larger than Hyperliquid volume for equivalent trades, even after accounting for price differences.
Cause: Binance reports quote volume (USDT), while Hyperliquid reports base volume (BTC). Direct comparison without unit conversion yields misleading results.
# WRONG - Comparing apples to oranges
binance_vol = candle_binance["volume"] # e.g., 1,234,567 USDT
hyperliquid_vol = candle_hyperliquid["volume"] # e.g., 41.23 BTC
CORRECT - Convert to common unit (quote USD)
binance_vol_usd = float(candle_binance["volume"]) # Already in USDT
hyperliquid_vol_usd = (
float(candle_hyperliquid["volume"]) * candle_hyperliquid["close"]
) # BTC * USD/BTC = USD equivalent
Who This Is For / Not For
This Guide Is For:
- Quantitative trading teams building multi-venue algos
- Data engineers constructing ML training pipelines from market data
- Researchers analyzing cross-exchange price dynamics
- Developers migrating from single-exchange to unified data sources
- Trading firms seeking 85%+ cost reduction via HolySheep relay
This Guide Is NOT For:
- Retail traders using manual chart analysis (GUI tools suffice)
- Projects requiring order book depth data (different endpoint)
- Applications needing sub-millisecond latency (requires co-location)
- Legal jurisdictions where crypto derivatives APIs are restricted
Pricing and ROI
HolySheep AI pricing is designed for high-volume professional workloads. Here is the ROI analysis for a typical team processing 10M tokens monthly:
| Provider | Rate | 10M Tokens/Month | vs HolySheep DeepSeek |
|---|---|---|---|
| Claude Sonnet 4.5 (Direct Anthropic) | $15.00/MTok | $150.00 | +3,571% |
| GPT-4.1 (Direct OpenAI) | $8.00/MTok | $80.00 | +1,900% |
| Gemini 2.5 Flash (Direct Google) | $2.50/MTok | $25.00 | +500% |
| DeepSeek V3.2 via HolySheep | $0.42/MTok | $4.20 | Baseline |
At $0.42/MTok for DeepSeek V3.2, a team processing 50M tokens monthly pays just $21—versus $750 for equivalent Claude Sonnet 4.5 output. The savings exceed $7,000 annually, fully covering engineering time for integration. HolySheep accepts WeChat and Alipay with ¥1=$1 exchange rate, saving 85%+ versus domestic Chinese API costs of ¥7.3 per dollar equivalent.
Why Choose HolySheep
- Unified Multi-Exchange API: Single integration covers Binance, Hyperliquid, Bybit, OKX, and Deribit with normalized data schemas
- Sub-50ms Latency: Optimized relay infrastructure with geographic PoPs in Singapore, Tokyo, and Frankfurt
- 85%+ Cost Savings: $0.42/MTok DeepSeek V3.2 vs $2.50-$15.00/MTok for comparable frontier models
- Flexible Payments: USD, CNY (¥1=$1), WeChat Pay, Alipay supported
- Free Credits: Sign-up bonus credits for evaluation without upfront commitment
- Real-time + Historical: Both WebSocket streaming and REST historical data in one API
- Tardis.dev Market Data: Optional relay to Tardis.dev for trades, order books, liquidations, and funding rates
Technical Specification Summary
| Parameter | Binance | Hyperliquid | Normalization Required |
|---|---|---|---|
| Open Time Format | Integer (ms) |