Ccxt: Kraken - Erreur 403 interdite en essayant d'obtenir des commandes minimales

Créé le 14 avr. 2020  ·  7Commentaires  ·  Source: ccxt/ccxt

Bonjour,

L'intégration Kraken me semble interrompue depuis cette mise à jour: https://github.com/ccxt/ccxt/commit/89ee033e90c10b500c098ce3ed5a440c39c33dad#diff -5e85c8f10126d08bcbd8c3138002c7c0
Dans le commit, "fetchMinLimitOrder" a été défini sur true.
Mais Kraken dispose d'un mécanisme de protection qui oblige les utilisateurs à remplir un captcha sur leur site Web pour accéder aux pages. Je pense que lorsque cette protection est activée, Kraken ne parvient pas à charger les marchés.

Veuillez me dire si je me trompe dans ma pensée et si une solution est possible.

Je vous remercie,
Alex

duplicate question

Commentaire le plus utile

@alextousss Comme indiqué dans la réponse de Kroitor ci-dessus, la taille https://support.kraken.com/hc/en-us/articles/205893708-What-is-the-minimum- ordre-taille-.

Le code html de la page de support de Kraken est capturé et les balises html <td class="wysiwyg-text-align-right"> sont explosées dans un tableau qui est utilisé pour dériver les commandes min.

Ma solution à court terme (jusqu'à ce que Kraken ajoute les tailles de commande minimales au point de terminaison de l'API REST AssetPairs) était de fournir le code html directement à la fonction fetch_min_order_amounts () dans le fichier ccxt / kraken.php.

Au lieu de $html = $this->zendeskGet205893708WhatIsTheMinimumOrderSize ();

J'ai défini la variable $ html avec le texte de la page de support en utilisant une fonction qui a renvoyé le texte pertinent.

J'ai simplement créé la fonction suivante qui a renvoyé le code html pertinent copié à partir de la page de support kraken:

