avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Sử dụng API của BitMEX Exchange

Được tạo ra trong: 2017-05-08 18:39:32, cập nhật trên: 2023-07-27 20:40:27
comments   51
hits   68223

BitMEX Exchange API note

The FMZ platform API Doc Join us on telegram group

www.fmz.com (used to be BotVs) is a quantitative strategy trading platform where you can easily learn, write, share, and trade quantitative strategies.

  • Our platform has many advantages:

    • 1、Cross-platform, support all major trading exchanges, strategy wrote on our platform is suitable for all major exchanges.
    • 2、Easy to get started, the specific API documentation and the classical template strategies helps users to get started really quick.
    • 3、It has an effective simulate backtesting system.
    • 4、Support sending e-mails, pushing messages to your phone.
    • 5、Web-based control mechanism, can be acessed through your phone.
    • 6、Support for complete Python\C++\JavaScript programming
    • 7、Support spots and futures trading, and will support more exchanges in the future.
    • 8、The cost is extremely low. 0.125 RMB per hour, based on current exchange rate: USDCNY 6.9303, which means 0.01804 dollar per hour.
    • 9、No API-KEY or passwords are saved in our website. FMZ has been running for more than four years without any security issues.

FMZ ((BOTVS) hiện hỗ trợ tất cả các hợp đồng trên BitMEX

  • #### Các nhà đầu tư khác cũng có thể tham gia vào hoạt động này.
function main() {
    exchange.IO("base", "https://testnet.bitmex.com")
}
  • #### Mã thử nghiệm:
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));
}
  • #### Check your account information at BitMEX.

Sử dụng API của BitMEX Exchange

Log the information by bot, which is the same with that on BitMEX.

Sử dụng API của BitMEX Exchange

  • #### Log positions after changing leverage, the leverage has been changed

Sử dụng API của BitMEX Exchange

  • #### Use Go function to cover your positions at the same time.
    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);

Sử dụng API của BitMEX Exchange

  • #### Let’s try post orders and cancel it. (Chúng ta hãy thử đặt hàng và hủy bỏ nó)
  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));

Sử dụng API của BitMEX Exchange

The pending orders’ information. (Thông tin về đơn đặt hàng đang chờ)

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

    • #### BitMEX only supoort K-line periods of 1m, 5m, 1h, 1d.

    Sử dụng bộ quản lý mới nhất, lớp nền có thể tự động tổng hợp K-line, và một số dữ liệu K-line không được hỗ trợ bởi BITMEX cũng có thể được tổng hợp, vì vậy khi thiết lập K-line không còn bị giới hạn1分钟、5分钟、1小时、1天Những chu kỳ, tất cả các chu kỳ có thể được thiết lập.

    Sử dụng API của BitMEX Exchange

    • #### 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));
    

    Sử dụng API của BitMEX Exchange

    • The leverage can be changed while holding position. (The leverage can be changed while holding position.)

    • 4. Hỗ trợ chức năng exchange.IO cho nhiều API hơn

    Sử dụng API của BitMEX Exchange

    // 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 (Thông tin thô của API vị trí / đòn bẩy)

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