Nota de la API del intercambio BitMEX

El autor:Un sueño pequeño., Creado: 2017-05-08 18:39:32, Actualizado: 2023-07-27 20:40:27

Nota de uso de la API del intercambio BitMEX

La plataforma de FMZ Doc API Únete a nosotros en el grupo telegrama

www.fmz.com(anteriormente BotVs) es una plataforma de trading de estrategias cuantitativas donde puedes aprender, escribir, compartir y negociar estrategias cuantitativas fácilmente.

  • Nuestra plataforma tiene muchas ventajas:

    • 1, multiplataforma, soporte a todos los principales intercambios comerciales, la estrategia escrita en nuestra plataforma es adecuada para todos los principales intercambios.
    • 2、Fácil de empezar, la documentación específica de la API y las estrategias clásicas de plantillas ayudan a los usuarios a comenzar muy rápido.
    • 3■Tiene un sistema eficaz de simulación de pruebas de retroceso.
    • 4、Apoyo para enviar correos electrónicos, enviar mensajes a su teléfono.
    • 5, mecanismo de control basado en la web, se puede acceder a través de su teléfono.
    • Apoyo para la programación completa de Python\C++\JavaScript
    • 7、Apoyar el comercio de spot y futuros, y apoyará más intercambios en el futuro.
    • 8、El costo es extremadamente bajo. 0,125 RMB por hora, basado en el tipo de cambio actual: USDCNY 6,9303, lo que significa 0,01804 dólares por hora.
    • 9、No se guardan API-KEY ni contraseñas en nuestro sitio web. FMZ ha estado funcionando durante más de cuatro años sin ningún problema de seguridad.

