Примечание к API биржи BitMEX

Автор:Маленькие мечты, Создано: 2017-05-08 18:39:32, Обновлено: 2023-07-27 20:40:27

BitMEX exchange API note (Примечание об использовании API BitMEX)

Платформа FMZ API Doc Присоединяйтесь к нам в группе Telegram

www.fmz.com(ранее BotVs) - это платформа для торговли количественной стратегией, где вы можете легко изучать, писать, делиться и торговать количественными стратегиями.

  • У нашей платформы много преимуществ:

    • 1, кроссплатформенный, поддерживает все основные торговые биржи, стратегия написана на нашей платформе подходит для всех основных бирж.
    • 2、Легко начать, специальная документация API и классические стратегии шаблонов помогают пользователям начать очень быстро.
    • 3, Он имеет эффективную систему симуляции обратного тестирования.
    • 4、 Поддержка отправки электронной почты, отправки сообщений на телефон.
    • 5, веб-механизм управления, к которому можно получить доступ через телефон.
    • Поддержка полного программирования Python\C++\JavaScript
    • 7、Поддерживать торговлю спотами и фьючерсами, и будет поддерживать больше бирж в будущем.
    • 8, Стоимость чрезвычайно низкая. 0,125 юаней в час, основываясь на текущем обменном курсе: USDCNY 6,9303, что означает 0,01804 доллара в час.
    • На нашем сайте не хранятся API-ключи и пароли. FMZ работает уже более четырех лет без каких-либо проблем с безопасностью.

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

  • Log positions after changing leverage, the leverage has been changed (Зарегистрировать позиции после изменения левериджа, информация о предыдущем хранении).

    img

  • Use Go function to cover your positions at the same time. Используйте 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. (Давайте попробуем разместить заказы и отменить их.)

    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 поддерживают только периоды продолжительностью 1 минута, 5 минут, 1 час, 1 день)).

      Используя новейшие хостеры, базовый слой может автоматически синтезировать K-линии, а некоторые K-линиевые циклы, которые не поддерживаются BITMEX, также могут быть синтезированы, так что при настройке 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. (Левирование может быть изменено, пока вы держите позицию.)

    • 4, Поддержкаexchange.IOfunction for more API. (поддержка функций 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 (ссылка на 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Спасибо.

КуунгПожалуйста, запустите впн с помощью локального хостера, используйте shadowsocks, global, bitmex веб-страницы можно зайти, но программа не работает.

Цветок расцветёт.Пожалуйста, botvs поддерживает ли Bitmex ограничение цены на заказ, что равносильно тому, что при заказе в Bitmex выбирать пассивный заказ.

Бобо188С getrecords, bitmex возвращает только 100 данных, но bitmex поддерживает максимум 500, как получить больше? спасибо

КиссоулПолучается, что данные, полученные GetAccount, не соответствуют действительности. {"Stocks": 0.00841059, "FrozenStocks": 0.0092248, "Balance": 0, "FrozenBalance: 0} FrozenStocks потерял один ноль, фактически 0.0092248.

БелеевКак это решить, если вы вызвали остановку интерфейса bitmex с помощью exchange.IO (("api", httpMethod, resource, params)? Я хотел бы получить этот URL bitmex: 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") Log ((depth)) В результате в журнале появилась ошибка: Futures_BitMEX ошибка Futures_OP 4: 401: {"error":{"message":"Signature not valid.","name":"HTTPError"}} Мой aksk - это нормально, потому что другие API могут вызывать через, помогите посмотреть, почему это так?

Виктор997Привет, я не могу добавить Droker, он говорит неправильный пароль. Мне нужна помощь со всеми этапами, если это возможно, я мог бы только добавить платформу. Спасибо, Виктор997.

Восемь марокКогда BitMEX сможет поддерживать режим websocekt, сейчас ограничение на частоту 300 транзакций за 5 минут слишком большое

кедзоhttps://dn-filebox.qbox.me/bf29e11e9f2d707808ccd006406bb3026a794876.png Почему я не вижу Bitmex в добавленной платформе, в том числе и Kraken в скриншоте?

итрецкПривет, я новичок в botvs, как я могу использовать это для bitmex?

ЛуизаПожалуйста, спросите, есть ли на вашей платформе система обратной связи для BitMex.

JПоследнее значение данных K-строки, возвращаемых BitMEX GetRecords, не является реальным, что не позволяет вычислять показатели в реальном времени. Эта проблема существует уже давно и является недостатком самого API BitMEX, который не был решен. BotVS собирает данные BitMEX в режиме реального времени, может ли он дополнить эти данные BitMEX в режиме реального времени?

JКак получить данные K-линии BitMEX?

Нинг-цзыДрем, я обнаружил проблему, после того, как bitMEX установил курс на юани, не удалось совершить сделку ~ не знаю, что это за проблема, пожалуйста, Дрем, пожалуйста

JЭто слишком круто, чтобы использовать рычаги.

Маленькие мечтыshadowsocks не является настоящим глобальным агентом, и не имеет доступа к сети для всех компьютеров, и в настоящее время проще всего использовать хостинг с сервером в другом регионе.

Бобо188Не могли бы вы дать мне пример, пожалуйста? Спасибо!

Маленькие мечтыС помощью HttpQuery можно напрямую получить доступ к биржам, интерфейсам, параметрам и данным.

Маленькие мечтыЕсли вы хотите посмотреть мой QQ: 359706687, я помогу вам.

Маленькие мечтыДа, вы вызываете интерфейс для получения глубины, который должен быть незашифрованным без подписи. Для зашифрованных запросов используйте вызов exchange.IO, для незашифрованных используйте HttpQuery (python использует urlib library), HttpQuery обрабатывает незашифрованные запросы.

Маленькие мечтыСпасибо за поддержку! Могу ли я получить ответ о том, какие виды вашей системы, что вы хотите запустить докер. BotVS поддерживается: - Windows 64 бит, 32 бит (CLI, интерфейс) - MAC OSX (линия cmd) - Линукс 64 бита, 32 бита (cmd линия) - ARM Linux (линия CMD) После этого, я сделаю процесс, который шаг за шагом добавить докер. Ждем сообщения!

Маленькие мечтыПротокол WS BITMEX пока не поддерживается.

кедзоЯ не знаю.

Маленькие мечтыПлатформы на дискете Пока нет обратной проверки данных, планируется поддержка. Вы сменили пробный браузер, возможно, браузер, в результате чего не отображается спускающийся контроллер.

Маленькие мечтыИспользование шага: 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 3, Добавьте робота и стратегию связывания с роботом: https://dn-filebox.qbox.me/290a20859a186b27af4058019259134b6b48bda5.png https://dn-filebox.qbox.me/5e797e71b6c7c0bfda4860f7b1073aa69b499f64.png https://dn-filebox.qbox.me/74307cc14fa0039695e4608c955c2b7d71789b10.png

итрецкДа, но каковы шаги на сайте для использования BitMex на BotVS?

Маленькие мечтыСпасибо за использование BotVS ^^, BotVS уже поддерживает BitMEX.

Маленькие мечтыЗдравствуйте, пока что система отслеживания не поддерживает BitMEX.

Маленькие мечтыМожно глубоко скопировать push-in.

JСпасибо! Тогда я выдвигаю другую переменную.

Маленькие мечтыJ - величина ~ Этот массив, полученный GetRecords, передается ссылкой, и элементы push появляются, если push в следующий раз будет загружен.

Маленькие мечтыЯ попробую, подождите.

JЯ хотел бы добавить эти последние данные в режиме реального времени, но у меня возникла проблема. exchange.SetContractType (('XBTUSD')) // Получить данные с помощью GetRecords (()) records = exchange.GetRecords ((() Log ((records)) // затем добавляем последнее значение. Здесь можно добавить любую цифру, только для тестирования. records.push (((( Time:records[records.length-1].Time + 3600000, Close:records[records.length-1].Close + 1 }) Log ((records)) // Отдохнуть 10 секунд и перезвонить GetRecords ((() Sleep ((10000) records = exchange.GetRecords ((() // Почему данные, которые были добавлены в прошлый раз, остаются? Log ((records))

Маленькие мечтыХорошо, спасибо, что предложили, я проверю, запись, отчет!

Маленькие мечтыДа, BITMEX - это контракт.

JЯсно, что сначала нужно установить валюту. exchanges.SetContractType (('XBTUSD')) records = exchanges.GetRecords ((()

Маленькие мечтыХорошо, давайте проверим.

Нинг-цзыНу, это тоже возможно, я попробую.

Маленькие мечтыМожно использовать _N ограничить дефицитные числа цены, многие биржи ограничивают дефицитные числа предложений, как правило, не более 4-х дефицитных цифр.

Нинг-цзыСэлл ((12319.94890, 100.00000): 400: {"error":{"message":"Invalid price tickSize","name":"HTTPError"}}, ощущение, что цена не была переведена в доллары, и она была опубликована, так что цена необычно отклонилась, и не была приведена в список.

Маленькие мечтыХорошо, я проверю это прямо сейчас.