问题描述
我正在调用 Binance Klines API 以获取当前价格。
// Get Assets - ideally I'd just like the currency name (e.g. ETH) rather ETC/BTC
$url = 'https://api.binance.com/api/v3/exchangeInfo';
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
$result = curl_exec($ch);
curl_close($ch);
$json = json_decode($result);
foreach($json->symbols as $symbol)
{
// Get prices for teh asset
$ccode = $symbol->symbol;
$nurl = 'https://api.binance.com/api/v3/klines?symbol=' . $ccode . '&interval=1m';
$stime = 1000*(time() - 60); // Time period is the last minute
$etime = 1000*time();
$nurl .= '&startTime=' . $stime;
$nurl .= '&endTime=' . $etime;
$ch = curl_init($nurl);
curl_setopt($ch,1);
curl_setopt($ch,$nurl);
curl_setopt($ch,0);
curl_setopt($ch,0);
$json = curl_exec($ch);
curl_close($ch);
if ( $json === "" || $json === "[]" || substr($json,8) == '{"code":' )
{
echo "Not found " . $ccode . " .. skipping <BR>";
continue;
}
$arr = explode(",",$json);
$price = $arr[4];
$tstamp1 = $arr[6];
$tstamp = gmdate("Y-m-d\TH:i:s\Z",($arr[6]/1000));
echo $ccode . " " . $tstamp . " " . $price . "<BR>";
}
问题是我得到了硬币/货币的所有组合,而我只想要每个硬币的英镑价格。运行超过 5 分钟时有关超时的完整列表。
我只想获得每枚硬币的英镑价格。
我该怎么做?
解决方法
您要获取所有符号 (exchangeInfo
),然后获取每个符号(= 货币对)的蜡烛信息 (klines
)。
您可以通过在您当前迭代的两种货币中查找 GBP,将其添加到您的 foreach 中:
// rest of the code
foreach($json->symbols as $symbol)
{
if ($symbol->baseAsset === "GBP" || $symbol->quoteAsset === "GBP" ) {
// rest of your foreach
}
}
在您的 foreach
中,您可以利用 $symbol
下的这三个属性:
$symbol->symbol // "ADAGBP"
$symbol->baseAsset // "ADA"
$symbol->quoteAsset // "GBP"