Note sur l'API de l'échange BitMEX

Auteur:Le petit rêve, Créé: 2017-05-08 18:39:32, Mis à jour: 2023-07-27 20:40:27

BitMEX API d'échange (note)

La plateforme FMZ API Doc Joignez-vous à nous sur le groupe Telegram

www.fmz.com(anciennement BotVs) est une plateforme de trading de stratégie quantitative où vous pouvez facilement apprendre, écrire, partager et échanger des stratégies quantitatives.

  • Notre plateforme présente de nombreux avantages:

    • 1, multi-plateforme, supporte tous les principaux échanges commerciaux, la stratégie écrite sur notre plateforme est adaptée à tous les principaux échanges.
    • 2、Facile à démarrer, la documentation spécifique de l'API et les stratégies de modèles classiques aident les utilisateurs à démarrer très rapidement.
    • Elle dispose d'un système efficace de simulation des tests antérieurs.
    • 4、Prise en charge de l'envoi d'e-mails, des messages push sur votre téléphone.
    • 5, mécanisme de contrôle basé sur le Web, accessible par téléphone.
    • 6、Soutien à la programmation complète Python\C++\JavaScript
    • 7、Soutenir le trading de spot et de futures, et soutenir plus d'échanges à l'avenir.
    • 8、Le coût est extrêmement bas. 0,125 RMB par heure, basé sur le taux de change actuel: USDCNY 6,9303, ce qui signifie 0,01804 dollar par heure.
    • Aucune clé API ou mot de passe n'est enregistrée sur notre site. FMZ fonctionne depuis plus de quatre ans sans aucun problème de sécurité.

FMZ (BOTVS) prend désormais en charge tous les contrats sur BitMEX!

  • Les échanges sur testnet:

function main() {
    exchange.IO("base", "https://testnet.bitmex.com")
}
  • Le code de test:

