Nota da API da bolsa BitMEX

Autora:Sonhos pequenos, Criado: 2017-05-08 18:39:32, Atualizado: 2023-07-27 20:40:27

BitMEX Exchange API Notas de uso

A plataforma FMZ API Doc Junta-te a nós no grupo do telegrama.

www.fmz.com(anteriormente BotVs) é uma plataforma de negociação de estratégias quantitativas onde você pode facilmente aprender, escrever, compartilhar e negociar estratégias quantitativas.

  • A nossa plataforma tem muitas vantagens:

    • 1、Cross-plataforma, apoiar todas as principais bolsas de negociação, estratégia escrita em nossa plataforma é adequado para todas as principais bolsas.
    • 2、Fácil de começar, a documentação específica da API e as estratégias clássicas de modelos ajudam os utilizadores a começar muito rapidamente.
    • 3, Dispõe de um sistema eficaz de simulação de backtesting.
    • Suporte para enviar e-mails, enviar mensagens para o seu telefone.
    • 5, mecanismo de controlo baseado na web, pode ser acedido através do seu telefone.
    • Suporte para programação completa Python\C++\JavaScript
    • 7、 Apoiar a negociação de opções binárias e futuros e apoiar mais trocas no futuro.
    • O custo é extremamente baixo. 0,125 RMB por hora, com base na taxa de câmbio atual: USDCNY 6,9303, o que significa 0,01804 dólares por hora.
    • 9、Nenhuma API-KEY ou senhas são salvas no nosso site. FMZ tem sido executado por mais de quatro anos sem quaisquer problemas de segurança.

FMZ (BOTVS) agora suporta todos os contratos no BitMEX!

  • O site da empresa é o site oficial da empresa.

function main() {
    exchange.IO("base", "https://testnet.bitmex.com")
}
  • Test code (código de teste):

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));
}
  • Verifique as informações da sua conta no BitMEX.

    img

    Registe as informações por bot, que é o mesmo que no BitMEX.

    img

  • Log positions after changing leverage, the leverage has been changed (Logue posições depois de mudar a alavancagem, a alavancagem foi alterada).

    img

  • Use Go function to cover your positions at the same time (Chamar a função Go para cobrir suas posições ao mesmo tempo)

      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

  • Let's try post orders and cancel it. (Vamos tentar postar pedidos e cancelá-los.)

    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

    The pending orders information (As ordens pendentes informação).

 [{"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"}]
  • Nota:

    • O BitMEX só suporta K-line periods of 1m, 5m, 1h, 1d.

      Usando os mais recentes administradores, o substrato pode sintetizar automaticamente os K-lines, e alguns dados de ciclos de K-lines não suportados pelo BITMEX também podem ser sintetizados, então não é mais limitado ao tempo de configuração dos K-lines.1分钟、5分钟、1小时、1天Estes ciclos, todos os ciclos podem ser configurados.

      img

    • 2, Test holding long and short positions at the same time (Teste segurando posições longas e curtas ao mesmo tempo)

      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

    • 3, A alavancagem pode ser alterada enquanto a posição é mantida.

    • 4■ Apoioexchange.IOFunção para mais 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"));
      

      The raw information of position/leverage API (a informação bruta da API de posição/leverage)

      {"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"}
      

Relacionados

Mais.

q25459768Obrigado.

CooongPor favor, use um servidor local para instalar o VPN, use o shadowsocks, global, bitmex. A página pode ser acessada, mas o programa não funciona.

As flores florescem.Pergunte se o botvs suporta o encomendamento de preço limitado do bitmex, o que equivale a selecionar a barra de encomenda passiva ao fazer um pedido no bitmex.

Boba188Com getrecords, o bitmex só retorna 100 dados, mas o bitmex suporta até 500, como você pode obter mais?

