[ "name", "close", "volume", "premarket_volume", "premarket_change", "premarket_change_abs", "market_cap_basic" ], "filter" => [ ["left" => "exchange", "operation" => "in_range", "right" => ["AMEX", "NASDAQ", "NYSE"]] ], "options" => ["lang" => "en"], "range" => [0, 50], "sort" => ["sortBy" => "premarket_volume", "sortOrder" => "desc"] ]); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $response = curl_exec($ch); $error = curl_error($ch); curl_close($ch); if ($error) { return ["error" => "CURL Error: " . $error]; } $data = json_decode($response, true); return $data; } // Fetch the data $result = getPremarketActivity(); // Check if we have valid data if (isset($result['error'])) { $error = $result['error']; $stocks = []; } elseif (isset($result['data']) && is_array($result['data'])) { $stocks = []; foreach ($result['data'] as $item) { $d = $item['d']; $stocks[] = [ 'ticker' => $d[0] ?? 'N/A', 'price' => $d[1] ?? 0, 'volume' => $d[2] ?? 0, 'premarket_volume' => $d[3] ?? 0, 'premarket_change' => $d[4] ?? 0, 'premarket_change_abs' => $d[5] ?? 0, 'market_cap' => $d[6] ?? 0 ]; } } else { $stocks = []; $error = "No data received from API"; } // Handle sorting $sortColumn = isset($_GET['sort']) ? $_GET['sort'] : 'premarket_volume'; $sortOrder = isset($_GET['order']) && $_GET['order'] === 'asc' ? 'asc' : 'desc'; // Map sort parameter to array key $sortMap = [ 'ticker' => 'ticker', 'price' => 'price', 'premarket_volume' => 'premarket_volume', 'premarket_change' => 'premarket_change', 'premarket_change_abs' => 'premarket_change_abs' ]; $sortKey = isset($sortMap[$sortColumn]) ? $sortMap[$sortColumn] : 'premarket_volume'; // Sort the array usort($stocks, function($a, $b) use ($sortKey, $sortOrder) { if ($a[$sortKey] == $b[$sortKey]) { return 0; } $result = $a[$sortKey] < $b[$sortKey] ? -1 : 1; return $sortOrder === 'asc' ? $result : -$result; }); // Get next sort order for each column function getNextOrder($column) { $currentSort = isset($_GET['sort']) ? $_GET['sort'] : ''; $currentOrder = isset($_GET['order']) ? $_GET['order'] : 'desc'; if ($currentSort === $column) { return $currentOrder === 'desc' ? 'asc' : 'desc'; } return 'desc'; } function getSortIcon($column) { $currentSort = isset($_GET['sort']) ? $_GET['sort'] : ''; $currentOrder = isset($_GET['order']) ? $_GET['order'] : 'desc'; if ($currentSort === $column) { return $currentOrder === 'desc' ? ' ▼' : ' ▲'; } return ''; } // Helper to format change function formatChange($value) { $symbol = $value >= 0 ? '+' : ''; return $symbol . number_format($value, 2) . '%'; } ?> Premarket Activity Dashboard

⚡ PREMARKET ACTIVITY

MOST ACTIVE STOCKS • CLICK HEADERS TO SORT
⚠️ Warning:
❌ Error:
📊 Total Stocks
🟢 Gainers 0; })); ?>
🔴 Losers
📈 Top Gain
📉 Top Loss
= 0 ? 'change-positive' : 'change-negative'; ?>
# Ticker Price Premarket Volume Change % Change (Abs)
$