var initAccount = null;
var nowAccount = null;
function main() {
    LogReset(1);
    Log("This is BitMEX test bot");
    Log("Fee:", exchange.GetFee());
    Log("Initial account:", initAccount = _C(exchange.GetAccount));    
    var info = exchange.SetContractType("XBTUSD");   // BitMEX : XBTUSD , OK : this_week
    Log("XBTUSD info:", info);   
    Log("Use GetTicker to get ticker information:", _C(exchange.GetTicker)) 
    Sleep(1000 * 10);   
    // make an order
    exchange.SetDirection("sell");                         // set order direction
    var orderId = exchange.Sell(-1, 1);                    // sell at market price。
    Sleep(6000);
    // log positions
    var positions = null;
    Log(positions = _C(exchange.GetPosition));
    Log("Account before changing leverage:", _C(exchange.GetAccount));
    // change leverage
    Log("Change leverage", _C(exchange.SetMarginLevel, positions[0].MarginLevel * 2));
    Log("Account after changing leverage:", _C(exchange.GetAccount));  
    // test GetOrder 
    if (orderId) {
        Log(_C(exchange.GetOrder, orderId));
    } 
    Sleep(1000 * 10);
    Log(_C(exchange.GetPosition));
    // set direction to close
    exchange.SetDirection("closesell");
    var go_buy = exchange.Go("Buy", -1, 1);
    var orderId2 = go_buy.wait();
    Log(_C(exchange.GetOrder, orderId2));
    Log("Current account:", nowAccount = _C(exchange.GetAccount));
    Log(_C(exchange.GetPosition));
    LogProfit(nowAccount.Stocks - initAccount.Stocks, " initAccount:", initAccount, " nowAccount:", nowAccount);
    Sleep(1000 * 10);
    var ticker = _C(exchange.GetTicker);
    exchange.SetDirection("buy");
    exchange.Buy(ticker.Last - 50, 1);
    exchange.SetDirection("sell");
    exchange.Sell(ticker.Last + 50, 1);
    // GetOrders
    Log("Test GetOrders:", _C(exchange.GetOrders));
    var e = exchange;
    while (true) {
        var orders = _C(e.GetOrders);
        if (orders.length === 0) {
            break;
        }
        Sleep(500);
        for (var j = 0; j < orders.length; j++) {
           e.CancelOrder(orders[j].Id);
            if (j < (orders.length - 1)) {
                Sleep(500);
            }
        }
    }
    Log("Cancel order, test GetOrders again:", _C(exchange.GetOrders));
}
  • Vérifiez les informations de votre compte sur BitMEX.

    img

    Enregistrez les informations par bot, qui est le même que celui sur BitMEX.

    img

  • Log positions after changing leverage, the leverage has been changed (Log positions après avoir changé de levier, le levier a été changé).

    img

  • Utilisez la fonction Go pour couvrir vos positions en même temps.

      exchange.SetDirection("closesell");
      var go_buy = exchange.Go("Buy", -1, 1);
      var orderId2 = go_buy.wait();
      Log(_C(exchange.GetOrder, orderId2));
      Log("当前账户:", nowAccount = _C(exchange.GetAccount));
      Log(_C(exchange.GetPosition));
      LogProfit(nowAccount.Stocks - initAccount.Stocks, " initAccount:", initAccount, " nowAccount:", nowAccount);
    

    img

  • Nous allons essayer de poster des commandes et de les annuler.

    var ticker = _C(exchange.GetTicker);
    exchange.SetDirection("buy");
    exchange.Buy(ticker.Last - 50, 1);
    exchange.SetDirection("sell");
    exchange.Sell(ticker.Last + 50, 1);  
    // GetOrders
    Log("Test GetOrders:", _C(exchange.GetOrders));
    var e = exchange;
    while (true) {
        var orders = _C(e.GetOrders);
        if (orders.length === 0) {
            break;
        }
        Sleep(500);
        for (var j = 0; j < orders.length; j++) {
            e.CancelOrder(orders[j].Id);
            if (j < (orders.length - 1)) {
                Sleep(500);
            }
        }
    }
    Log("orders have been canceled. Now check orders again, order array is empty. GetOrders:", _C(exchange.GetOrders));
    

    img

    Les commandes en attente sont supprimées.

 [{"Id":4,"Amount":1,"Price":1679.6,"DealAmount":0,"AvgPrice":0,"Status":0,"Type":1,"ContractType":"XBTUSD"},
 {"Id":3,"Amount":1,"Price":1579.6,"DealAmount":0,"AvgPrice":0,"Status":0,"Type":0,"ContractType":"XBTUSD"}]
  • Note (attention):

    • BitMEX supporte uniquement des périodes de ligne K de 1m, 5m, 1h, 1d.

      L'utilisation des derniers hôtes permet de synthétiser automatiquement les lignes K, et certaines données de cycle de ligne K non prises en charge par BITMEX peuvent également être synthétisées, de sorte que les cycles de ligne K ne sont plus limités lors de la configuration.1分钟、5分钟、1小时、1天Ces cycles, tous les cycles peuvent être réglés.

      img

    • 2, Test holding long and short positions at the same time. (Testez en tenant plusieurs positions en tête, positions en tête vide en même temps)

      LogReset(1);
      var info = exchange.SetContractType("XBTUSD");
      exchange.SetDirection("sell");
      var orderId = exchange.Sell(-1, 1);
      Log(_C(exchange.GetPosition));
      Sleep(1000*6);
      exchange.SetDirection("buy");
      var orderId2 = exchange.Buy(-1, 1);
      Log(_C(exchange.GetPosition));
      exchange.SetDirection("closesell");
      var orderId3 = exchange.Buy(-1, 1);
      Log(_C(exchange.GetPosition));
      

      img

    • Le levier peut être modifié en tenant la position.

    • 4■Soutienexchange.IOfonction pour plus d'API.

      img

      // exchange.IO example
      exchange.SetContractType("XBTUSD");
      Log(exchange.IO("api", "POST", "position/leverage", "symbol=XBTUSD&leverage=4"));
      Log(exchange.IO("api", "GET", "user"));
      

      L'information brute de l'API de position/leverage est la suivante:

      {"homeNotional":0,
      "sessionMargin":0,
      "bankruptPrice":null,
      "initMarginReq":0.25,
      "execBuyQty":2,
      "execComm":184,
      "unrealisedCost":0,
      "commission":0.00075,
      "leverage":4,
      "posLoss":0,
      "posMargin":0,
      "posMaint":0,
      "liquidationPrice":null,
      "maintMarginReq":0.005,
      "grossExecCost":0,
      "execCost":7,
      "currentTimestamp":"2017-05-08T10:51:20.576Z",
      "markValue":0,
      "unrealisedGrossPnl":0,
      "taxBase":7720,
      "unrealisedPnlPcnt":0,
      "prevUnrealisedPnl":0,
      "openOrderSellCost":0,
      "deleveragePercentile":null,
      "openingComm":31588,
      "openOrderBuyCost":0,
      "posCross":0,
      "taxableMargin":0,
      "simpleCost":0,
      "underlying":"XBT",
      "quoteCurrency":"USD",
      "execBuyCost":122613,
      "execSellCost":122620,
      "execQty":0,
      "realisedCost":-7720,
      "unrealisedPnl":0,
      "openingQty":0,
      "openOrderBuyQty":0,
      "initMargin":0,
      "unrealisedTax":0,
      "simpleQty":0,
      "avgCostPrice":null,
      "rebalancedPnl":24052,
      "openingTimestamp":"2017-05-08T10:00:00.000Z",
      "unrealisedRoePcnt":0,
      "posCost":0,
      "posInit":0,
      "posComm":0,
      "realisedTax":0,
      "indicativeTax":0,
      "breakEvenPrice":null,
      "isOpen":false,
      "riskValue":0,
      "posState":"",
      "varMargin":0,
      "realisedGrossPnl":7720,
      "timestamp":"2017-05-08T10:51:20.576Z",
      "account":25992,
      "foreignNotional":0,
      "openOrderSellPremium":0,
      "simpleValue":0,
      "lastValue":0,
      "riskLimit":20000000000,
      "openOrderSellQty":0,
      "grossOpenPremium":0,
      "marginCallPrice":null,
      "prevClosePrice":1562.74,
      "openOrderBuyPremium":0,
      "currentQty":0,
      "currentCost":-7720,
      "currentComm":31772,
      "markPrice":null,
      "posCost2":0,
      "realisedPnl":-24052,
      "prevRealisedPnl":-95,
      "execSellQty":2,
      "shortBankrupt":0,
      "simplePnl":0,
      "simplePnlPcnt":0,
      "lastPrice":null,
      "posAllowance":0,
      "targetExcessMargin":0,
      "indicativeTaxRate":0,
      "grossOpenCost":0,
      "maintMargin":0,
      "crossMargin":false,
      "openingCost":-7727,
      "longBankrupt":0,
      "avgEntryPrice":null,
      "symbol":"XBTUSD",
      "currency":"XBt"}
      