FMZ (BOTVS) ahora es compatible con todos los contratos de BitMEX!

  • El comercio en testnet:

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

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));
}
  • Compruebe la información de su cuenta en BitMEX.

    img

    Registra la información por bot, que es el mismo que en BitMEX.

    img

  • Log positions after changing leverage, the leverage has been changed (Log posiciones después de cambiar el apalancamiento, el apalancamiento ha sido cambiado).

    img

  • Use Go function to cover your positions at the same time (Utilice la función Go para cubrir sus posiciones al mismo tiempo).

      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 a intentar hacer pedidos por correo y cancelarlos)

    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 (La información de pedidos pendientes fue obtenida).

 [{"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: No se puede hacer nada.

    • BitMEX sólo soporta K-line periodes de 1m, 5m, 1h, 1d.

      Usando los últimos hosts, el substrato puede sintetizar K-lines automáticamente, y algunos datos de ciclos de K-lines que no son compatibles con BITMEX también pueden sintetizarse, por lo que no se limita a la configuración de ciclos de K-lines.1分钟、5分钟、1小时、1天Estos ciclos, todos los ciclos pueden ser configurados.

      img

    • 2, Test holding long and short positions at the same time. (Teste manteniendo posiciones largas y cortas al mismo tiempo)

      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. El apalancamiento puede ser cambiado mientras se mantiene la posición.

    • 4■ Apoyoexchange.IOFunción para más 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 (La información cruda de la API de posición/apalancamiento)

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

Más.

el nombre de la entidadGracias.

¿ Qué haces?Por favor, si ha abierto una VPN con un host local, puede subir a la página web de shadowsocks, global, bitmex, pero el programa no funciona. Si elige un servidor público estadounidense, no hay problema, puede hacer un pedido.

Las pequeñas flores se abren.Por favor, botvs apoya el encargo de precio limitado de bitmex, lo que es lo mismo que seleccionar el encargo pasivo cuando se realiza el pedido en bitmex.

- ¿Qué quieres?Con getrecords, bitmex solo devuelve 100 datos, pero bitmex es compatible con un máximo de 500, ¿cómo puedo obtener más?

el almaLos datos obtenidos por GetAccount no son correctos En la actualidad, hay más de 100 millones de dólares en el mercado de las acciones. FrozenStocks está un cero por debajo de 0.92248.

¿Qué quieres decir?¿Cómo se resuelve este problema? ¿Cómo se resuelve este problema? ¿Cómo se resuelve este problema? Quiero obtener esta url de bitmex: https://www.bitmex.com/api/v1/orderBook/L2?symbol=XBT&depth=1, usando el siguiente código según el documento Def main (): depth = exchanges[0].IO (("api", "GET", "/api/v1/orderBook/L2","symbol=XBT&depth=1") Log ((depth)) El error de registro después de ejecutar: Futures_BitMEX error Futures_OP 4: 401: {"error":{ "message":"Signature not valid.","name":"HTTPError"}} Mi aksk está bien, ya que otras APIs pueden ser llamadas a través, ¿podrías ayudarme a ver por qué es esto?

- ¿ Qué pasa?Hola, no puedo añadir Droker, dice contraseña incorrecta. Necesito ayuda con todos los pasos si es posible, sólo podría añadir la plataforma. Gracias, Víctor997.

Ocho personas en el aceite.¿Cuándo BitMEX puede soportar el modo websocekt, ahora el límite de frecuencia de 300 transacciones por 5 minutos es demasiado grande?

el quejohttps://dn-filebox.qbox.me/bf29e11e9f2d707808ccd006406bb3026a794876.png ¿Por qué no puedo ver Bitmex en las plataformas añadidas, incluido Kraken en la captura de pantalla?

ytrezqHola, soy nuevo en botvs, ¿cómo puedo usar esto para bitmex?

- ¿ Qué?Por favor, pregunte si su plataforma tiene un sistema de retroalimentación para BitMex.

J.El último valor de los datos de la línea K devueltos por BitMEX GetRecords no es en tiempo real, lo que hace que no sea posible calcular los indicadores en tiempo real. Este problema es muy antiguo y es un defecto de la propia API de BitMEX que no ha sido resuelto. ¿Podría BotVS complementar los datos de BitMEX en tiempo real con los datos recogidos?

J.¿Cómo se obtienen los datos de la línea K de BitMEX?

El hombre de NingDream Sum, he encontrado un problema, después de que BitMEX estableció el tipo de cambio en renminbi, no se puede transaccionar ~ No sé qué problema, por favor Dream Sum por favor ~

J.Este es demasiado grande y puede manejarse con palancas.

Un sueño pequeño.shadowsocks no es un verdadero agente global, y no tiene acceso a la red de todos los agentes de computadoras. Actualmente, lo más simple es ejecutar un host con un servidor en otra región.

- ¿Qué quieres?¿Puedes darme un ejemplo, por favor?

Un sueño pequeño.Se puede acceder directamente a los intercambios, especificar parámetros y obtener datos usando HttpQuery.

Un sueño pequeño.Si quieres, puedes añadir mi QQ: 359706687 y yo te ayudaré a verlo.

Un sueño pequeño.Si es así, usted está llamando a una interfaz de acceso a la profundidad, que debe ser sin signo de cifrado. Para las interfaces de petición de cifrado, use la llamada exchange.IO, para las interfaces sin cifrado, use HttpQuery (python utiliza la biblioteca urlib), HttpQuery maneja las solicitudes de interfaz sin cifrado.

Un sueño pequeño.Gracias por su apoyo! ¿Podría obtener alguna respuesta sobre qué tipo de su sistema que desea ejecutar un docker. BotVS soportado: - windows de 64 bits, 32 bits (CLI, Interfaz) - Mac OSX (línea cmd) - Linux de 64 bits, 32 bits (línea de cmd) - ARM Linux (línea de CMD) Después de esto, voy a hacer un proceso que paso a paso añadir un docker. ¡Esperamos tu mensaje!

Un sueño pequeño.El protocolo WS de BITMEX aún no está soportado.

el quejoYo no. Sí, sí, sí.

Un sueño pequeño.La plataforma del disco no tiene datos de retraso por el momento, se está planeando el soporte. Usted cambió el navegador de prueba, puede ser el navegador que causa el control de deslizamiento no se muestra.

Un sueño pequeño.Usando el paso: 1, ejecutar el programa llamado robot, donde descargar en esta ubicación: En el caso de las empresas que no cumplen con los requisitos de la presente Directiva, la presente Directiva se aplicará a las empresas que cumplen los requisitos de la presente Directiva. 2、Añadir plataforma: configuración de la API de BitMEX KEY: En la actualidad, el gobierno de la República Popular China está llevando a cabo una serie de actividades de investigación y desarrollo. En la actualidad, el gobierno de los EE.UU. está llevando a cabo una serie de investigaciones en el ámbito de la protección de los datos personales. En la actualidad, el gobierno de la República Popular de China está llevando a cabo una serie de actividades de investigación y desarrollo. 3, Añadir robot y estrategia de unión con robot: En la actualidad, el gobierno de la República Popular de China está llevando a cabo una serie de investigaciones sobre el uso de armas nucleares. En la actualidad, el gobierno de la República Popular de China está llevando a cabo una serie de actividades de investigación y desarrollo. En el caso de las empresas de la Unión Europea, las autoridades de los Estados miembros deben tener en cuenta los requisitos de seguridad y de seguridad establecidos en la Directiva 2008/57/CE.

ytrezqSí, pero ¿cuáles son los pasos en el sitio web para usar BitMex en BotVS?

Un sueño pequeño.Gracias por usar BotVS ^^, BotVS ya soporta BitMEX.

Un sueño pequeño.Hola, por el momento, el sistema de detección no es compatible con BitMEX, ^^.

Un sueño pequeño.Se puede copiar en profundidad un push in.

J.Gracias. Entonces, si me paso a la otra variable, debería estar bien.

Un sueño pequeño.J mayor ~ La matriz obtenida por GetRecords es una referencia que se transmite, y el elemento de la push aparece si se empuja hacia dentro la próxima vez que se obtiene.

Un sueño pequeño.Me gustaría hacer una prueba, espera un poco.

J.Quiero añadir este último dato en tiempo real, pero tengo un problema, ayúdame a ver. El tipo de contrato establecido (XBTUSD) // Obtener datos desde GetRecords Los registros = exchange.GetRecords Log ((records)) // y luego añade el último valor. Aquí puedes añadir cualquier dato, sólo para probar. Recordes.push (en inglés) Time:records [records.length-1].Time + 3600000, el número de discos registrados en el mundo. Close:records[records.length-1].Close + 1 (en inglés) ¿Qué es eso? Log ((records)) // Pausa de 10 segundos para volver a llamar a GetRecords ((() El sueño. Los registros = exchange.GetRecords // ¿Por qué el último dato que añadió todavía está? Log ((records))

Un sueño pequeño.Bien, gracias J, por sugerirlo, lo probaré.

Un sueño pequeño.Sí, BITMEX, este es el contrato.

J.Por supuesto, primero hay que establecer la moneda. Exchanges.SetContractType (en inglés) Los registros = exchanges.GetRecords

Un sueño pequeño.Está bien, vamos a comprobarlo.

El hombre de NingBueno, también es posible, lo intentaré.

Un sueño pequeño.Puede utilizar_N para limitar el número de decimals de los precios, muchos intercambios limitan el número de decimals de las ofertas, generalmente no más de 4 decimals.

El hombre de NingEl sueño siempre es temprano, Sell ((12319.94890, 100.00000): 400: { "error": { "message":" Invalid price tickSize","name":"HTTPError"}}, la sensación es que, sin convertir el precio en dólares, se ha reportado, por lo que el precio se desvía anormalmente, no se pone en la lista.

Un sueño pequeño.Está bien, voy a probarlo ahora mismo.