public function Minimum_Order_Size_Hard_Code(){

return '<td><strong>Base currency</strong></td>
<td class="wysiwyg-text-align-right"><strong>Order minimum</strong></td>
</tr>
<tr>
<td>Algorand</td>
<td class="wysiwyg-text-align-right">50 ALGO</td>
</tr>
<tr>
<td>Augur</td>
<td class="wysiwyg-text-align-right">0.3 REP</td>
</tr>
<tr>
<td>Basic Attention Token</td>
<td class="wysiwyg-text-align-right">50 BAT</td>
</tr>
<tr>
<td>Bitcoin</td>
<td class="wysiwyg-text-align-right">0.002 XBT</td>
</tr>
<tr>
<td>Bitcoin Cash</td>
<td class="wysiwyg-text-align-right">0.000002 BCH</td>
</tr>
<tr>
<td>Cardano</td>
<td class="wysiwyg-text-align-right">1 ADA</td>
</tr>
<tr>
<td>Chainlink</td>
<td class="wysiwyg-text-align-right">10 LINK</td>
</tr>
<tr>
<td>Cosmos</td>
<td class="wysiwyg-text-align-right">1 ATOM</td>
</tr>
<tr>
<td>DAI</td>
<td class="wysiwyg-text-align-right">10 DAI</td>
</tr>
<tr>
<td>Dash</td>
<td class="wysiwyg-text-align-right">0.03 DASH</td>
</tr>
<tr>
<td>Dogecoin</td>
<td class="wysiwyg-text-align-right">3000 XDG</td>
</tr>
<tr>
<td>EOS</td>
<td class="wysiwyg-text-align-right">3 EOS</td>
</tr>
<tr>
<td>Ethereum</td>
<td class="wysiwyg-text-align-right">0.02 ETH</td>
</tr>
<tr>
<td>Ethereum Classic</td>
<td class="wysiwyg-text-align-right">0.3 ETC</td>
</tr>
<tr>
<td>Gnosis</td>
<td class="wysiwyg-text-align-right">0.02 GNO</td>
</tr>
<tr>
<td>ICON</td>
<td class="wysiwyg-text-align-right">50 ICX</td>
</tr>
<tr>
<td>Lisk</td>
<td class="wysiwyg-text-align-right">10 LSK</td>
</tr>
<tr>
<td>Litecoin</td>
<td class="wysiwyg-text-align-right">0.1 LTC</td>
</tr>
<tr>
<td>Monero</td>
<td class="wysiwyg-text-align-right">0.1 XMR</td>
</tr>
<tr>
<td>Nano</td>
<td class="wysiwyg-text-align-right">10 NANO</td>
</tr>
<tr>
<td>OmiseGO</td>
<td class="wysiwyg-text-align-right">10 OMG</td>
</tr>
<tr>
<td>PAX Gold</td>
<td class="wysiwyg-text-align-right">0.01 PAXG</td>
</tr>
<tr>
<td>QTUM</td>
<td class="wysiwyg-text-align-right">0.1 QTUM</td>
</tr>
<tr>
<td>Ripple</td>
<td class="wysiwyg-text-align-right">30 XRP</td>
</tr>
<tr>
<td>Siacoin</td>
<td class="wysiwyg-text-align-right">5000 SC</td>
</tr>
<tr>
<td>Stellar Lumens</td>
<td class="wysiwyg-text-align-right">30 XLM</td>
</tr>
<tr>
<td>Tether</td>
<td class="wysiwyg-text-align-right">5 USDT</td>
</tr>
<tr>
<td>Tezos</td>
<td class="wysiwyg-text-align-right">1 XTZ</td>
</tr>
<tr>
<td>Tron</td>
<td class="wysiwyg-text-align-right">500 TRX</td>
</tr>
<tr>
<td>USD Coin</td>
<td class="wysiwyg-text-align-right">5 USDC</td>
</tr>
<tr>
<td>Watermelon</td>
<td class="wysiwyg-text-align-right">0.1 MLN</td>
</tr>
<tr>
<td>Waves</td>
<td class="wysiwyg-text-align-right">10 WAVES</td>
</tr>
<tr>
<td>Zcash</td>
<td class="wysiwyg-text-align-right">0.03 ZEC</td>
</tr>
<tr>
<td>Euro</td>
<td class="wysiwyg-text-align-right">10 EUR</td>
</tr>
<tr>
<td>US Dollar</td>
<td class="wysiwyg-text-align-right">10 USD</td>
</tr>
<tr>
<td>Great British Pound</td>
<td class="wysiwyg-text-align-right">10 GBP</td>
</tr>
</tbody>';
}

puis défini la variable $ html dans la fonction fetch_min_order_amounts () dans le fichier ccxt / kraken.php avec un appel à la fonction ci-dessus:

public function fetch_min_order_amounts() {
$html =  $this->Minimum_Order_Size_Hard_Code();
...

Ce correctif n'est bien sûr pas idéal, car la solution de contournement sera automatiquement perdue lors de la mise à jour de ccxt, mais cela fonctionne. En outre, ce correctif ne représente pas une modification importante du code et peut facilement être ajouté à toute mise à jour future.

Tous les 7 commentaires

Cela a été rapporté précédemment, ici:

Réponse officielle de Kraken:

nous sommes conscients du problème récent que CCXT a rencontré lorsqu'une modification de sécurité de nos pages d'assistance a empêché la récupération des tailles minimales de commande via nos pages d'assistance. Nos développeurs d'API REST sont en train d'ajouter les tailles de commande minimales au point de terminaison AssetPairs de l'API REST, ce qui rendrait les tailles de commande minimales disponibles plus efficacement (et de manière plus fiable). Nous n'avons pas encore de date de disponibilité prévue pour cette mise à jour, mais je garderai une trace de l'avancement et vous informerai lorsque plus d'informations seront disponibles.

En attendant, vous pouvez contourner le problème en définissant l'option fetchMinOrderAmounts sur false .

exchange = ccxt.kraken({
    'enableRateLimit': True,
    'options': {  # ←--------------------- inside 'options' subkey
        'fetchMinOrderAmounts': False,  # ←---------- set to False 
    }
})

De cette façon, vous perdrez effectivement les informations sur les limites minimales, mais les autres fonctionnalités continueront de fonctionner.

Faites-moi savoir si cela ne répond pas à la question.

Je suis désolé pour le doublon, je n'ai recherché "Kraken" dans l'onglet Problèmes que lorsque vous avez marqué mon problème comme Duplicate (il n'y avait aucune mention de Kraken sur la première page des problèmes).

Cependant, oui, cela confirme tout ce que je pensais. J'ai corrigé mon système de production en revenant à la version antérieure au commit que j'ai mentionné. À long terme, je désactiverai fetchMinOrderAmounts

Merci pour votre réponse et votre implication plus large dans ccxt.
Ce n'est pas une tâche facile d'unifier 100 API d'échange cryptographique, mais vous l'avez fait à merveille. Chapeau.

@alextousss merci pour les commentaires, je l'apprécie vraiment! N'hésitez pas si vous avez d'autres questions. Vous tiendra au courant et vous fera savoir quand il sera corrigé du côté du Kraken.

@alextousss Comme indiqué dans la réponse de Kroitor ci-dessus, la taille https://support.kraken.com/hc/en-us/articles/205893708-What-is-the-minimum- ordre-taille-.

Le code html de la page de support de Kraken est capturé et les balises html <td class="wysiwyg-text-align-right"> sont explosées dans un tableau qui est utilisé pour dériver les commandes min.

Ma solution à court terme (jusqu'à ce que Kraken ajoute les tailles de commande minimales au point de terminaison de l'API REST AssetPairs) était de fournir le code html directement à la fonction fetch_min_order_amounts () dans le fichier ccxt / kraken.php.

Au lieu de $html = $this->zendeskGet205893708WhatIsTheMinimumOrderSize ();

J'ai défini la variable $ html avec le texte de la page de support en utilisant une fonction qui a renvoyé le texte pertinent.

J'ai simplement créé la fonction suivante qui a renvoyé le code html pertinent copié à partir de la page de support kraken:

public function Minimum_Order_Size_Hard_Code(){

return '<td><strong>Base currency</strong></td>
<td class="wysiwyg-text-align-right"><strong>Order minimum</strong></td>
</tr>
<tr>
<td>Algorand</td>
<td class="wysiwyg-text-align-right">50 ALGO</td>
</tr>
<tr>
<td>Augur</td>
<td class="wysiwyg-text-align-right">0.3 REP</td>
</tr>
<tr>
<td>Basic Attention Token</td>
<td class="wysiwyg-text-align-right">50 BAT</td>
</tr>
<tr>
<td>Bitcoin</td>
<td class="wysiwyg-text-align-right">0.002 XBT</td>
</tr>
<tr>
<td>Bitcoin Cash</td>
<td class="wysiwyg-text-align-right">0.000002 BCH</td>
</tr>
<tr>
<td>Cardano</td>
<td class="wysiwyg-text-align-right">1 ADA</td>
</tr>
<tr>
<td>Chainlink</td>
<td class="wysiwyg-text-align-right">10 LINK</td>
</tr>
<tr>
<td>Cosmos</td>
<td class="wysiwyg-text-align-right">1 ATOM</td>
</tr>
<tr>
<td>DAI</td>
<td class="wysiwyg-text-align-right">10 DAI</td>
</tr>
<tr>
<td>Dash</td>
<td class="wysiwyg-text-align-right">0.03 DASH</td>
</tr>
<tr>
<td>Dogecoin</td>
<td class="wysiwyg-text-align-right">3000 XDG</td>
</tr>
<tr>
<td>EOS</td>
<td class="wysiwyg-text-align-right">3 EOS</td>
</tr>
<tr>
<td>Ethereum</td>
<td class="wysiwyg-text-align-right">0.02 ETH</td>
</tr>
<tr>
<td>Ethereum Classic</td>
<td class="wysiwyg-text-align-right">0.3 ETC</td>
</tr>
<tr>
<td>Gnosis</td>
<td class="wysiwyg-text-align-right">0.02 GNO</td>
</tr>
<tr>
<td>ICON</td>
<td class="wysiwyg-text-align-right">50 ICX</td>
</tr>
<tr>
<td>Lisk</td>
<td class="wysiwyg-text-align-right">10 LSK</td>
</tr>
<tr>
<td>Litecoin</td>
<td class="wysiwyg-text-align-right">0.1 LTC</td>
</tr>
<tr>
<td>Monero</td>
<td class="wysiwyg-text-align-right">0.1 XMR</td>
</tr>
<tr>
<td>Nano</td>
<td class="wysiwyg-text-align-right">10 NANO</td>
</tr>
<tr>
<td>OmiseGO</td>
<td class="wysiwyg-text-align-right">10 OMG</td>
</tr>
<tr>
<td>PAX Gold</td>
<td class="wysiwyg-text-align-right">0.01 PAXG</td>
</tr>
<tr>
<td>QTUM</td>
<td class="wysiwyg-text-align-right">0.1 QTUM</td>
</tr>
<tr>
<td>Ripple</td>
<td class="wysiwyg-text-align-right">30 XRP</td>
</tr>
<tr>
<td>Siacoin</td>
<td class="wysiwyg-text-align-right">5000 SC</td>
</tr>
<tr>
<td>Stellar Lumens</td>
<td class="wysiwyg-text-align-right">30 XLM</td>
</tr>
<tr>
<td>Tether</td>
<td class="wysiwyg-text-align-right">5 USDT</td>
</tr>
<tr>
<td>Tezos</td>
<td class="wysiwyg-text-align-right">1 XTZ</td>
</tr>
<tr>
<td>Tron</td>
<td class="wysiwyg-text-align-right">500 TRX</td>
</tr>
<tr>
<td>USD Coin</td>
<td class="wysiwyg-text-align-right">5 USDC</td>
</tr>
<tr>
<td>Watermelon</td>
<td class="wysiwyg-text-align-right">0.1 MLN</td>
</tr>
<tr>
<td>Waves</td>
<td class="wysiwyg-text-align-right">10 WAVES</td>
</tr>
<tr>
<td>Zcash</td>
<td class="wysiwyg-text-align-right">0.03 ZEC</td>
</tr>
<tr>
<td>Euro</td>
<td class="wysiwyg-text-align-right">10 EUR</td>
</tr>
<tr>
<td>US Dollar</td>
<td class="wysiwyg-text-align-right">10 USD</td>
</tr>
<tr>
<td>Great British Pound</td>
<td class="wysiwyg-text-align-right">10 GBP</td>
</tr>
</tbody>';
}

puis défini la variable $ html dans la fonction fetch_min_order_amounts () dans le fichier ccxt / kraken.php avec un appel à la fonction ci-dessus:

public function fetch_min_order_amounts() {
$html =  $this->Minimum_Order_Size_Hard_Code();
...

Ce correctif n'est bien sûr pas idéal, car la solution de contournement sera automatiquement perdue lors de la mise à jour de ccxt, mais cela fonctionne. En outre, ce correctif ne représente pas une modification importante du code et peut facilement être ajouté à toute mise à jour future.

@ mjoh090 oui, coder en dur les limites est l'un des moyens de contourner ce problème, lorsque vous avez vraiment besoin de ces informations.

Dans une perspective plus large, serait-il possible d'avoir un "mode stable" qui désactiverait ce type de fonctionnalité qui ne repose pas sur des API officielles et stables? Est-ce que ccxt analyse les pages d'aide pour d'autres échanges? Ce problème était déjà présent pour les frais si je me souviens bien et m'a causé un gros mal de tête.
Si vous le construisez, je dormirai mieux ;-)

@alextousss oui, en général, nous essayons de rendre tous les points de terminaison "non officiels" optionnels, cependant, il peut rester quelques bizarreries dans les échanges dérivés - nous ferons de notre mieux pour tout nettoyer. Je l'ai désactivé pour Kraken (dans 1.26.20), donc cette option est maintenant false par défaut.

Cette page vous a été utile?
0 / 5 - 0 notes