Sunday, January 8, 2017

Haskell Système De Négociation

Introduction Bienvenue dans la documentation des développeurs et des traders GDAX. Ces documents décrivent les fonctionnalités d'échange, les détails du marché et les API. Les API sont divisées en deux catégories: trading et flux. Les API commerciales requièrent une authentification et permettent d'accéder aux commandes et aux autres informations de compte. Les API de flux fournissent des données de marché et sont publiques. Les mises à jour API sont publiées sur notre blog développeur developers. coinbaseblog. Vous pouvez vous abonner aux mises à jour par courriel. Dans le cadre du renommage de Coinbase Exchange vers GDAX, les points d'extrémité API ont changé. Les anciens points de terminaison. exchange. coinbase ont été supprimés à compter du 6 décembre 2016. Aperçu du marché et informations générales. Moteur assorti GDAX gère un carnet de commandes en continu, premier arrivé, premier servi. Les ordres sont exécutés en priorité prix-temps comme reçu par le moteur assorti. Self-Trade Prevention L'autocontrôle n'est pas autorisé sur GDAX. Deux commandes du même utilisateur ne se remplissent pas. Lorsque vous passez une commande, vous pouvez spécifier le comportement de prévention du commerce libre. Décrémenter et annuler Le comportement par défaut est décrémenter et annuler. Lorsque deux ordres d'un même utilisateur se croisent, le plus petit ordre sera annulé et la taille d'ordre plus grande sera décrémentée par la taille d'ordre plus petite. Si les deux ordres sont de la même taille, les deux seront annulés. Annuler le plus ancien Annuler l'ordre ancien (de repos) dans son intégralité. Le nouvel ordre continue à s'exécuter. Annuler le plus récent Annuler la commande la plus récente (prise) en entier. L'ancien ordre de repos reste sur le carnet de commandes. Annuler les deux Annuler immédiatement les deux commandes. Remarques sur les ordres de marché Lorsqu'un ordre de marché utilisant la prévention de l'autocontrôle de type cc rencontre un ordre limite ouvert, le comportement dépend des champs du message d'ordre de marché qui ont été spécifiés. Si les fonds et la taille sont spécifiés pour un ordre d'achat, la taille de l'ordre du marché sera décrémentée en interne dans le moteur correspondant et les fonds demeureront inchangés. L'objectif est de compenser votre taille cible sans limiter votre pouvoir d'achat. Si la taille n'est pas spécifiée, les fonds seront décrémentés. Pour une vente sur le marché, la taille sera décrémentée en cas de dépassement de commande limitée. Les ordres d'amélioration de prix sont comparés à des ordres de carnet de commandes existants au prix de la commande sur le livre, et non au prix de l'ordre du preneur. L'utilisateur A place une commande d'achat pour 1 BTC à 100 USD. L'utilisateur B souhaite alors vendre 1 BTC à 80 USD. Parce que l'ordre de l'utilisateur Arsquos était d'abord pour le moteur de négociation, ils auront priorité de prix et le commerce se produira à 100 USD. Ordre du cycle de vie Les ordres valides envoyés au moteur correspondant sont confirmés immédiatement et sont à l'état reçu. Si une commande est exécutée contre une autre commande immédiatement, la commande est considérée comme terminée. Un ordre peut s'exécuter en partie ou en entier. Toute partie de la commande non remplie immédiatement, sera considérée comme ouverte. Les commandes resteront à l'état ouvert jusqu'à ce qu'elles soient annulées ou remplies ultérieurement par de nouvelles commandes. Les ordres qui ne sont plus admissibles à l'appariement (rempli ou annulé) sont dans l'état fait. Frais de négociation GDAX exploite un modèle de preneur de marque. Les ordres qui procurent de la liquidité sont facturés des frais différents des commandes de liquidité. Les frais sont évalués en pourcentage du montant du match (taille du prix). Utilisateur 30 jours volume Un 0,25 preneur frais sont perçus sur chaque métier pendant la journée. À la fin de la journée (UTC 00:00), un remboursement est calculé et émis. Le montant du remboursement délivré est calculé sur le pourcentage du volume d'échange total, en bitcoin, auquel un commerçant a participé au cours des 30 derniers jours. Les marchés des ETH ont des frais de 0,3 taker au niveau 0-1. Il existe une commande SELL existante pour 5 BTC à 100 USD sur le carnet de commandes. Vous entrez une commande d'achat pour 7 BTC à 100 USD. 5 BTC de votre commande d'ACHAT sont immédiatement assortis et vous sont facturés les honoraires de preneur parce que vous prenez la liquidité du carnet de commande. Les 2 autres BTC de votre commande sont maintenant assis sur le côté BID du carnet de commandes. Une commande SELL pour 2 BTC à 100 USD arrive et correspond à votre commande 2 BTC ACHAT. Dans ce cas vous avez fourni des liquidités et ne sont pas facturés des frais. Exemple de remboursement Si 100 BTC a été échangé sur le carnet de commandes de Coinbases USD au cours des trente derniers jours et que vous avez comptabilisé 1,1 bitcoin, vous représentez plus de 1 du volume total et recevez un rabais de 0,01 ce jour-là et payez une commission de prise effective de 0,24 . Le rabais est émis dans la devise de la soumission. Frais de dépôt et de retrait GDAX ne facture aucun dépôt supplémentaire ni frais de retrait pour le transfert de fonds entre vos comptes Coinbase et vos comptes Exchange. Colocation GDAX sources de données primaires et serveurs exécutés dans le centre de données Amazon US East. Pour réduire la latence de l'accès à l'API, nous vous recommandons de faire des requêtes auprès de serveurs situés à proximité du centre de données US East. Un sandbox public est disponible pour tester la connectivité API et le Web trading. Le bac à sable fournit toutes les fonctionnalités de l'échange de production, mais vous permet d'ajouter des faux fonds pour les tests. Les sessions de connexion et les clés API sont distinctes de la production. Utilisez l'interface Web sandbox pour créer des clés dans l'environnement de sandbox. Pour ajouter des fonds, utilisez les boutons de dépôt et de retrait de l'interface Web comme vous le feriez sur l'interface Web de production. URL du bac à sable Lors du test de la connectivité API, assurez-vous d'utiliser les URL suivantes. API REST api-public. sandbox. gdax Flux Webswss: ws-feed-public. sandbox. gdax API FIX fix-public. sandbox. gdax Remarque sur l'API FIX Lorsque vous vous connectez à l'API FIX dans Sandbox, vous devez commencer par un HTTP Demande de mise à niveau et définissez l'en-tête de mise à niveau à fixer. Après avoir reçu une réponse de 101 protocoles de commutation du serveur, vous pouvez continuer à utiliser la connexion en tant que connexion FIX régulière. N'oubliez pas d'utiliser HTTPS pour cela. Bibliothèques client Les bibliothèques client peuvent vous aider à vous intégrer rapidement à notre API. Non officiel L'API REST possède des points d'extrémité pour la gestion des comptes et des commandes ainsi que pour les données du marché public. REST API Endpoint URL Il existe également une API FIX pour la gestion des commandes. Toutes les requêtes et réponses sont du type de contenu applicationjson et suivent les codes d'état de réponse HTTP typiques pour le succès et l'échec. Sauf indication contraire, les erreurs aux mauvaises demandes répondent avec HTTP 4xx ou codes d'état. Le corps contiendra également un paramètre de message indiquant la cause. Votre bibliothèque http de languagesquos doit être configurée pour fournir des corps de message pour les requêtes non-2xx afin que vous puissiez lire le champ de message du corps. Codes d'erreur courants Pagination Les curseurs Avant et Après Le curseur avant fait référence au premier élément d'une page de résultats et le curseur suivant fait référence au dernier élément d'un ensemble de résultats. Pour demander une page d'enregistrements avant celle-ci, utilisez le paramètre avant la requête. Votre demande initiale peut omettre ce paramètre pour obtenir la première page par défaut. La réponse contiendra un en-tête CB-BEFORE qui renverra l'identifiant du curseur à utiliser dans votre demande suivante pour la page avant celle-ci. La page précédente est une page plus récente et pas une qui s'est produite avant en temps chronologique. La réponse contiendra également un en-tête CB-AFTER qui renverra l'identifiant du curseur à utiliser dans votre prochaine demande pour la page après celle-ci. La page après est une page plus ancienne et pas celle qui s'est produite après celle-ci en temps chronologique. La pagination du curseur peut être intuitive au début. Avant et après les arguments de curseur ne doit pas être confondu avec avant et après en temps chronologique. La plupart des demandes paginées renvoient les informations les plus récentes (la plus récente) en tant que première page triée par ordre le plus récent (en temps chronologique) en premier. Pour obtenir des renseignements plus anciens, vous devez demander des pages après la page initiale. Pour obtenir des informations plus récentes, vous devez demander des pages avant la première page. Timestamps Sauf indication contraire, tous les timestamps de API sont retournés dans ISO 8601 avec microsecondes. Assurez-vous que vous pouvez analyser le format ISO 8601 suivant. La plupart des langues et des bibliothèques modernes traiteront ce problème sans problème. Les nombres décimaux sont renvoyés en tant que chaînes pour préserver la précision totale sur les plates-formes. Lorsque vous faites une demande, il est recommandé de convertir vos numéros en chaînes pour éviter les erreurs de troncature et de précision. Les nombres entiers (comme l'id commercial et la séquence) ne sont pas cotés. La plupart des identifiants sont UUID sauf indication contraire. Lors d'une demande nécessitant un UUID, les deux formulaires (avec et sans tirets) sont acceptés. 132fb6ae-456b-4654-b4e0-d681ac05cea1 ou 132fb6ae456b4654b4e0d681ac05cea1 Limites tarifaires Lorsqu'une limite de débit est dépassée, un état de 429 Demandes trop nombreuses sera retourné. Paramètres publics Nous accélérons les paramètres publics par IP: 3 demandes par seconde, jusqu'à 6 requêtes par seconde en rafales. Paramètres d'extrémité privés Nous accélérons les noeuds finaux privés par ID utilisateur: 5 requêtes par seconde, jusqu'à 10 requêtes par seconde en rafales. API d'échange d'informations financières L'API FIX limite chaque type de commande (par exemple, NewOrderSingle, OrderCancelRequest) à 30 commandes par seconde. Les terminaux privés sont disponibles pour la gestion des commandes et la gestion des comptes. Chaque demande privée doit être signée en utilisant le schéma d'authentification décrit. Les points d'extrémité privés nécessitent une authentification à l'aide de votre clé API GDAX. Vous pouvez générer des clés API ici Authentification Génération d'une clé d'API Avant de pouvoir signer toute demande, vous devez créer une clé d'API via le site Web GDAX. Lors de la création d'une clé, vous disposez de 3 informations dont vous devez vous souvenir: La clé et le secret seront générés au hasard et fournis par GDAX. La phrase secrète vous sera fournie pour sécuriser votre accès à l'API. GDAX stocke le hachage salé de votre phrase secrète pour vérification, mais ne peut pas récupérer la phrase secrète si vous l'oubliez. Création d'une requête Toutes les requêtes REST doivent contenir les en-têtes suivants: CB-ACCESS-KEY La clé api en tant que chaîne. CB-ACCESS-SIGN La signature codée en base64 (voir Signer un message). CB-ACCESS-TIMESTAMP Un timestamp pour votre demande. CB-ACCESS-PASSPHRASE La phrase secrète que vous avez spécifiée lors de la création de la clé API. Tous les organismes de demande doivent avoir le type de contenu applicationjson et être valide JSON. Signature d'un message L'en-tête CB-ACCESS-SIGN est généré en créant un sha256 HMAC à l'aide de la clé secrète décodée en base64 sur la méthode prehash string timestamp requestPath body (où représente la chaîne de concaténation) et base64-encode la sortie. La valeur d'horodatage est identique à l'en-tête CB-ACCESS-TIMESTAMP. Le corps est la chaîne du corps de la requête ou est omis s'il n'y a pas de corps de requête (généralement pour les requêtes GET). La méthode doit être UPPER CASE. N'oubliez pas de commencer par décrypter la chaîne secrète alphanumérique (64 octets) avant de l'utiliser comme clé pour HMAC. En outre, base64-coder la sortie digest avant d'envoyer dans l'en-tête. Sélection d'un timestamp L'en-tête CB-ACCESS-TIMESTAMP DOIT être un nombre de secondes depuis Unix Epoch en UTC. Les valeurs décimales sont autorisées. Votre horodatage doit être dans les 30 secondes de l'heure d'api ou votre demande sera considérée comme expirée et rejetée. Nous vous recommandons d'utiliser le point d'extrémité de temps pour interroger l'heure du serveur API si vous pensez qu'il y a beaucoup d'erreur de temps entre votre serveur et les serveurs API. Liste des comptes Obtenir une liste de comptes de négociation. Vos comptes de négociation sont distincts de vos comptes Coinbase. Consultez la section Dépôts pour obtenir de la documentation sur la façon de déposer des fonds pour commencer la négociation. Demande Http Si une entrée est le résultat d'une transaction (match, fee), le champ de détails contiendra des informations supplémentaires sur le métier. Cette demande est paginée Les réservations sont placées sur un compte pour toute commande active ou demande de retrait en attente. À mesure que l'ordre est comblé, le montant de retenue est mis à jour. Si une commande est annulée, toute attente restante est supprimée. Pour un retrait, une fois qu'il est terminé, la cale est enlevée. Http Request Cette demande est paginée Le type de la cale indiquera pourquoi la cale existe. Le type de détention est l'ordre des dé - cessions liées aux ordres ouverts et le transfert pour les dettes liées à un retrait. Le champ ref contient l'id de l'ordre ou du transfert qui a créé la prise. Placez un nouvel ordre Vous pouvez placer différents types de commandes: limite. marché. Et s'arrêter. Les commandes ne peuvent être placées que si votre compte dispose de fonds suffisants. Une fois la commande passée, les fonds de votre compte seront mis en attente pendant la durée de la commande. La quantité et les fonds mis en attente dépendent du type d'ordre et des paramètres spécifiés. Voir les détails ci-dessous. Paramètres de requête HTTP Ces paramètres sont communs à tous les types de commandes. Selon le type d'ordre, des paramètres supplémentaires seront nécessaires (voir ci-dessous). Product ID Le productid doit correspondre à un produit valide. La liste des produits est disponible via le point d'extrémité des produits. ID de commande client Le champ facultatif clientoid doit être un UUID généré par votre application de négociation. Cette valeur de champ sera diffusée dans le flux public pour les messages reçus. Vous pouvez utiliser ce champ pour identifier vos commandes dans le flux public. Le claireid est différent de l'id de commande assigné au serveur. Si vous consommez le flux public et voir un message reçu avec votre clientoid. Vous devez enregistrer l'identificateur de commande attribué par le serveur, car il sera utilisé pour les mises à jour d'état des commandes futures. Le clémentide NE sera PAS utilisé après l'envoi du message reçu. L'ID de commande attribué par le serveur est également renvoyé comme champ ID à cette requête POST HTTP. Lorsque vous passez une commande, vous pouvez spécifier le type d'ordre. Le type d'ordre que vous spécifiez influencera les autres paramètres de commande et la façon dont votre commande sera exécutée par le moteur correspondant. Si type n'est pas spécifié, l'ordre sera par défaut un ordre limite. Les ordres à limites sont à la fois le type d'ordre par défaut et le type d'ordre de base. Un ordre limité exige la spécification d'un prix et d'une taille. La taille est le nombre de bitcoin à acheter ou à vendre, et le prix est le prix par bitcoin. L'ordre limite sera comblé au prix indiqué ou mieux. Un ordre de vente peut être rempli au prix spécifié par bitcoin ou un prix plus élevé par bitcoin et un ordre d'achat peut être rempli au prix spécifié ou à un prix inférieur selon les conditions du marché. Si les conditions du marché ne peuvent pas remplir l'ordre limite immédiatement, l'ordre limite deviendra une partie du carnet d'ordres ouvert jusqu'à ce qu'il soit rempli par un autre ordre entrant ou annulé par l'utilisateur. Les ordres de marché diffèrent des ordres à cours limité dans la mesure où ils ne fournissent aucune garantie de prix. Ils fournissent cependant un moyen d'acheter ou de vendre des quantités spécifiques de bitcoin ou fiat sans avoir à préciser le prix. Les ordres sur le marché sont exécutés immédiatement et aucune partie de l'ordre du marché ne figure sur le carnet de commandes ouvert. Les ordres de marché sont toujours considérés comme preneurs et encourent des honoraires de preneur. Lorsque vous placez un ordre de marché, vous pouvez spécifier les fonds et / ou la taille. Les fonds permettront de limiter la part du solde de votre compte de devis en devises et la taille de votre compte limitera le montant du bitcoin traité. Les ordres stop deviennent actifs et attendent de déclencher sur la base du mouvement du dernier cours. Il existe deux types de commandes d'arrêt, stop de vente et stop d'achat. Le paramètre côté est important: side: 39sell39. Placez un ordre de vente. Qui déclenche lorsque le dernier cours du commerce change à une valeur égale ou inférieure au prix. Côté: 39buy39. Placez un ordre d'achat stop. Qui se déclenche lorsque le dernier cours du commerce change à une valeur égale ou supérieure au prix. Le dernier prix d'échange est le dernier prix auquel un ordre a été rempli. Ce prix peut être trouvé dans le dernier message de match. Notez que tous les messages de correspondance ne peuvent pas être reçus en raison de messages supprimés. Notez que lorsqu'elles sont déclenchées, les ordres stop sont exécutés sous la forme d'ordres marchands et sont donc assujettis à des retenues d'ordre boursier. Le prix doit être spécifié dans les unités de produit quoteincrement. L'incrément de cotation est la plus petite unité de prix. Pour le produit BTC-USD, l'augmentation de cotation est 0,01 ou 1 penny. Les prix inférieurs à 1 penny ne seront pas acceptés et aucun prix penny fractionnel ne sera accepté. Non requis pour les commandes sur le marché. La taille doit être supérieure à celle du baseminsize pour le produit et pas plus grande que la taille basemaxsize. La taille peut être dans n'importe quel incrément de la devise de base (BTC pour le produit BTC-USD), qui comprend les unités satoshi. Taille indique le montant de la BTC (ou devise de base) à acheter ou à vendre. Le champ de fonds est éventuellement utilisé pour les commandes de marché. Lorsqu'elle est spécifiée, elle indique la quantité de monnaie de devis de produit à acheter ou à vendre. Par exemple, un achat de marché pour BTC-USD avec des fonds spécifiés comme 150,00 va dépenser 150 USD pour acheter BTC (y compris les frais). Si le champ des fonds n'est pas spécifié pour une commande d'achat sur le marché, la taille doit être spécifiée et GDAX utilisera les fonds disponibles dans votre compte pour acheter Bitcoin. Un ordre de vente du marché peut également spécifier les fonds. Si des fonds sont spécifiés, il limitera la vente au montant des fonds spécifiés. Vous pouvez utiliser des fonds avec des ordres de vente pour limiter le montant des fonds de devis reçus. Temps en vigueur Les politiques en vigueur garantissent la durée de vie d'une commande. Il ya quatre politiques: bon jusqu'à annulé GTC. Bon jusqu'à temps GTT. Immédiatement ou annuler le CIO. Et remplir ou tuer FOK. GTC Bon jusqu'à ce que les commandes annulées restent ouvertes sur le livre jusqu'à annulation. Il s'agit du comportement par défaut si aucune stratégie n'est spécifiée. GTT Bon jusqu'à ce que les commandes de temps restent ouvertes sur le livre jusqu'à ce que annulé ou le cancelafter alloué soit épuisé sur le moteur assorti. Les ordres de GTT sont garantis d'annuler avant toute autre commande est traitée après l'horodatage de cancelafter qui est retourné par l'API. Une journée est considérée 24 heures. IOC immédiatement ou annuler des commandes annuler instantanément la taille restante de l'ordre limite au lieu de l'ouvrir sur le livre. Les ordres FOK Fill ou kill sont rejetés si la taille entière ne peut pas être égalée. Notez, match correspond aussi à auto-métiers. Le drapeau post-only indique que l'ordre devrait seulement faire la liquidité. Si une partie de la commande entraîne une liquidité, la commande sera rejetée et aucune partie de celle-ci ne sera exécutée. Pour les ordres d'achat de limite, nous tiendrons le prix x taille x (1 USD de frais) USD. Pour les commandes de vente, nous détenons le numéro de Bitcoin que vous souhaitez vendre. Les droits réels sont évalués au moment du commerce. Si vous annulez un ordre partiellement rempli ou non rempli, les fonds restants seront débloqués. Pour les ordres d'achat du marché où des fonds sont spécifiés, le montant des fonds sera mis en attente. Si seulement la taille est spécifiée, tout le solde de votre compte (dans le compte de devis) sera mis en attente pour la durée de l'ordre du marché (généralement un temps trivialement court). Pour une commande de vente, la taille en BTC sera mise en attente. Si la taille n'est pas spécifiée (et seuls les fonds sont spécifiés), votre solde BTC entier sera en attente pour la durée de l'ordre du marché. Self-trade prevention L'auto-négociation n'est pas autorisée sur GDAX. Deux ordres d'un même utilisateur ne seront pas autorisés à correspondre entre eux. Pour modifier le comportement d'auto-échange, spécifiez le drapeau stp. Pour plus de détails sur ces champs, consultez la documentation sur la prévention du commerce électronique. Cycle de vie des commandes La requête HTTP réagit lorsqu'un ordre est rejeté (fonds insuffisants, paramètres invalides, etc.) ou reçu (accepté par le moteur correspondant). Une réponse 200 indique que l'ordre a été reçu et est actif. Les commandes actives peuvent être exécutées immédiatement (en fonction du prix et des conditions du marché), en partie ou en totalité. Une exécution partielle met la taille restante de l'ordre à l'état ouvert. Un ordre qui est complètement rempli, va dans l'état fait. Les utilisateurs qui écoutent les données du marché en continu sont encouragés à utiliser le champ clientoid pour identifier leurs messages reçus dans le flux. La réponse REST avec un serveur orderid peut venir après le message reçu dans le flux de données public. Une commande réussie recevra un identifiant de commande. Un ordre réussi est défini comme celui qui a été accepté par le moteur correspondant. Les commandes ouvertes ne sont pas expirées et resteront ouvertes jusqu'à ce qu'elles soient remplies ou annulées. Annuler une commande Annuler une commande déjà passée. Si la commande n'a pas eu de correspondance au cours de sa durée de vie, son enregistrement peut être purgé. Cela signifie que les détails de commande ne seront pas disponibles avec GET ordersltorder-idgt. Demande HTTP L'identificateur de commande est l'identifiant de commande attribué par le serveur et non l'identifiant facultatif. Annuler Rejeter Si l'ordre n'a pas pu être annulé (déjà rempli ou précédemment annulé, etc.), une réponse d'erreur indiquera la raison dans le champ de message. Annuler tout Avec le meilleur effort, annulez toutes les commandes en cours. La réponse est une liste d'identifiants des ordres annulés. Demande HTTP Pour spécifier plusieurs états, utilisez l'argument de requête d'état plusieurs fois: ordersstatusdoneampstatuspending. Cette requête est paginée. Statut de commande et règlement Les ordres qui ne sont plus sur le carnet de commandes, seront marqués avec le statut fait. Il ya une petite fenêtre entre un ordre fait et réglé. Une commande est réglée lorsque tous les remplissages ont été réglés et que les détention restantes (le cas échéant) ont été supprimées. Pour les transactions à haut volume, il est fortement recommandé de conserver votre propre liste d'ordres ouverts et d'utiliser l'un des flux de données de flux continu pour le mettre à jour. Vous devriez interroger le point de fin des ordres ouverts une fois lorsque vous commencez à négocier pour obtenir l'état actuel de tous les ordres ouverts. La valeur exécutée est le prix cumulatif de la taille de la correspondance et n'est présente que pour les commandes passées après 2016-05-20. Les commandes ouvertes peuvent changer d'état entre la demande et la réponse en fonction des conditions du marché. Obtenez une commande Obtenez une commande unique par identifiant de commande. Demande HTTP Si la commande est annulée, la réponse peut avoir le code d'état 404 si l'ordre n'a pas de correspondance. Les commandes ouvertes peuvent changer d'état entre la demande et la réponse en fonction des conditions du marché. Liste Remplis Obtenez une liste de tous les remplissages récents. Http Demande Règlement et frais Les droits sont enregistrés en deux étapes. Immédiatement après que le moteur correspondant ait terminé un match, le remplissage est inséré dans notre magasin de données. Une fois le remplissage est enregistré, un processus de règlement va régler le remplissage et le crédit des deux contreparties de négociation. Le champ de frais indique les frais facturés pour ce remplissage individuel. Le champ de liquidité indique si le remplissage a été le résultat d'un fournisseur de liquidité ou d'un preneur de liquidité. M indique Maker et T indique Taker. Pagination Les remplissages sont retournés triés par tradeid descendant du plus grand tradeid au plus petit tradeid. L'en-tête CB-BEFORE aura ce premier identifiant de transaction pour que les requêtes futures utilisant le paramètre cb-before récupèrent les remplissages avec un ID de transaction plus important (nouveaux remplissages). Cette requête est paginée. Transfer Funds DepositWithdraw Vous pouvez transférer des fonds entre vos comptes Coinbase et vos comptes GDAX dans vos limites quotidiennes. Le transfert de fonds entre Coinbase et GDAX est instantané et gratuit. Voir les sections Dépôts et retraits pour le transfert de fonds. Http Demandes de retrait Méthodes de paiement Comptes à cocher Le rapport sera généré lorsque des ressources sont disponibles. L'état du rapport peut être interrogé via les rapports: reportid endpoint. Le champ fileurl sera disponible une fois le rapport créé avec succès et peut être téléchargé. Rapports expirés Les rapports ne peuvent être téléchargés que quelques jours après leur création. Une fois qu'un rapport expire, le rapport n'est plus disponible pour téléchargement et est supprimé. Obtenir l'état du rapport Réponse (création du rapport) Réponse (rapport terminé) Demande HTTP Une fois qu'une demande de rapport a été acceptée pour le traitement, l'état est disponible en interrogeant le noeud final de ressource de rapport. Le rapport final sera téléchargé et disponible à l'adresse fileurl une fois que le statut indique une demande HTTP de compte d'utilisateur prête Cette demande vous retournera le volume de suivi de 30 jours pour tous les produits. Il s'agit d'une valeur en cache thatrsquos calculé tous les jours à minuit UTC. Données de marché L'API de données de marché est un ensemble non authentifié de points de terminaison permettant de récupérer des données de marché. Ces points d'extrémité fournissent des instantanés de données de marché. Pour les mises à jour des données de marché en temps réel, consultez la documentation de Websocket Feed pour connecter et recréer une copie parfaite en temps réel du carnet de commandes et des opérations. Obtenez des produits Obtenez une liste de paires de devises disponibles pour la négociation. Demande HTTP Les champs baseminsize et basemaxsize définissent la taille de commande min et max. Le champ quoteincrement spécifie le prix de commande minimum ainsi que l'augmentation de prix. Le prix de commande doit être un multiple de cet incrément (c'est-à-dire si l'incrément est de 0,01, des prix de 0,001 ou 0,021 seraient rejetés). L'ID du produit ne change pas une fois attribué à un produit, mais les tailles de la taille minimale peuvent être mises à jour à l'avenir. Get Product Order Book Exemple de réponse pour les produitsBTC-USDbook Seule la meilleure enchère et demande est retournée. Exemple de réponse pour les produitsBTC-USDbooklevel2 Exemple de réponse pour les produitsBTC-USDbooklevel3 Obtenez une liste des commandes ouvertes pour un produit. La quantité de détails affichée peut être personnalisée avec le paramètre de niveau. Demande HTTP Par défaut, seule l'enchère interne (c'est-à-dire la meilleure) et la requête sont retournées. Cela équivaut à une profondeur de livre de 1 niveau. Si vous souhaitez voir un carnet de commandes plus grand, spécifiez le paramètre de requête de niveau. Si un niveau n'est pas agrégé, tous les ordres à chaque prix seront retournés. Les niveaux agrégés renvoient une seule taille pour chaque prix actif (comme s'il n'y avait qu'une seule commande pour cette taille au niveau). Paramètres Les niveaux 1 et 2 sont regroupés et renvoient le nombre d'ordres à chaque niveau. Le niveau 3 est non agrégé et renvoie l'intégralité du carnet de commandes. Cette demande n'est PAS paginée. L'ensemble du livre est retourné en une seule réponse. Les niveaux 1 et 2 sont recommandés pour le scrutin. Pour obtenir les données les plus à jour, pensez à utiliser le flux WebSocket. Le niveau 3 n'est recommandé que pour les utilisateurs qui souhaitent conserver un carnet de commandes en temps réel complet à l'aide du flux WebSocket. Toute utilisation abusive du niveau 3 par sondage entraînera un accès limité ou bloqué à votre accès. Obtenez des informations sur le produit Ticker Snapshot sur le dernier trade (tick), le meilleur bidask et le volume 24h. Demande HTTP Mises à jour en temps réel Il est déconseillé de faire des sondages pour se connecter via le flux WebSocket et écouter les messages de correspondance. Get Trades Liste des métiers les plus récents pour un produit. Http request Cette demande est paginée. Le côté commercial indique le côté commande fabricant. L'ordre du fabricant est l'ordre qui était ouvert sur le carnet de commandes. Buy side indique un down-tick parce que le fabricant était un ordre d'achat et leur commande a été supprimée. À l'inverse, le côté vente indique une hausse. Obtenez des taux historiques Tarifs historiques pour un produit. Les taux sont retournés dans des seaux groupés basés sur la granularité demandée. Les données historiques peuvent être incomplètes. Aucune donnée n'est publiée pour les intervalles où il n'y a pas de ticks. Les taux historiques ne doivent pas être consultés fréquemment. Si vous avez besoin d'informations en temps réel, utilisez les points d'extrémité de commerce et de livre ainsi que le flux Websocket. Paramètres de requête http Le nombre maximum de points de données pour une seule requête est de 200 bougies. Si votre sélection de temps de démarrage et de granularité entraîne plus de 200 points de données, votre demande sera rejetée. Si vous souhaitez récupérer des données de granularité fine sur une plage de temps plus longue, vous devrez faire plusieurs demandes avec de nouvelles plages de démarrage. Réponse des articles Chaque seau est un tableau des informations suivantes: l'heure du début du seau bas prix le plus bas au cours de l'intervalle du seau prix le plus élevé pendant l'intervalle du seau prix d'ouverture ouvert (premier échange) Volume de volume d'intervalle de seau de l'activité de négociation pendant l'intervalle de seau Obtenez des statistiques de 24 heures Obtenez des statistiques de 24 heures pour le produit. Le volume est exprimé en unités monétaires de base. Ouvert. haute. Faible sont dans les unités de devis. Demande HTTP Devises Obtenir des devises Websocket Feed Le flux websocket fournit des mises à jour des données du marché en temps réel pour les commandes et les métiers. Les mises à jour des données du marché en temps réel fournissent le meilleur aperçu du flux d'ordres et des métiers. Toutefois, cela signifie que vous êtes responsable de la lecture du flux de messages et de l'utilisation du message correspondant à vos besoins, notamment la construction de carnets de commandes en temps réel ou le suivi des métiers en temps réel. Numéros de séquence Chaque message d'alimentation contient un numéro de séquence. Les nombres de séquences sont des valeurs entières croissantes avec chaque nouveau message étant exactement 1 numéro de séquence que celui précédant. Si vous voyez un numéro de séquence qui est plus d'une valeur de la précédente, cela signifie qu'un message a été supprimé. Un numéro de séquence inférieur à un que vous avez vu peut être ignoré ou est arrivé hors de l'ordre. Dans les deux situations, vous devrez peut-être effectuer une logique pour vous assurer que votre système est dans l'état correct. Alors qu'une connexion websocket est sur TCP, les serveurs websocket reçoivent des données de marché d'une manière qui peut entraîner des messages abandonnés. Votre consommateur d'alimentation doit être conçu pour s'attendre et gérer les lacunes de séquence et hors des messages d'ordre. Pour commencer à recevoir des messages d'alimentation, vous devez d'abord envoyer un message d'abonnement au serveur indiquant les messages d'alimentation de produits à recevoir. C'est le seul message que vous devrez envoyer. Ce message doit être codé JSON. Tout autre message, ou un message mal formé, entraînera la fin de votre connexion. Pour recevoir des messages de pulsations une fois par seconde, vous devez d'abord envoyer un message activant la pulsation. Vous pouvez désactiver les messages de pulsation en envoyant un message sur lequel false est activée. Livret de commandes en temps réel Le flux de websocket fournit des mises à jour en temps réel sur les commandes et métiers. Ces mises à jour peuvent être appliquées à un instantané de livre de commande de niveau 2 ou 3 pour conserver une copie exacte et à jour du carnet de commandes d'échange. Un algorithme pour maintenir un carnet de commandes à jour est décrit ci-dessous: Envoyer un message d'abonnement pour le produit d'intérêt. Mettre en file d'attente tous les messages reçus sur le flux WebSocket. Effectuer une requête REST pour l'instantané du carnet d'ordres à partir du flux REST. Lecture des messages en file d'attente, suppression des numéros de séquence avant ou égal au numéro de séquence de l'instantané. Appliquez les messages de lecture à l'instantané au besoin (voir ci-dessous). Une fois la lecture terminée, appliquez des messages de flux en temps réel à leur arrivée. Tous les messages ouverts et correspondants entraîneront toujours une modification du carnet de commandes. Tous les messages effectués ou modifiés ne modifient pas le carnet de commandes. Ces messages seront envoyés pour les commandes reçues qui ne sont pas encore sur le carnet de commandes. Ne modifiez pas le carnet de commandes pour de tels messages, sinon votre carnet de commandes sera incorrect. Les messages suivants sont envoyés via le flux WebSocket au format JSON. Un ordre valide a été reçu et est maintenant actif. Ce message est émis pour chaque commande valide dès que le moteur correspondant le reçoit, qu'il soit rempli immédiatement ou non. Le message reçu n'indique pas d'ordre de repos dans le carnet de commandes. Il indique simplement un nouvel ordre entrant qui a été accepté par le moteur assorti pour le traitement. Les ordres reçus peuvent faire suivre le message de correspondance s'ils peuvent commencer à être remplis (comportement du preneur). La prévention de l'auto-échange peut aussi déclencher des messages de changement si la taille de l'ordre doit être ajustée. Les ordres qui ne sont pas pleinement remplis ou annulés en raison de la prévention de l'autocontrôle aboutissent à un message ouvert et deviennent des ordres de repos dans le carnet de commandes. Les commandes de marché (indiquées par le champ de type de commande) peuvent comporter un champ de fonds facultatif indiquant la quantité de devis utilisé pour acheter ou vendre. Par exemple, un champ de fonds de 100,00 pour le produit BTC-USD indiquerait un achat d'une valeur jusqu'à 100,00 USD de bitcoin. L'ordre est maintenant ouvert sur le carnet de commandes. Ce message ne sera envoyé que pour les commandes qui ne sont pas entièrement remplies immédiatement. Restingsize indiquera combien de l'ordre est inoccupé et aller sur le livre. There will be no open message for orders which will be filled immediately. There will be no open message for market orders since they are filled immediately. The order is no longer on the order book. Sent for all orders for which there was a received message. This message can result from an order being canceled or filled. There will be no more messages for this orderid after a done message. remainingsize indicates how much of the order went unfilled this will be 0 for filled orders. market orders will not have a remainingsize or price field as they are never on the open order book at a given price. A done message will be sent for received orders which are fully filled or canceled due to self-trade prevention. There will be no open message for such orders. done messages for orders which are not on the book should be ignored when maintaining a real-time order book. A trade occurred between two orders. The aggressor or taker order is the one executing immediately after being received and the maker order is a resting order on the book. The side field indicates the maker order side. If the side is sell this indicates the maker was a sell order and the match is considered an up-tick. A buy side match is a down-tick. An order has changed. This is the result of self-trade prevention adjusting the order size or available funds. Orders can only decrease in size or funds. change messages are sent anytime an order changes in size this includes resting orders (open) as well as received but not yet open. change messages are also sent when a new market order goes through self trade prevention and the funds for the market order have changed. change messages for received but not yet open orders can be ignored when building a real-time order book. The side field of a change message and price can be used as indicators for whether the change message is relevant if building from a level 2 book. Any change message where the price is null indicates that the change message is for a market order. Change messages for limit orders will always have a price specified. A message sent once a second when heartbeat is turned on. If you send a message that is not recognized or an error occurs, the error message will be sent and you will be disconnected. FIX (Financial Information eXchange ) is a standard protocol which can be used to enter orders, submit cancel requests, and receive fills. Users of this FIX API will typically have existing software using FIX for order management. Users who are not familiar with FIX should first consider using the REST API . Resend requests are not supported. Every connection establishes a new session and a new set of session sequence numbers. Connectivity Before logging on to a FIX session, clients must establish a secure connection to the FIX gateway (fix. gdax:4198). If your FIX implementation does not support establishing a TCP SSL connection natively, you will need to setup a local proxy like stunnel to establish a secure connection to the FIX gateway. See the ssl-tunnels section for more details and examples. The baseline specification for this API is FIX 4.2. There are additional tags from later versions of FIX, and custom tags in the high number range as allowed by the standard. A standard header must be present at the start of every message in each direction. If set to Y. cancel all open orders for the current profile on disconnect. The Logon message sent by the client must be signed for security. The signing method is described in Signing a Message. The prehash string is the following fields joined by the FIX field separator (ASCII code 1): SendingTime, MsgType, MsgSeqNum, SenderCompID, TargetCompID, Password . There is no trailing separator. The RawData field should be a base64 encoding of the HMAC signature. A single API key must not be used in multiple connections at the same time. To establish multiple FIX connections, please generate a new API key for each one. Sent by either side to initiate session termination. The side which receives this message first should reply with the same message type to confirm session termination. Closing a connection without logging out of the session first is an error. New Order Single Sent by the client to enter an order. The post-only flag ( P ) indicates that the order should only make liquidity. If any part of the order results in taking liquidity, the order will be rejected and no part of it will execute. Open Post-Only orders will be treated as Good Till Cancel. For more details about TimeInForce values see the docs here . If a trading error occurs (e. g. user has insufficient funds), an ExecutionReport with ExecType8 is sent back, signifying that the order was rejected. Order Cancel Request Sent by the client to cancel an order. UUID selected by client for the order OrderId from the ExecutionReport with OrdStatusNew (390) ClOrdId of the order to cancel (originally assigned by the client) Symbol of the order to cancel (must match Symbol of the Order) Client Order Id Use of the ClOrdId is not available after reconnecting or starting a new session. You should use the OrderId obtained via the ExecutionReport once available. Order Status Request Sent by the client to obtain information about pending orders. OrderID of order(s) to be sent back. Can be equal to (wildcard) to send back all pending orders. The response to an Order Status Request is a series of ExecutionReports with ExecTypeI. each representing one open order belonging to the user. If the user has no open orders, a single ExecutionReport is sent back with OrderId0 . Execution Report Sent by the server when an order is accepted, rejected, filled, or canceled. Also sent when the user sends an OrderStatusRequest . Only present on order acknowledgements, ExecTypeNew (1500) OrderId from the ExecutionReport with ExecTypeNew (390) Symbol of the original order Must be 1 to buy or 2 to sell Amount filled (if ExecType1). Also called LastQty as of FIX 4.3. Price of the fill if ExecType indicates a fill, otherwise the order price OrderQty as accepted (may be less than requested upon self-trade prevention) Time the event occurred May be 1 (Partial fill) for fills, D for self-trade prevention, etc. Execution Type Order Cancel Reject Sent by the server when an Order Cancel Request cannot be satisfied, e. g. because the order is already canceled or completely filled. Cancel requests for invalid or unknown order IDs may result in Reject messages instead. As on the cancel request As on the cancel request As on the cancel request 4 if too late to cancel 1 (Order Cancel Request) Sent by either side upon receipt of a message which cannot be processed, e. g. due to missing fields or an unsupported message type. MsgSeqNum of the rejected incoming message Tag number of the field which caused the reject (optional) MsgType of the rejected incoming message Human-readable description of the error (optional) Code to identify reason for reject SessionRejectReason can take on the following values: Invalid tag number Required tag missing Tag not defined for this message type Tag specified without a value Value is incorrect (out of range) for this tag Incorrect data format for value SendingTime (52) accuracy problem Invalid MsgType (35) XML Validation error Tag appears more than once Tag specified out of required order Repeating group fields out of order Incorrect NumInGroup count for repeating group Non ldquodatardquo value includes field delimiter (SOH character) Sent by both sides if no messages have been sent for HeartBtInt seconds as agreed during logon. May also be sent in response to a Test Request. SSL Tunnels fix. gdax:4198 only accepts TCP connections secured by SSL. If your FIX client library cannot establish an SSL connection natively, you will need to run a local proxy that will establish a secure connection and allow unencrypted local connections. stunnel Configuration This is an example configuration file for stunnel to listen on a port locally and proxy unencrypted TCP connections to the encrypted SSL connection. The service name ( Coinbase ) and the accept port ( 4197 ) may be changed to any suitable values. When stunnel is started with the above configuration file, it will run in the background. On Unix-like systems the option foreground yes may be specified at the top of the file to avoid running in the background. For testing it may be easier to use foreground mode, or to specify the top-level output option as a file path where stunnel will write log messages. The stunnel configuration must include either verify3 or verify4 to enable client certificate pinning. The exchange certificate is available via gdax and must be installed in a secure (not openly writable) directory on the client system which is specified in the stunnel configuration file as CAfile. If your system has OpenSSL installed, you can run this command to download the certificate: openssl sclient - showcerts - connect fix. gdax:4198 lt devnull openssl x509 - outform PEM gt fix. gdax. pemUnderworld: Blood Wars An embarrassingly murky mess that takes something that couldve been made into agreeably cheeseball fun and sucks all the fun out of it. The Ardennes The movie, directed by Robin Pront from a script by Pront and Joroen Perceval (whos also one of the movies lead actors), is well-crafted uphellip Other Reviews Bright Lights: Starring Carrie Fisher and Debbie Reynolds Coin Heist Howards End Roger Ebert on James Ivorys Howards End. Ballad of Narayama The Ballad of Narayama is a Japanese film of great beauty and elegant artifice, telling a story of startling cruelty. What a space it openshellip Other Reviews Monsieur Hire Veronika Voss Spirit of the Beehive 2017 Golden Globes: Meryl Streep vs. Trumpland Meryl Streep and other awards recipients shared their thoughts on an America under Donald Trump during last nights Golden Globes ceremony. 2017 Golden Globes: A La La Land Landslide La La Land made Golden Globes history last night with seven awards, including Best Picture (ComedyMusical). Other Articles Preview of the 2017 Golden Globes Festivals amp Awards William (Bill) Marshall (1939-2017), Rest In Movie Heaven Festivals amp Awards Alliance of Women Film Journalists Announce 2016 EDA Winners Festivals amp Awards Molly Haskell on feminism, censorship, screwball comedy, and life after Andrew Sarris Molly Haskell speaks with Matt Zoller Seitz about From Reverence to Rape, Love and Other Infectious Diseases, Steven Spielberg: A Life in Films and more. The Unloved, Part 37: Zabriskie Point The Mystery of Oberwald For the 37th installment in his video essay series about maligned masterworks, Scout Tafoya examines Michelangelo Antonionis Zabriskie Point and The Mystery of Oberwald. Other Articles 30 MInutes on: quotAlliedquot MZS Movies on my Birthday: A Partial List MZS Ebert Fellows Announced for Sundance 2017 Chazs Journal Insightful Presentation: On Frederick Wisemans National Gallery FFC Seongyong Cho explores Frederick Wisemans 2014 documentary, National Gallery. Comic-Con HQ Brings Con Experience to New Streaming Service The forces behind San Diego Comic-Con have launched a new con-centric channel, featuring Kings of Con, Con Man and Mark Hamills Pop Culture Quest. Other Articles Start a Conversation: On quotDoctor Strangequot and The Ancient One Far Flungers Racism, Religion and Remembering Pearl Harbor Far Flungers quotMagicians: Life in the Impossiblequot at Hollywoods Magic Castle Far Flungers Netflixs A Series of Unfortunate Events an Unfunny Parody of Sadness A review of Netflixs new series, Lemony Snickets A Series of Unfortunate Events, which premieres January 13. Bright WallDark Room: January 2017: Sticks Stones by Andrew Root An excerpt from the January 2017 issue of online magazine Bright WallDark Room about Denis Villeneuves Arrival. Other Articles Tom Hardy Anchors FXs Engaging Taboo Demanders The Return of Peter Cushing: Another Look at an Underrated Career Balder and Dash Thumbnails 1617 Thumbnails Wall Street How much is enough The kid keeps asking the millionaire raider and trader. How much money do you want How much would you be satisfied with The trader seems to be thinking hard, but the answer is, he just doesnt know. Hes not even sure how to think about the question. He spends all day trying to make as much money as he possibly can, and he cheerfully bends and breaks the law to make even more millions, but somehow the concept of enough eludes him. Like all gamblers, he is perhaps not even really interested in money, but in the action. Money is just the way to keep score. The millionaire is a predator, a corporate raider, a Wall Street shark. His name is Gordon Gekko, the name no doubt inspired by the lizard that feeds on insects and sheds its tail when trapped. Played by Michael Douglas in Oliver Stones Wall Street, he paces relentlessly behind the desk in his skyscraper office, lighting cigarettes, stabbing them out, checking stock prices on a bank of computers, barking buy and sell orders into a speaker phone. In his personal life he has everything he could possibly want - wife, family, estate, pool, limousine, priceless art objects - and they are all just additional entries on the scoreboard. He likes to win. The kid is a broker for a second-tier Wall Street firm. He works the phones, soliciting new clients, offering second-hand advice, buying and selling and dreaming. Just once Id like to be on that side, he says, fiercely looking at the telephone a client has just used to stick him with a 7,000 loss. Gekko is his hero. He wants to sell him stock, get into his circle, be like he is. Every day for 39 days, he calls Gekkos office for an appointment. On the 40th day, Gekkos birthday, he appears with a box of Havana cigars from Davidoffs in London, and Gekko grants him an audience. Maybe Gekko sees something he recognizes. The kid, named Bud Fox (Charlie Sheen ), comes from a working-class family. His father (Martin Sheen ) is an aircraft mechanic and union leader. Gekko went to a cheap university himself. Desperate to impress Gekko, young Fox passes along some inside information he got from his father. Gekko makes some money on the deal and opens an account with Fox. He also asks him to obtain more insider information, and to spy on a competitor. Fox protests that he is being asked to do something illegal. Perhaps protests is too strong a word he observes. Gekko knows his man. Fox is so hungry to make a killing, he will do anything. Gekko promises him perks - big perks - and they arrive on schedule. One of them is a tall, blond interior designer (Daryl Hannah ), who decorates Foxs expensive new high-rise apartment. The movies stylistic approach is rigorous: We are never allowed to luxuriate in the splendor of these new surroundings. The apartment is never quite seen, never relaxed in. When the girl comes to share Foxs bed, they are seen momentarily, in silhouette. Sex and possessions are secondary to trading, to the action. Ask any gambler. Stones Wall Street is a radical critique of the capitalist trading mentality, and it obviously comes at a time when the financial community is especially vulnerable. The movie argues that most small investors are dupes, and that the big market killings are made by men such as Gekko, who swoop in and snap whole companies out from under the noses of their stockholders. What the Gekkos do is immoral and illegal, but they use a little litany to excuse themselves: Nobody gets hurt. Everybodys doing it. Theres something in this deal for everybody. Who knows except us The movie has a traditional plot structure: The hungry kid is impressed by the successful older man, seduced by him, betrayed by him, and then tries to turn the tables. The actual details of the plot are not so important as the changes we see in the characters. Few men in recent movies have been colder and more ruthless than Gekko, or more convincing. Fox is, by comparison, a babe in the woods. I would have preferred a young actor who seemed more rapacious, such as James Spader. who has a supporting role in the movie. If the film has a flaw, it is that Sheen never seems quite relentless enough to move in Gekkos circle. Stones most impressive achievement in this film is to allow all the financial wheeling and dealing to seem complicated and convincing, and yet always have it make sense. The movie can be followed by anybody, because the details of stock manipulation are all filtered through transparent layers of greed. Most of the time we know whats going on. All of the time, we know why. Although Gekkos law-breaking would of course be opposed by most people on Wall Street, his larger value system would be applauded. The trick is to make his kind of money without breaking the law. Financiers who can do that, such as Donald Trump, are mentioned as possible presidential candidates, and in his autobiography Trump states, quite simply, that money no longer interests him very much. He is more motivated by the challenge of a deal and by the desire to win. His frankness is refreshing, but the key to reading that statement is to see that it considers only money, on the one hand, and winning, on the other. No mention is made about creating goods and services, to manufacturing things, to investing in a physical plant, to contributing to the infrastructure. Whats intriguing about Wall Street - what may cause the most discussion in the weeks to come - is that the movies real target isnt Wall Street criminals who break the law. Stones target is the value system that places profits and wealth and the Deal above any other consideration. His film is an attack on an atmosphere of financial competitiveness so ferocious that ethics are simply irrelevant, and the laws are sort of like the referee in pro wrestling - part of the show.


No comments:

Post a Comment