TenG
TenG

Reputation: 4004

Binance API - Get Klines for XXX/GBP only

I am calling the Binance Klines API to get current prices.


// 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, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_URL, $nurl);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
   $json = curl_exec($ch);
   curl_close($ch);

   if ( $json === "" || $json === "[]" || substr($json, 0, 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>";
}

The problem is I get all combinations of coin/currency, when I only want the GBP prices for each coin. The full list about times out as it runs for over 5 minutes.

I'd like to just get the price of each coin in GBP.

How can I do that?

Upvotes: 0

Views: 1103

Answers (1)

GigiSan
GigiSan

Reputation: 1272

You're asking for all the symbols (exchangeInfo) and then getting the candle info (klines) for each symbol (= currency pair).

You can do so just for the GBP pairs by looking for GBP in the two currencies you're currently iterating on, by adding this to your foreach:

// rest of the code

foreach($json->symbols as $symbol)
{
   if ($symbol->baseAsset === "GBP" || $symbol->quoteAsset === "GBP" ) {

    // rest of your foreach
       
   }
   
}

In your foreach you have these three properties under $symbol you can leverage:

$symbol->symbol    // "ADAGBP"
$symbol->baseAsset // "ADA"
$symbol->quoteAsset // "GBP"

Upvotes: 2

Related Questions