BitMEX 거래소 API 메모

저자:작은 꿈, 2017-05-08 18:39:32, 업데이트: 2023-07-27 20:40:27

BitMEX 거래소 API 사용 사항 (BitMEX exchange API note)

FMZ 플랫폼 API 문서 텔레그램 그룹에 가입하세요

www.fmz.com(BotVs로 사용되었던) 은 양적 전략 거래 플랫폼으로 양적 전략을 쉽게 배우고, 작성하고, 공유하고 거래할 수 있습니다.

  • 우리의 플랫폼은 많은 장점을 가지고 있습니다:

    • 1, 크로스 플랫폼, 모든 주요 거래소를 지원, 우리의 플랫폼에 작성 된 전략은 모든 주요 거래소에 적합합니다.
    • 2、시작하기 쉬우며, 특정 API 문서와 고전적인 템플릿 전략은 사용자가 매우 빠르게 시작할 수 있도록 도와줍니다.
    • 3, 그것은 효과적인 시뮬레이션 백테스팅 시스템을 가지고 있습니다.
    • 4、메일 전송을 지원합니다.
    • 5, 웹 기반 제어 메커니즘, 휴대 전화로 액세스 할 수 있습니다.
    • 6、완전 파이썬\C++\자바스크립트 프로그래밍 지원
    • 7、스팟과 선물 거래를 지원하고, 앞으로 더 많은 거래소를 지원할 것입니다.
    • 8、비용은 매우 낮습니다. 현재 환율을 기준으로 시간당 0.125 RMB: USDCNY 6.9303, 즉 시간당 0.01804 달러입니다.
    • 9、우리 웹사이트에는 API 키나 비밀번호가 저장되지 않습니다. FMZ는 보안 문제 없이 4년 넘게 운영되고 있습니다.

FMZ (BOTVS) 는 이제 BitMEX의 모든 계약을 지원합니다!

  • 트레이드 온 테스트넷:

