2017-08-29 10 views
1

ich die folgenden Bibliothek auf GithubWie die Ebene Parameter mit coinbase verwenden und GDAX

Ich brauche das Auftragsbuch von GDAX zu bekommen. Ich tue dies, indem Sie die folgenden Schritte ausführen:

$getOrderBook = $exchange->getOrderBook($exchangeProduct); 
echo '<pre>'; 
print_r($getOrderBook); 
echo '<pre>'; 

die oben Verwenden ich nur Stufe 1, die nach GDAX ich die „Nur das beste Angebot und fragen:“ bekommen und der Ausgang ist so etwas wie dieses:

Array 
(
    [sequence] => 2402392394 
    [bids] => Array 
     (
      [0] => Array 
       (
        [0] => 3857.13 
        [1] => 0.14 
        [2] => 1 
       ) 

     ) 

    [asks] => Array 
     (
      [0] => Array 
       (
        [0] => 3859.99 
        [1] => 0.0475099 
        [2] => 2 
       ) 

     ) 

In der Dokumentation heißt es: "Standardmäßig wird nur das innere (dh beste) Gebot und Ask zurückgegeben. Dies entspricht einer Buchtiefe von 1 Ebene. Wenn Sie ein größeres Auftragsbuch sehen möchten, geben Sie an Level-Abfrageparameter. "

In den Dokumentationszuständen wird außerdem angegeben, dass Stufe 2 die "Top 50 Gebote und Anfragen (aggregiert)" erhält und Stufe 3 die "Vollbestellung (nicht aggregiert)" erhält.

Die Klasse auf Github enthält den folgenden Code, der auf meine Frage bezieht:

public function getOrderBook($product = 'BTC-USD') { 
     //$this->validate('product', $product); 
     return $this->request('book', array('id' => $product)); 
    } 

und für ‚Buch‘:

public $endpoints = array(
    'book' => array('method' => 'GET', 'uri' => '/products/%s/book'), 
); 

Nun würde Ich mag meine Funktion $getOrderBook = $exchange->getOrderBook($exchangeProduct) für Ebene nennen 2 oder 3.

Wie kann ich das tun, ohne den von Github importierten Code zu ändern?

eine URL unter Verwendung der Ausgabe sollte wie folgt lauten:

https://api.gdax.com/products/BTC-EUR/book?level=2

Dank.

+0

Zur Klarstellung, Sie sprechen über https://docs.gdax.com/?php#get-product-order-book, oder? – WOUNDEDStevenJones

+0

Es sieht so aus, als ob in der Bibliothek coinbase-exchange-php keine Ebenen implementiert sind (basierend auf dem Array $ endpoints und der Methode getOrderBook, die keinen Parameter $ level hat). Also ohne die github-Datei zu bearbeiten, bin ich mir nicht sicher, ob es noch möglich ist, bis diese Bibliothek aktualisiert wird. – WOUNDEDStevenJones

+0

Vielleicht verwenden Sie stattdessen diese Bibliothek: https://gitlab.com/mrteye/GDAX. Es scheint Unterstützung für Buchlevel zu haben. – Aknosis

Antwort

0

Ich fürchte, der einzige Weg, dies zu tun ist, erweitern Sie die Klasse und überschreiben Sie die relevanten Methoden.

Derzeit wird der in der $endpoints-Eigenschaft angegebene URI mit der getEndpoint-Methode gefüllt. Das füllt die %s, die Sie im Titel Ihrer Frage erwähnt haben. Sie können diese Klasse erweitern und diese Methode außer Kraft setzen:

protected function getEndpoint($key, $params) { 
    // Check if the level has been specified and pull it from the $params 
    $level = null; 
    if (isset($params['level'])) { 
     $level = $params['level']; 
     unset($params['level']); 
    } 
    // Run the existing endpoint parse 
    $endpoint = parent::getEndpoint($key, $params); 
    // Add on the level 
    if ($level !== null) { 
     $endpoint['uri'] .= '?level='.$level; 
    } 

    return $endpoint 
} 

Dann werden Sie auch die orderBook Methode außer Kraft setzen müssen:

public function getOrderBook($product = 'BTC-USD', $level = null) { 
    return $this->request('book', array('id' => $product, 'level' => $level)); 
} 

Alternativ können Sie eine Pull-Anforderung an die den Code Einstellung Github Bibliothek einreichen Unterstützung level.

0

Sie können den Endpunkt außer Kraft setzen, wie es public erklärt hat:

$exchange = new CoinbaseExchange; 
// ... 
$exchange->endpoints['book']['uri'] = '/products/%s/book?level=2'; 
$getOrderBook = $exchange->getOrderBook($exchangeProduct); 

Obwohl, würde es besser sein, eine PR zu schaffen Erweiterung der API wie in Scopey's answer vorgeschlagen.

Verwandte Themen