Nota API pertukaran BitMEX

Penulis:Mimpi kecil, Dicipta: 2017-05-08 18:39:32, Dikemas kini: 2023-07-27 20:40:27

Penggunaan API pertukaran BitMEX (note API pertukaran BitMEX)

Platform FMZ API Dokumen Sertai kami di kumpulan telegram

www.fmz.com(sebelumnya BotVs) adalah platform perdagangan strategi kuantitatif di mana anda boleh dengan mudah belajar, menulis, berkongsi, dan perdagangan strategi kuantitatif.

  • Platform kami mempunyai banyak kelebihan:

    • 1, Cross-platform, menyokong semua bursa perdagangan utama, strategi yang ditulis di platform kami sesuai untuk semua bursa utama.
    • 2, Mudah untuk memulakan, dokumentasi API khusus dan strategi templat klasik membantu pengguna untuk memulakan dengan sangat cepat.
    • Ia mempunyai sistem pengujian semula simulasi yang berkesan.
    • 4, Sokongan menghantar e-mel, menghantar mesej ke telefon anda.
    • 5, mekanisme kawalan berasaskan web, boleh diakses melalui telefon anda.
    • 6、Support untuk penuh Python\C++\JavaScript pengaturcaraan
    • 7、Menyokong perdagangan spot dan niaga hadapan, dan akan menyokong lebih banyak pertukaran pada masa akan datang.
    • 8, Kosnya sangat rendah. 0.125 RMB sejam, berdasarkan kadar pertukaran semasa: USDCNY 6.9303, yang bermaksud 0.01804 dolar sejam.
    • Tiada API-KEY atau kata laluan disimpan di laman web kami. FMZ telah berjalan selama lebih dari empat tahun tanpa sebarang masalah keselamatan.

FMZ (BOTVS) kini menyokong semua kontrak di BitMEX!

  • Perdagangan pada testnet:

function main() {
    exchange.IO("base", "https://testnet.bitmex.com")
}
  • Kode ujian:

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));
}
  • Semak maklumat akaun anda di BitMEX.

    img

    Log maklumat oleh bot, yang sama dengan yang di BitMEX.

    img

  • Log positions after changing leverage, the leverage has been changed (log kedudukan selepas menukar levera, berbanding maklumat pegangan sebelum dan selepas).

    img

  • Gunakan fungsi Go untuk merangkumi kedudukan anda pada masa yang sama.

      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. (Let's try post orders and cancel it.) (Let's try post orders and cancel it.)

    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 (maklumat pesanan tertangguh yang diperoleh).

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

    • 1, BitMEX only supoort K-line periods of 1m, 5m, 1h, 1d. ((Periode K-line BitMEX hanya menyokong tempoh 1 minit, 5 minit, 1 jam, 1 hari..)

      Menggunakan hos terkini, lapisan bawah boleh secara automatik menggabungkan K-line, dan beberapa data kitaran K-line yang tidak disokong oleh BITMEX juga boleh disatukan, jadi ia tidak lagi terhad pada kitaran K-line semasa menetapkan.1分钟、5分钟、1小时、1天Semua kitaran boleh disetel.

      img

    • 2. Test holding long and short positions at the same time.

      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. The leverage can be changed while holding position. (Leverage boleh diubah semasa memegang kedudukan.)

    • 4、Pengurusanexchange.IOfunction for more API (menyokong fungsi exchange.IO)

      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

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

Berkaitan

Lebih lanjut

q25459768Terima kasih.

CooongSila buka VPN menggunakan hoster tempatan, gunakan shadowsocks, global, halaman web bitmex boleh naik, tetapi program tidak berjalan. Pilih pelayan awam Amerika Syarikat tidak ada masalah, anda boleh membuat perbandingan.

Bunga-bunga kecil.Sila tanyakan botvs menyokong penugasan harga terhad untuk bitmex, yang sama dengan memilih penugasan pasif ketika membuat pesanan di bitmex

bobo188Dengan getrecords, bitmex hanya mengembalikan 100 data, tetapi bitmex menyokong maksimum 500, bagaimana anda boleh mendapatkan lebih banyak? terima kasih

jiwaData yang diperoleh oleh GetAccount tidak betul. {"Stocks": 0.00841059, "FrozenStocks": 0.0092248, "Balance": 0, "FrozenBalance: 0} FrozenStocks kurang satu 0, sebenarnya 0.0092248.

bertaqwaMenggunakan exchange.IO (("api", httpMethod, resource, params) untuk memanggil bitmex pada rest interface error, bolehkah anda bertanya bagaimana ini diselesaikan? Saya ingin mendapatkan URL bitmex ini: https://www.bitmex.com/api/v1/orderBook/L2?symbol=XBT&depth=1, menggunakan kod berikut mengikut dokumen def main (: depth = exchanges[0].IO (("api", "GET", "/api/v1/orderBook/L2","symbol=XBT&depth=1") Log (dalam) Kesalahan log selepas berjalan: Kesilapan Futures_BitMEX Futures_OP 4: 401: {"error":{"message":"Signature not valid.","name":"HTTPError}} Aksk saya tidak masalah, kerana API lain boleh memanggil melalui, tolong lihat apa yang menyebabkan ini?

Victor997Halo, saya tidak boleh menambah Droker, ia mengatakan kata laluan yang salah. Saya perlukan bantuan dengan semua langkah jika mungkin, saya hanya boleh menambah platform. Terima kasih, Victor997.

Lapan orang yang menanam minyakBilakah BitMEX akan dapat menyokong mod websocekt, sekarang had frekuensi 300 transaksi dalam 5 minit terlalu besar

kesjohttps://dn-filebox.qbox.me/bf29e11e9f2d707808ccd006406bb3026a794876.png Mengapa saya tidak dapat melihat Bitmex dalam platform tambahan, termasuk Kraken dalam skrin?

ytrezqHalo, saya baru ke botvs, bagaimana saya boleh menggunakan ini untuk bitmex?

LUISLUSila tanyakan adakah platform anda mempunyai sistem penyesuaian untuk BitMex?

JNilai terakhir data baris K yang dikembalikan oleh BitMEX's GetRecords tidak dalam masa nyata, yang menyebabkan tidak dapat mengira pelbagai penunjuk dalam masa nyata. Masalah ini telah lama berlaku dan merupakan kelemahan pada API BitMEX sendiri yang tidak dapat diselesaikan. Adakah BotVS mengumpul data BitMEX secara langsung, dan adakah ia boleh menambah data BitMEX secara langsung dengan data yang dikumpulkan?

JBagaimana data K-line BitMEX diperoleh?

Lelaki NingDream Sum, saya mendapati satu masalah, bitMEX tidak dapat berurusan selepas menetapkan kadar pertukaran kepada RMB ~ tidak tahu apa masalahnya, tolong Dream Sum tolong

JIni terlalu lembu, dan boleh digunakan sebagai tuas.

Mimpi kecilshadowsocks bukan penyokong global yang sebenar, dan tidak mempunyai semua akses ke rangkaian komputer penyokong, yang paling mudah adalah dengan menggunakan pelayan di kawasan lain untuk menjalankan hoster.

bobo188Bolehkah anda berikan saya satu contoh, terima kasih! Saya seorang yang kecil.

Mimpi kecilMenggunakan HttpQuery untuk mengakses pertukaran secara langsung, antara muka, menentukan parameter, mendapatkan data.

Mimpi kecilJika anda boleh, sila tambah QQ saya: 359706687 dan saya akan membantu anda.

Mimpi kecilYa, anda memanggil antara muka yang mempunyai kedalaman, yang seharusnya tidak memerlukan tanda tangan untuk mengenkripsi. Untuk antara muka yang meminta enkripsi, gunakan panggilan exchange.IO, untuk yang tidak menggunakan enkripsi, gunakan HttpQuery (python menggunakan perpustakaan urlib), HttpQuery memproses permintaan antara muka yang tidak mengenkripsi.

Mimpi kecilTerima kasih atas sokongan anda! Boleh saya mendapatkan beberapa jawapan mengenai jenis sistem anda yang anda mahu menjalankan docker. BotVS disokong: - Windows 64bit, 32bit (CLI, Antara muka) - Mac OSX (garis cmd) - Linux 64bit, 32bit (garis cmd) - ARM Linux (garis cmd) Selepas ini, saya akan membuat proses yang langkah demi langkah menambah docker. Menunggu mesej anda! ^^

Mimpi kecilBITMEX masih belum menyokong protokol WS.

kesjoSaya tidak faham.

Mimpi kecilPlatform luar tidak mempunyai data retest buat masa ini, sokongan sedang dirancang. Anda menukar penyemak imbas percubaan, mungkin penyemak imbas yang menyebabkan kawalan turun tidak muncul.

Mimpi kecilMenggunakan langkah: 1, Jalankan program bernama robot, di mana untuk memuat turun di lokasi ini: https://dn-filebox.qbox.me/cfe3c7fab12e72b6dae4ca238dde150e5d8bcd56.png 2、Tambah platform: konfigurasi KEY API BitMEX: https://dn-filebox.qbox.me/5527bc725b11109774c5bdf152c80974542d59ed.png https://dn-filebox.qbox.me/c953a7570513cb6e5800a4775df67cbcbc9135b8.png https://dn-filebox.qbox.me/6a8077d08bae2ac3ba5c4f57eb88af5c0683e4f6.png 3、Tambah robot dan Strategy Ikatan dengan robot: https://dn-filebox.qbox.me/290a20859a186b27af4058019259134b6b48bda5.png https://dn-filebox.qbox.me/5e797e71b6c7c0bfda4860f7b1073aa69b499f64.png https://dn-filebox.qbox.me/74307cc14fa0039695e4608c955c2b7d71789b10.png

ytrezqYa, tetapi apa langkah-langkah di laman web untuk menggunakan BitMex pada BotVS?

Mimpi kecilTerima kasih kerana menggunakan BotVS ^^, BotVS sudah menyokong BitMEX.

Mimpi kecilHalo, sementara ini sistem pengesanan tidak menyokong pertukaran BitMEX, ^^ 。

Mimpi kecilBoleh menyalin secara mendalam push ke dalam.

JTerima kasih! Saya akan teruskan ke satu lagi pemboleh ubah.

Mimpi kecilJ besar ~ Array yang diperoleh oleh GetRecords ini adalah rujukan yang dihantar, jika push masuk pada pengambilan seterusnya, elemen push akan muncul.

Mimpi kecilSaya akan cuba, tunggu sebentar.

JSaya mahu menambah data masa nyata yang terakhir, tetapi ada masalah, tolong saya lihat. exchange.SetContractType (('XBTUSD') // Mengambil data melalui GetRecords records = exchange.GetRecords (dalam bahasa Inggeris) Log (rekod) // dan kemudian menambah nilai terakhir sendiri. records.push ((({ Time:records[records.length-1].Time + 3600000, Close:records[records.length-1].Close + 1 {C:$0000FF} Log (rekod) // Hentikan 10 saat untuk memanggil semula GetRecords ((() Sleep ((10000) records = exchange.GetRecords (dalam bahasa Inggeris) // Mengapa data yang ditambahkan terakhir masih ada? Log (rekod)

Mimpi kecilBaiklah, terima kasih J, saya akan cuba.

Mimpi kecilYa, BITMEX, ini adalah kontrak.

JSudah tentu, kita perlu menetapkan mata wang yang lebih rendah. exchanges.SetContractType (('XBTUSD') records = exchanges.GetRecords ((()

Mimpi kecilBaiklah, mari kita lihat.

Lelaki NingOh, itu juga mungkin, saya akan cuba.

Mimpi kecilBoleh menggunakan _N untuk mengehadkan percubaan bilangan kecil harga, banyak bursa yang mengehadkan bilangan kecil tawaran, biasanya tidak lebih daripada 4 digit.

Lelaki NingMimpi selalu pagi, Sell ((12319.94890, 100.00000): 400: {"error":{ "message":" Invalid price tickSize","name":"HTTPError"}}, perasaan adalah, tidak menukar harga ke dolar dan dilaporkan sehingga harga yang luar biasa menyimpang, tidak diberikan senarai.

Mimpi kecilBaiklah, saya akan cuba sekarang.