Relationnée

Plus de

Q25459768Merci beaucoup.

C' est quoi?S'il vous plaît ouvrez le VPN avec un hôte local, utilisez shadowsocks, global, bitmex. Les pages Web peuvent être consultées, mais le programme ne fonctionne pas.

Les petites fleurs ont fleuri.S'il vous plaît demander si botvs prend en charge la commande à prix limité de bitmex, ce qui revient à cliquer sur la barre de commande passive lorsque vous commandez dans bitmex.

- Je ne sais pas.Avec getrecords, bitmex ne renvoie que 100 données, mais bitmex prend en charge 500 au maximum, comment en obtenir plus? merci

l'âmeLes données obtenues par GetAccount ne sont pas correctes {"Stocks": 0.00841059, "FrozenStocks": 0.0092248, "Balance": 0, "FrozenBalance": 0} FrozenStocks est un zéro de moins, c'est en fait 0.092248.

- Je vous en prie.Comment résoudre ce problème? Comment résoudre ce problème? Comment résoudre ce problème? J'aimerais obtenir l'url de bitmex: https://www.bitmex.com/api/v1/orderBook/L2? symbol=XBT&depth=1, en utilisant le code suivant selon le document. Définition principale: L'échange est effectué en utilisant le code source de l'appareil. Log ((depth)) Les journaux ont été supprimés: Futures_BitMEX erreur Futures_OP 4: 401: {"erreur":{"message":"Signature not valid.","name":"HTTPError"}} Mon aksk n'a pas de problème, car d'autres API peuvent être appelées par, aidez-moi à voir ce qui cause cela?

Victor997Bonjour, je ne peux pas ajouter Droker, il est écrit un mot de passe incorrect. J'ai besoin d'aide avec toutes les étapes si c'est possible, je pourrais juste ajouter la plateforme. Merci, Victor 997.

Huit personnes en train d'essayer de faire du pétroleQuand BitMEX pourra-t-il prendre en charge le mode websocekt, la limite de fréquence de 300 transactions en 5 minutes est trop élevée maintenant

écorcePourquoi je ne vois pas Bitmex dans les plates-formes ajoutées, y compris Kraken dans la capture d'écran?

YtrezqBonjour, je suis nouveau sur botvs, comment puis-je utiliser ça pour Bitmex?

Je ne sais pas.S'il vous plaît demander si votre plateforme a un système de retouche pour BitMex.

JeLa dernière valeur des données de la ligne K retournées par BitMEX GetRecords n'est pas en temps réel, ce qui empêche de calculer les indicateurs en temps réel. Le problème est depuis longtemps un défaut de l'API BitMEX elle-même et n'a pas été résolu. BotVS collecte des données BitMEX en temps réel et peut-il compléter ces données en temps réel avec les données collectées?

JeComment les données de la ligne K de BitMEX sont-elles obtenues?

Le fils de NingJe ne sais pas ce que c'est, mais j'ai trouvé un problème, après que bitMEX ait mis le taux de change en yuan, il n'a pas pu être traité ~ je ne sais pas quel problème, s'il vous plaît, demandez à Dream

JeC'est une grosse vache, mais elle peut être manipulée à l'aide d'un levier.

Le petit rêveshadowsocks n'est pas un véritable proxy global, et n'a pas l'accès au réseau de tous les proxys de l'ordinateur. Pour le moment, le plus simple est d'utiliser un serveur dans une autre région pour exécuter un hôte.