function main() {
    exchange.IO("base", "https://testnet.bitmex.com")
}
  • 테스트 코드:

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));
}
  • BitMEX에서 계좌 정보를 확인하세요.

    img

    바트로 정보를 기록합니다. BitMEX와 동일합니다.

    img

  • 레버리지 변경 후 로그 포지션, 레버리지가 변경되었습니다.

    img

  • Go 함수를 사용해서 자신의 위치를 동시에 커버할 수 있습니다.

      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. Let's try post orders and cancel it. Let's try post orders and cancel it. Let's try post orders and cancel it. Let's try post orders and cancel it. Let's try post orders and cancel it. Let's try post orders and cancel it. Let's try post orders and cancel it. Let's try hang 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 (중계 주문 정보)

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

    • 1, BitMEX only supoort K-line periods of 1m, 5m, 1h, 1d. ((BitMEX의 K-line 주기는 1분, 5분, 1시간, 1일의 주기를만 지원한다.))

      최신 관리자를 사용하여 하위층은 자동으로 K 라인을 합성할 수 있으며, BITMEX가 지원하지 않는 일부 K 라인 주기 데이터도 합성할 수 있으므로 K 라인 주기 설정 시에는 더 이상 제한되지 않습니다.1分钟、5分钟、1小时、1天이 주기는 모든 주기를 설정할 수 있습니다.

      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. (금지 후 레버리지를 조정할 수 있다.)

    • 지원exchange.IO더 많은 API를 위한 function.

      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 (거래소 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"}
      

관련

더 많은

q25459768감사합니다.

쿨롱로컬 호스트를 사용하여 VPN을 열고 shadowsocks, global, bitmex 웹 페이지를 사용할 수 있지만 프로그램이 실행되지 않습니다. 미국 퍼블릭 서버를 선택하면 문제가 없습니다.

꽃이 피어botvs가 bitmex의 제한된 가격 위탁을 지원하는지 물어보십시오. 이는 bitmex에서 주문할 때 문자를 선택하는 것과 같습니다.

bobo188getrecords로 Bitmex는 100개의 데이터를 반환하지만 Bitmex는 최대 500개의 데이터를 지원합니다. 어떻게 더 많은 것을 얻을 수 있습니까? 감사합니다.

영혼GetAccount의 자료가 잘못되었습니다. {"Stocks": 0.00841059, "FrozenStocks": 0.0092248, "Balance": 0, "FrozenBalance": 0} FrozenStocks는 0을 잃었고 실제로는 0.092248입니다.

exchange.IO (("api", httpMethod, resource, params) 를 사용하여 bitmex의 rest 인터페이스에 오류를 호출합니다. 이 URL을 빌려보겠습니다: https://www.bitmex.com/api/v1/orderBook/L2?symbol=XBT&depth=1, 문서에 따라 다음 코드를 사용했습니다. def main (: depth = exchanges[0].IO (("api", "GET", "/api/v1/orderBook/L2","symbol=XBT&depth=1") 로그 (depth) 로그에서 오류가 발생했습니다. Futures_BitMEX 오류 Futures_OP 4: 401: {"error":{ "message":"Signature not valid.","name":"HTTPError"}} 제 aksk는 문제없습니다. 다른 API가 호출할 수 있기 때문입니다. 왜 그런지 좀 도와주세요.

빅터997안녕하세요, 드로커를 추가할 수 없습니다, 잘못된 암호가 있습니다. 모든 단계에 대한 도움이 필요해요 가능하다면, 고마워, 빅터997

여덟 명의 오일 BitMEX가 웹소섹트 모드를 지원할 때, 현재 5분 300 거래 빈도 제한이 너무 크다.

케조https://dn-filebox.qbox.me/bf29e11e9f2d707808ccd006406bb3026a794876.png 왜 나는 Bitmex를 추가 플랫폼에서 볼 수 없습니까? 스크린 샷을 포함하여 크라켄도 없습니다. 또한 해외 플랫폼에서 몇 가지 검토 할 수 있습니까? 감사합니다.

ytrezq안녕하세요, 저는 botvs에 처음입니다. 어떻게 이것을 bitmex에 사용할 수 있을까요?

루이스루BitMex에 대한 리뷰 시스템이 있는지 물어보세요.

JBitMEX의 GetRecords에서 반환된 K선 데이터의 마지막 값은 실시간이 아니므로 실시간으로 지표를 계산할 수 없습니다. 이 문제는 오래전부터 존재해왔고, BitMEX API 자체의 결함으로 해결되지 않은 방법이다. BotVS는 BitMEX의 실시간 데이터를 수집하고 있으며, 수집된 데이터로 BitMEX의 실시간 데이터를 보충할 수 있습니까?

JBitMEX의 K 라인 데이터를 어떻게 얻습니까?

닌자쿠드림 , 저는 문제점을 발견했습니다. BitMEX가 원화로 환율을 설정한 후 거래가 불가능했습니다.

J이것은 너무 뚱뚱해서 레버 조작이 가능합니다.

작은 꿈shadowsocks는 진정한 글로벌 에이전트가 아니며, 모든 에이전트 컴퓨터의 네트워크 액세스가 없습니다. 현재 가장 간단한 방법은 다른 지역에서 서버를 실행하는 호스트를 사용하는 것입니다.

bobo188예를 들어 주시겠습니까? 감사합니다. 저는 백인입니다.

작은 꿈HttpQuery를 사용하여 직접 액세스 할 수 있습니다. 거래소 인터페이스 파라미터 지정 데이터 획득.

작은 꿈제 QQ: 359706687을 추가하면, 제가 도와드릴게요.

작은 꿈네, 당신이 호출하는 인터페이스는 심층을 얻는 인터페이스입니다. 이 인터페이스는 서명 없이 암호화되어야 합니다. 암호화 요청 인터페이스는 exchange.IO 호출을 사용해야 합니다. 암호화되지 않은 인터페이스는 HttpQuery (python는 urlib 라이브러리를 사용합니다) 를 사용해야 합니다.

작은 꿈응원해주셔서 감사합니다! 도커를 실행하고 싶은 어떤 종류의 시스템에 대한 답을 얻을 수 있습니까? BotVS 지원: - 윈도우 64비트, 32비트 (CLI, 인터페이스) - MAC OSX (cmd 라인) - 리눅스 64비트, 32비트 (cmd 라인) - ARM 리눅스 (cmd 라인) 이 후, 저는 단계적으로 도커를 추가하는 프로세스를 만들 것입니다. 메세지를 기다리고 있어!

작은 꿈현재 BITMEX의 WS 프로토콜은 지원되지 않습니다.

케조저는 ᅳᅳ 정말, ie 할 수 있습니다.

작은 꿈외장판의 플랫폼은 현재 검색 데이터가 없으며 지원이 계획되어 있습니다. 당신은 다른 브라우저를 테스트했습니다. 아마도 브라우저가 다운로드를 표시하지 않는 것을 초래했습니다.

작은 꿈단계 사용: 1, 로봇이라는 프로그램을 실행, 어디서 이 위치에서 다운로드: https://dn-filebox.qbox.me/cfe3c7fab12e72b6dae4ca238dde150e5d8bcd56.png 2、플랫폼 추가: BitMEX의 API 키 구성: https://dn-filebox.qbox.me/5527bc725b11109774c5bdf152c80974542d59ed.png https://dn-filebox.qbox.me/c953a7570513cb6e5800a4775df67cbcbc9135b8.png https://dn-filebox.qbox.me/6a8077d08bae2ac3ba5c4f57eb88af5c0683e4f6.png 로봇과 결합 전략을 로봇으로 추가합니다: https://dn-filebox.qbox.me/290a20859a186b27af4058019259134b6b48bda5.png https://dn-filebox.qbox.me/5e797e71b6c7c0bfda4860f7b1073aa69b499f64.png https://dn-filebox.qbox.me/74307cc14fa0039695e4608c955c2b7d71789b10.png

ytrezq네, 하지만 웹 사이트에서 BitMex를 BotVS에 사용하려면 어떻게 해야 할까요?

작은 꿈BotVS를 사용해서 감사합니다 ^^, BotVS는 이미 BitMEX를 지원합니다.

작은 꿈안녕하세요, 현재 BitMEX 거래소를 지원하는 검증 시스템이 없습니다 ^^.

작은 꿈눌러 넣을 수 있습니다.

J다른 변수를 눌러도 됩니다

작은 꿈J 대 ~ 이 GetRecords에서 가져온 배열은 참조로 전달되며, 만약 push가 들어가면 다음 가져오는 때 push의 요소가 나타난다.

작은 꿈저는 테스트를 해보겠습니다. 잠시만요.

J이 마지막 실시간 데이터를 직접 추가하려고 했지만 문제가 생겼습니다. exchange.SetContractType (('XBTUSD') ' // GetRecords (() 를 통해 데이터를 가져옵니다 records = exchange.GetRecords (역주) 로그 (기록) // 그리고 마지막 값을 직접 추가합니다. 레코드.푸시 타임:records[records.length-1].타임 + 3600000, Close:records[records.length-1]. }) 로그 (기록) // 10초 휴식을 취하고 GetRecords를 다시 호출합니다 ((( 수면 ((10000) records = exchange.GetRecords (역주) // 왜 마지막으로 추가된 데이터가 남아있나요? 로그 (기록)

작은 꿈자, J씨에게 감사드리지만, 제가 테스트를 해보고자 합니다.

작은 꿈이 모든 것이 비트메크스 (BITMEX) 에 대한 계약입니다.

J이 모든 것이 어떻게 이루어질 것인가에 대한 질문입니다. exchanges.SetContractType (('XBTUSD') ' records = exchanges.GetRecords

작은 꿈자, 한번 확인해보자.

닌자쿠음, 이것도 가능해요, 제가 시도해보겠습니다.

작은 꿈N를 사용하여 소수점을 제한할 수 있습니다. 많은 거래소에서는 소수점을 제한하고 일반적으로 4 소수점을 초과하지 않습니다.

닌자쿠꿈은 항상 일찍, Sell ((12319.94890, 100.00000): 400: {"error":{"message":"Invalid price tickSize","name":"HTTPError"}}, 느낌은, 가격을 달러로 변환하지 않고 보고되어서, 가격이 이상적으로 벗어나서,挂牌하지 않습니다.

작은 꿈네, 바로 시험해볼게요.