Die Ressourcen sind geladen. Beförderung...

BitMEX-Börsen-API-Anmerkung

Schriftsteller:Die Erfinder quantifizieren - Kleine Träume, Erstellt: 2017-05-08 18:39:32, Aktualisiert: 2023-07-27 20:40:27

BitMEX-Austausch-API-Anwendungsbedingungen (BitMEX exchange API note)

Die FMZ-Plattform API Doc Schließen Sie sich uns in die Telegramm-Gruppe an.

www.fmz.com(früher BotVs) ist eine quantitative Strategie-Handelsplattform, auf der Sie leicht quantitative Strategien lernen, schreiben, teilen und handeln können.

  • Unsere Plattform hat viele Vorteile:

    • 1、Plattformübergreifend, unterstützt alle großen Börsen, Strategie auf unserer Plattform geschrieben ist für alle großen Börsen geeignet.
    • 2. Einfach zu starten, die spezifische API-Dokumentation und die klassischen Vorlagenstrategien helfen den Benutzern, sehr schnell loszulegen.
    • 3. Es verfügt über ein wirksames Simulations-Backtesting-System.
    • 4、Support für das Senden von E-Mails, das Versenden von Nachrichten auf Ihr Telefon.
    • 5. Webbasierter Steuerungsmechanismus, der über Ihr Telefon zugänglich ist.
    • 6、Unterstützung für komplette Python\C++\JavaScript-Programmierung
    • 7、Support für Spot- und Futures-Handel und wird in Zukunft weitere Börsen unterstützen.
    • 8、Die Kosten sind extrem niedrig. 0,125 RMB pro Stunde, basierend auf dem aktuellen Wechselkurs: USDCNY 6,9303, was 0,01804 Dollar pro Stunde bedeutet.
    • 9、Keine API-Key oder Passwörter werden auf unserer Website gespeichert. FMZ läuft seit mehr als vier Jahren ohne Sicherheitsprobleme.

FMZ (BOTVS) unterstützt jetzt alle Verträge auf BitMEX!

  • Der Handel auf dem Testnet:

function main() {
    exchange.IO("base", "https://testnet.bitmex.com")
}
  • Test-Code: Das ist ein Testcode.

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));
}
  • Überprüfen Sie Ihre Kontoinformationen bei BitMEX.

    img

    Loggen Sie die Informationen per Bot, das ist dasselbe wie bei BitMEX.

    img

  • Log positions after changing leverage, the leverage has been changed (Log Positionen nach Veränderung des Hebels, der Hebel wurde geändert).

    img

  • Use Go function to cover your positions at the same time (Verwenden Sie die Go-Funktion, um Ihre Positionen gleichzeitig zu decken)

      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. (Lasst uns versuchen, Post-Orders zu hängen.))

    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 (Die anhängigen Aufträge werden angefordert)

 [{"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"}]
  • Bitte beachten Sie:

    • BitMEX unterstützt nur K-Line-Perioden von 1m, 5m, 1h und 1d.

      Mit dem neuesten Host kann die Unterseite automatisch K-Linien synthetisieren, und einige K-Linien-Zyklusdaten, die von BITMEX nicht unterstützt werden, können auch synthetisiert werden, so dass sie sich nicht mehr auf K-Linien-Zyklusen beschränken, wenn sie eingerichtet werden.1分钟、5分钟、1小时、1天Diese Zyklen, alle Zyklen können eingestellt werden.

      img

    • 2. Test, der lange und kurze Positionen gleichzeitig hält.

      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. Das Hebel kann während der Halteposition geändert werden.

    • 4. Unterstützungexchange.IOFunktion für mehr API.

      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 (Daten, die von der Position/Leverage-API zurückgegeben werden)

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

Verwandt

Mehr

q25459768Ich danke Ihnen.

- Ich weiß nicht.Bitte, wenn Sie ein lokales VPN-Manager verwenden, können Sie Shadowsocks, Global, Bitmex verwenden, aber das Programm läuft nicht. Wählen Sie einen US-amerikanischen öffentlichen Server, können Sie sich freuen.

Kleine Blumen aufblühenBitte fragen Sie botvs unterstützt Bitmex Preisbegrenzung Auftrag, das ist das gleiche wie beim Bestellen in Bitmex.

Bobo188Mit getrecords gibt bitmex nur 100 daten zurück, aber bitmex unterstützt maximal 500, wie kann ich mehr bekommen?