- Je ne sais pas.Pourriez-vous m'en donner un exemple, s'il vous plaît?

Le petit rêveVous pouvez accéder directement à l'interface de l'échange, spécifier des paramètres, obtenir des données en utilisant HttpQuery.

Le petit rêveVous pouvez me joindre à mon QQ: 359706687 et je vous aiderai à vérifier.

Le petit rêveOui, vous appelez l'interface d'accès à la profondeur, qui devrait être cryptée sans signature. Pour les interfaces de requêtes cryptées, utilisez l'appel exchange.IO, pour les interfaces non cryptées, utilisez HttpQuery (python utilise la bibliothèque urlib), HttpQuery traite les requêtes d'interfaces non cryptées.

Le petit rêveMerci pour votre soutien! Pourrais-je obtenir une réponse sur les types de votre système que vous voulez exécuter un dock. BotVS pris en charge: - windows 64 bits, 32 bits (interface utilisateur) - Mac OSX (ligne cmd) - Linux 64 bits, 32 bits (ligne cmd) - ARM linux (ligne cmd) Après cela, je vais faire un processus qui pas à pas ajouter un dock. J'attends ton message!

Le petit rêveLe protocole WS de BITMEX n'est pas encore pris en charge.

écorceJe suis désolée.

Le petit rêveLa plate-forme du disque n'a pas de données de retouche pour le moment, la prise en charge est prévue. Vous avez changé de navigateur, peut-être le navigateur, ce qui a entraîné l'absence de contrôle de défilement.

Le petit rêveÀ l'aide de step: 1, exécutez le programme nommé robot, où télécharger à cet endroit: Je suis désolé, mais je n'ai pas le temps de vous répondre. 2、Ajouter une plateforme: configuration BitMEX `s API KEY: Le projet de loi n'a pas été adopté. Le projet de loi de 2010 sur les droits de l'homme est en cours d'exécution. Il s'agit d'un projet de loi visant à améliorer la qualité de l'air et de l'eau. 3, Ajouter le robot et la stratégie de liaison avec le robot Le présent règlement est obligatoire dans tous ses éléments et directement applicable dans tout État membre. Il s'agit d'un projet de loi visant à améliorer la qualité de l'air et de l'eau. Le projet de loi de finances de l'Union européenne est en cours d'exécution.

YtrezqOui, mais quelles sont les étapes sur le site Web pour utiliser BitMex sur BotVS?

Le petit rêveMerci d' utiliser BotVS ^^, BotVS prend déjà en charge BitMEX.

Le petit rêveBonjour, pour l'instant, le système de détection n'est pas compatible avec BitMEX.

Le petit rêveVous pouvez copier en profondeur une poussée vers l'intérieur.

JeMerci! Alors je vais pousser à l'autre variable et ça devrait être bon.

Le petit rêveL'ensemble obtenu par GetRecords est une référence passée, et si vous poussez dans la prochaine fois que vous l'obtenez, l'élément de la pousse apparaît.

Le petit rêveJe vais essayer, attendez un peu.

JeJe voulais ajouter cette dernière donnée en temps réel, mais j'ai rencontré un problème. Exchange.SetContractType (en anglais seulement) // Obtenir des données avec GetRecords records = exchange.GetRecords (en anglais) Log (enregistrement) // puis ajoutez vous-même la dernière valeur. Je ne suis pas d'accord avec toi. Time:records[records.length-1].Time + 3600000, qui est une série de films réalisés par Time. Close:records[records.length-1].Close + 1 Je ne sais pas. Log (enregistrement) // pause de 10 secondes pour rappeler GetRecords Sleep (en anglais seulement) records = exchange.GetRecords (en anglais) // Pourquoi les données que vous avez ajoutées la dernière fois sont toujours là? Log (enregistrement)

Le petit rêveBon, merci à J, je vais essayer de faire un rapport.

Le petit rêveOui, BITMEX, c'est le contrat.

JeC'est clair, la première chose à faire est de mettre la monnaie. Les échanges.SetContractType (('XBTUSD') records = exchanges.GetRecords

Le petit rêveBien, nous allons vérifier.

Le fils de NingC'est aussi possible, je vais essayer.

Le petit rêveVous pouvez essayer de limiter le nombre de fractions de prix à l'aide de N. Beaucoup d'échanges limitent le nombre de fractions de prix, généralement pas plus de 4 fractions.

Le fils de NingLe rêve est toujours le même, Sell ((12319.94890, 100.00000): 400: {"error":{"message":"Invalid price tickSize","name":"HTTPError"}}, la sensation est que le prix n'a pas été converti en dollars et a été signalé, de sorte que le prix est anormalement dévié et n'est pas mis en attente.

Le petit rêveBon, je vais le tester tout de suite.