Type/to search
3
Follow
1503
Followers
BitMEX exchange API note
FAQ
Created 2019-04-04 11:40:52  Updated 2024-02-05 20:09:52
 0
 2943

BitMEX 交易所API使用事项 (BitMEX exchange API note)

img

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) 现已支持 BitMEX 的所有合约!(FMZ(BOTVS) supports all contracts on BitMEX)

  • 测试代码 (Test code) :

pine
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.

    img

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

    img

  • Log positions after changing leverage, the leverage has been changed (下市价单后调整杠杆,对比前后持仓信息。)

    img

  • Use Go function to cover your positions at the same time. (调用 Go 函数异步多线程平仓)

    javascript
    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.(我们试一下挂单。)

    pine
    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. (获取到的挂单信息)

javascript
[{"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 (注意):

    • 1、BitMEX only supoort K-line periods of 1m,5m,1h,1d.(BitMEX的K线周期只支持1分钟、5分钟、1小时、1天这些周期。)

      使用最新的托管者,底层可以自动合成K线,一些BITMEX 不支持的K线周期数据也可以合成出来,所以在设置K线周期的时候不再局限于1分钟、5分钟、1小时、1天这些周期,所有周期都可以设置。

      img

    • 2、Test holding long and short positions at the same time.(测试同时持有多头仓位、空头仓位)

      javascript
      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.(持仓后杠杆可调。)

    • 4、Support exchange.IO function for more API. (支持exchange.IO函数)

      img

      javascript
      // 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--position/leverage返回的数据:)

      javascript
      {"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"}
Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)