SeeleDie Daten, die GetAccount erhalten hat, sind falsch. {"Stocks": 0.00841059, "FrozenStocks": 0.0092248, "Balance": 0, "FrozenBalance": 0} FrozenStocks ist eine Null weniger und ist tatsächlich 0.092248.

BelievWie löst man bitte einen Rest-Interface-Fehler beim Aufruf von Bitmex mit exchange.IO (API, httpMethod, resource, params)? Ich möchte diese URL von GET bitmex: https://www.bitmex.com/api/v1/orderBook/L2? symbol=XBT&depth=1, mit folgendem Code nach Dokumentation Def main (: depth = exchanges[0].IO (("api", "GET", "/api/v1/orderBook/L2","symbol=XBT&depth=1") Log (siehe unten) Ein Fehler beim Laufen des Logs: Futures_BitMEX Fehler Futures_OP 4: 401: {"error":{"message":"Signature not valid.","name":"HTTPError"}} Mein Aksk ist in Ordnung, weil andere APIs durchrufen können, helfen Sie mir zu sehen, warum das so ist?

Sie haben mich verletzt.Hallo, ich kann Droker nicht hinzufügen, es steht falsches Passwort. Ich brauche Hilfe bei allen Schritten, wenn es möglich ist, ich konnte nur die Platteform hinzufügen. Danke, Victor 997.

Acht Leute, die mit dem Öl schwimmen.Wenn BitMEX Websocekt unterstützt, ist die Frequenz von 300 Transaktionen pro 5 Minuten zu hoch.

KejsjoWarum sehe ich Bitmex nicht in den Plätzen, die ich hinzufüge, und auch nicht den Kraken im Screenshot?

YtrezqHallo, ich bin neu bei botvs, wie kann ich das für bitmex benutzen?

- Nein.Bitte fragen Sie mich, ob Ihre Plattform ein Feedback-System für BitMex hat.

JBitMEX's GetRecords geben an, dass der letzte Wert der K-Linien-Daten nicht in Echtzeit ist, was die Berechnung der Indikatoren nicht in Echtzeit ermöglicht. Das Problem, das seit langem besteht, ist ein Fehler der BitMEX-API selbst, der nicht gelöst wurde. BotVS sammelt Daten von BitMEX in Echtzeit, und kann es diese Daten mit Hilfe von Daten ergänzen?

JWie wurde die K-Line-Daten von BitMEX erhalten?

Der Mann von NingIch habe ein Problem entdeckt, nachdem BitMEX den Wechselkurs auf den Yuan gesetzt hat, konnte es nicht funktionieren ~ Ich weiß nicht, was das Problem ist, bitte bitMEX um Hilfe ~

JDas ist zu teuer, um den Hebel zu bedienen.

Die Erfinder quantifizieren - Kleine Träumeshadowsocks ist kein wirklich globaler Proxy und hat nicht alle Proxy-Computer, die Zugang zum Netz haben. Derzeit ist es am einfachsten, mit einem Server in einer anderen Region einen Host zu laufen.

Bobo188Kannst du mir ein Beispiel geben? Danke! Ich bin klein und weiß.

Die Erfinder quantifizieren - Kleine TräumeSie können mit HttpQuery direkt auf die Börse zugreifen, die Benutzeroberfläche anzeigen, Parameter angeben, Daten abrufen.

Die Erfinder quantifizieren - Kleine TräumeSie können mir QQ: 359706687 hinzufügen und ich helfe Ihnen, es zu sehen.

Die Erfinder quantifizieren - Kleine TräumeJa, Sie rufen eine Schnittstelle an, die die Tiefe erreicht, und diese Schnittstelle sollte ohne Signaturen verschlüsselt sein. Für verschlüsselte Anfragen werden Exchange.IO-Anrufe verwendet, für nicht verschlüsselte Anfragen wird HttpQuery verwendet (Python verwendet die urlib-Bibliothek).

Die Erfinder quantifizieren - Kleine TräumeDanke für Ihre Unterstützung! Könnte ich eine Antwort darüber, welche Art von System, das Sie wollen, um einen Docker laufen bekommen. BotVS unterstützt: - Windows 64 Bit, 32 Bit (CLI, Schnittstelle) - MAC OSX (cmd-Linie) - Linux 64 Bit, 32 Bit (cmd Linie) - ARM Linux (cmd-Linie) Danach werde ich einen Prozess durchführen, bei dem Schritt für Schritt ein Docker hinzugefügt wird. Warte auf deine Nachricht! ^^

Die Erfinder quantifizieren - Kleine TräumeDer WS-Protokoll von BITMEX wird derzeit nicht unterstützt.