almaOs dados obtidos pelo GetAccount estão errados. {"Stocks": 0.00841059, "FrozenStocks": 0.0092248, "Balance": 0, "FrozenBalance: 0} O FrozenStocks está um zero abaixo, o que é 0.092248.

BeleevComo resolver este problema? Como resolver este problema? Eu quero obter este URL do bitmex: https://www.bitmex.com/api/v1/orderBook/L2?symbol=XBT&depth=1, usando o seguinte código de acordo com o documento def main (: depth = exchanges[0].IO (("api", "GET", "/api/v1/orderBook/L2","symbol=XBT&depth=1") Log ((depth)) O log de exibição recebeu um erro: Futures_BitMEX erro Futures_OP 4: 401: {"error":{"message":"Signature not valid.","name":"HTTPError"}} O meu aksk não é problema, porque outras APIs podem ser chamadas de passagem, ajuda a ver qual é a razão?

Victor997Olá, não consigo adicionar Droker, diz senha incorreta. Preciso de ajuda com todos os passos, se for possível, só posso adicionar a plataforma. Obrigado, Victor997.

Oito pessoasQuando o BitMEX poderá suportar o modo websocekt, agora o limite de freqüência de 5 minutos de 300 transações é muito grande

Kejohttps://dn-filebox.qbox.me/bf29e11e9f2d707808ccd006406bb3026a794876.png Por que eu não vejo o Bitmex nas plataformas adicionadas, incluindo o Kraken no screenshot?

YtrezqOlá, sou novo no botvs, como posso usar isto para o Bitmex?

LuísPor favor, pergunte se a sua plataforma tem um sistema de feedback para o BitMex.

JO último valor dos dados da linha K retornados pelo GetRecords do BitMEX não é real, o que não permite calcular os indicadores em tempo real. O problema é de longa data e é uma falha na própria API do BitMEX, que não foi resolvida. O BotVS coleta dados do BitMEX em tempo real, e pode complementar esses dados em tempo real do BitMEX com dados coletados?

JComo é que os dados da linha K do BitMEX foram obtidos?

Minha filhaSonho, eu descobri um problema, depois de o bitMEX ter configurado a taxa de câmbio para o yuan, não consegui fazer transações ~ Não sei qual é o problema, por favor, sonho por favor ~

JEste é muito bom e pode ser usado como alavanca.

Sonhos pequenosO shadowsocks não é um verdadeiro agente global, não tem acesso à rede de todos os computadores, e o mais simples é executar um host com um servidor em outra região.

Boba188Por favor, pode dar-me um exemplo, obrigado!

Sonhos pequenosAcesso direto ao Exchange, interface, especificação de parâmetros, acesso a dados.

Sonhos pequenosSe você me enviar um QQ: 359706687, eu vou ajudá-lo a ver.

Sonhos pequenosSim, você está chamando uma interface de acesso de profundidade, que deve ser criptografada sem assinatura. Para uma interface de solicitação de criptografia, use a chamada exchange.IO, para uma interface de solicitação de criptografia, use HttpQuery (python usa a biblioteca urlib), HttpQuery processa solicitações de interface não criptografadas.

Sonhos pequenosObrigado pelo apoio! Posso obter alguma resposta sobre que tipos de seu sistema que você quer executar um docker. BotVS suportado: - windows 64 bits, 32 bits (CLI, Interface) - MAC OSX (linha cmd) - Linux 64 bits, 32 bits (cmd linha) - ARM Linux (linha cmd) Depois disso, vou fazer um processo que passo a passo adicionar um docker. Aguardo a tua mensagem!

Sonhos pequenosO protocolo WS do BITMEX ainda não é suportado.

KejoEu sou o meu pai.

Sonhos pequenosA plataforma do disco externo não tem dados de retrospecção no momento, sendo planejado o suporte. Você trocou o navegador de teste, possivelmente o navegador, causando o controle de deslizamento não aparecer.

Sonhos pequenosUsando passo: 1, Execute o programa chamado robô, onde baixar neste local: https://dn-filebox.qbox.me/cfe3c7fab12e72b6dae4ca238dde150e5d8bcd56.png 2、Adicionar plataforma: configuração BitMEX `s API KEY: https://dn-filebox.qbox.me/5527bc725b11109774c5bdf152c80974542d59ed.png https://dn-filebox.qbox.me/c953a7570513cb6e5800a4775df67cbcbc9135b8.png https://dn-filebox.qbox.me/6a8077d08bae2ac3ba5c4f57eb88af5c0683e4f6.png 3, Adicionar robô e estratégia de ligação com robô: https://dn-filebox.qbox.me/290a20859a186b27af4058019259134b6b48bda5.png https://dn-filebox.qbox.me/5e797e71b6c7c0bfda4860f7b1073aa69b499f64.png https://dn-filebox.qbox.me/74307cc14fa0039695e4608c955c2b7d71789b10.png

YtrezqSim, mas quais são os passos no site para usar o BitMex no BotVS?

Sonhos pequenosObrigado por usar o BotVS ^^, o BotVS já suporta o BitMEX.

Sonhos pequenosOlá, o sistema de detecção ainda não suporta o BitMEX, ^^ 。

Sonhos pequenosPode copiar profundamente um push para dentro.

JObrigado! Então eu vou empurrar para a outra variável que deve ser suficiente.

Sonhos pequenosJ maior ~ Esta matriz obtida pelo GetRecords é referenciada, e se for inserido o elemento de push na próxima captura.

Sonhos pequenosEu vou testá-lo, espere um pouco.

JEu gostaria de adicionar este último dado em tempo real, mas eu tive um problema, por favor me ajude a ver. exchange.SetContractType (('XBTUSD') // Obter dados através do GetRecords records = exchange.GetRecords (em inglês) Log (records) // e depois adicionar o último valor. Aqui, adicione qualquer dado, apenas para testes Não, eu não vou. Time:records[records.length-1].Time + 3600000, Close:records[records.length-1].Close + 1 Não. Log (records) // Pausa 10 segundos para recomeçar a chamada GetRecords ((() Sleep (Sleep) records = exchange.GetRecords (em inglês) // Por que os dados que foram adicionados na última vez ainda existem? Log (records)

Sonhos pequenosMuito bem, obrigado J, por me sugerir, vou testá-lo.

Sonhos pequenosSim, BITMEX, este é o contrato.

JÉ claro, primeiro é preciso definir a moeda. exchanges.SetContractType (('XBTUSD') records = exchanges.GetRecords (em inglês)

Sonhos pequenosMuito bem, vamos verificar.

Minha filhaAh, isso também é possível, vou tentar.

Sonhos pequenosPode-se usar o_N para limitar o número de frações do preço. Muitas casas de câmbio limitam o número de frações das ofertas, geralmente não mais de 4 frações.

Minha filhaA sensação é de que, sem converter o preço em dólares, ele foi reportado, de modo que o preço se desviou anormalmente e não foi listado.

Sonhos pequenosMuito bem, vou testá-lo agora mesmo.