KejsjoIch mag sie. Ja, ich mag sie.

Die Erfinder quantifizieren - Kleine TräumeDie Plattform für die Plattform hat momentan keine Rückmeldedaten, die Unterstützung ist geplant. Sie haben einen anderen Browser getestet, möglicherweise der Browser, der dazu führt, dass die Absteiger nicht angezeigt wird.

Die Erfinder quantifizieren - Kleine TräumeMit Schritt: 1,Lauf das Programm namens Roboter, wo es heruntergeladen werden kann an diesem Ort: Siehe auch: https://dn-filebox.qbox.me/cfe3c7fab12e72b6dae4ca238dde150e5d8bcd56.png 2、Plattform hinzufügen: Konfiguration BitMEX `s API KEY: Siehe auch: https://dn-filebox.qbox.me/5527bc725b11109774c5bdf152c80974542d59ed.png Siehe auch: https://dn-filebox.qbox.me/c953a7570513cb6e5800a4775df67cbcbc9135b8.png Siehe auch: https://dn-filebox.qbox.me/6a8077d08bae2ac3ba5c4f57eb88af5c0683e4f6.png 3, Roboter und Bindungsstrategie mit Roboter hinzufügen: Der Präsident. - Nach der Tagesordnung folgt die Aussprache über den Bericht (Dok. Siehe auch: https://dn-filebox.qbox.me/5e797e71b6c7c0bfda4860f7b1073aa69b499f64.png Siehe auch: https://dn-filebox.qbox.me/74307cc14fa0039695e4608c955c2b7d71789b10.png

YtrezqJa, aber was sind die Schritte auf der Website, um BitMex auf BotVS zu verwenden?

Die Erfinder quantifizieren - Kleine TräumeDanke, dass Sie BotVS benutzen ^^, BotVS unterstützt bereits BitMEX.

Die Erfinder quantifizieren - Kleine TräumeHallo, das Retesting-System unterstützt BitMEX momentan nicht.

Die Erfinder quantifizieren - Kleine TräumeSie können einen Push-In tief kopieren.

JDanke! Dann muss ich die andere Variable drücken.

Die Erfinder quantifizieren - Kleine TräumeJ groß ~ Die Array, die GetRecords abruft, wird mit Referenzen übermittelt, und wenn man sie beim nächsten Abrufen pusht, erscheint das Element, das pusht.

Die Erfinder quantifizieren - Kleine TräumeIch versuche es, aber warten Sie.

JIch wollte diese letzte Echtzeit-Daten selbst hinzufügen, aber ich hatte ein Problem. exchange.SetContractType (('XBTUSD')) ist eine Währung, die von den US-amerikanischen Banken in den USA verkauft wird. // Daten über GetRecords erhalten records = exchange.GetRecords ((() Log ((records)) // und dann den letzten Wert selbst hinzufügen. Das ist ein sehr schwieriger Fall. Time:records[records.length-1].Time + 3600000, Close:records[records.length-1].Close + 1 Wir sind hier. Log ((records)) // 10 Sekunden Pause zum Wiederaufrufen von GetRecords ((() Schlaf records = exchange.GetRecords ((() Warum ist die Daten, die ich zuletzt hinzugefügt habe, noch da? Log ((records))

Die Erfinder quantifizieren - Kleine TräumeOkay, danke für die Anregung von J, ich werde es testen.

Die Erfinder quantifizieren - Kleine TräumeJa, BITMEX, das ist der Vertrag.

JDas ist klar, aber erst müssen wir die Währung einstellen. Es gibt eine große Anzahl von Anwendungen, die von den Anwendern verwendet werden. records = exchanges.GetRecords

Die Erfinder quantifizieren - Kleine TräumeDas ist eine gute Idee, wir werden es überprüfen.

Der Mann von NingOh, das ist auch möglich, ich versuche es.

Die Erfinder quantifizieren - Kleine TräumeEs ist möglich, mit _N_ eine Kleinteilprobe des Preises zu beschränken. Viele Börsen beschränken das Angebot auf Kleinteile, in der Regel nicht mehr als 4 Kleinteile.

Der Mann von NingDer Traum ist immer früh, Sell ((12319.94890, 100.00000): 400: {"error": {"message":"Invalid price tickSize","name":"HTTPError"}}, das Gefühl ist, dass der Preis nicht in Dollar umgewandelt wurde, so dass der Preis ungewöhnlich abweicht und nicht aufgehängt wird.

Die Erfinder quantifizieren - Kleine TräumeIch werde es gleich testen.