Wie kann ich mit dem Jupyter Notebook Derivate handeln?

Veröffentlicht am 28. Sept. 2023Aktualisiert am 23. Dez. 2025Lesezeit: 10 Min.178

Finde heraus, wie du mit denselben Tools einfachen Derivate-Trades durchführen kannst. Nutzen wir die verfügbaren umfangreichen Funktionen in python-okx auf einem höheren Niveau!

Derivate-Arten

Auf OKX sind drei Arten von Derivaten für den Handel verfügbar:

  • Expiry

  • Perpetual

  • Optionen

Unter Bitcoin-Derivate erklärt: Expiry, Perpetual und Optionen erfährst du mehr über die Eigenschaften verschiedener Derivatearten auf OKX. In diesem Tutorial verwenden wir Perpetuals als Beispiel.

FAQ

1. Wie kann ich die Marktdaten für den Derivatehandel mit dem Jupyter Notebook über Marktdaten abrufen erhalten?

Du kannst instType auch durch EXPIRY oder OPTION ersetzen, um weitere Informationen zu erhalten.

Python
     import okx.MarketData as MarketData

   flag = "1"  # live trading: 0, demo trading: 1

   marketDataAPI = MarketData.MarketAPI(flag = flag)

   result = marketDataAPI.get_tickers(instType = "SWAP")
   print(result)

2. Wie kann ich mit dem Jupyter Notebook über Instrumente abrufen verfügbare Handelspaare für den Derivatehandel abrufen?

Wähle auf die gleiche Weise den instType aus, zu dem du Informationen erhalten möchtest.

Python
import okx.PublicData as PublicData

if __name__ == '__main__':

    flag = "1"  # live trading: 0, demo trading: 1

    publicDataAPI = PublicData.PublicAPI(flag = flag)

    result = publicDataAPI.get_instruments(instType = "SWAP")
    print(result)

2.1 Berechne den Nominalwert eines Derivatkontrakts mit den Instrumentenparametern ctVal und ctMult.

Um den Nominalwert eines Derivatkontrakts (d. h. Futures, Perpetual Swaps und Optionen) zu berechnen, benötigst du ctVal (Kontraktwert) und ctMult (Kontraktmultiplikator) aus den Instrumentenparametern.

Der Nominalwert eines Derivatkontrakts kann wie folgt berechnet werden: ctVal * ctMult (Einheit: ctValCcy);

Aus den unten aufgeführten Instrumentenparametern können wir beispielsweise den Nominalwert eines LTC-USD-Perpetual-Kontrakts berechnen: ctVal \* ctMult (unit:ctValccy) = 10 \* 1 USD = 10 USD

JSON
        "instType":"SWAP",
        "instId":"LTC-USD-SWAP",
        "instFamily":"LTC-USD",
        "uly":"LTC-USD",
        "settleCcy":"LTC",
        "ctVal":"10",
        "ctMult":"1",
        "ctValCcy":"USD"

3. Wie kann ich mit dem Jupyter Notebook unter Verwendung von Guthaben abrufen das Guthaben für den Derivatehandel überprüfen?

Python
import okx.Account as Account
flag = "1"  # live trading:0, demo trading: 1

accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)

result = accountAPI.get_account_balance()
print(result)

4. Welcher Kontomodus und welcher Margin-/Handelsmodus sind für den Derivatehandel mit dem Jupyter Notebook zulässig?

Wie in unserem letzten Tutorial erwähnt, gibt es in einem einheitlichen Konto vier Kontomodi:

  • Spot-Modus,

  • Spot- und Futures-Modus,

  • Multiwährungsmargin-Modus,

  • Portfolio-Margin-Modus.

Beachte, dass nur die letzten drei Margin-Modi, nämlich Spot und Futures, Multiwährungs-Margin und Portfolio-Margin, für den Derivatehandel zugelassen sind. Schau dir So richtest du den Kontomodus ein an, um die Unterschiede zwischen den vier Modi zu verstehen und zu erfahren, wie du über unsere Web-Benutzeroberfläche zwischen ihnen wechseln kannst.

4.1 Rufe die aktuelle Konfiguration des Kontos über den Parameter „acctLv” in Kontokonfiguration abrufen ab.

Achte darauf, dass du dich im richtigen Kontomodus befindest, um Derivate zu handeln.

Python
import okx.Account as Account

flag = "1"  # live trading: 0, demo trading: 1

accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
result = accountAPI.get_account_config()
print(result)

if result['code'] == "0":
    acctLv = result["data"][0]["acctLv"]
    if acctLv == "1":
        print("Simple mode")
    elif acctLv == "2":
        print("Single-currency margin mode")
    elif acctLv == "3":
        print("Multi-currency margin mode")
    elif acctLv == "4":
        print("Portfolio margin mode")

5. Wie kann ich den Hebel für den Derivatehandel mit dem Jupyter Notebook über Kontohebel festlegen einstellen?

Ein wichtiger Parameter, den wir beim Handel mit Derivaten festlegen müssen, ist der Hebel.

Der Hebel ermöglicht es Tradern, eine Position zu eröffnen, die viel mehr wert ist, indem sie nur einen geringen Geldbetrag investieren. Die Gewinne oder Verluste sind daher erheblich verstärkt.

Trader können einen Hebel von bis zu 125x einstellen, wenn sie Derivate auf OKX handeln. In den Referenzen zur Einstellung des Hebels findest du die unterschiedlichen Hebelstufen, die für verschiedene Positionenstufen zulässig sind.

Hier ist die Bedeutung der oben aufgeführten Glossare:

  • Max. Hebel: Das maximale Vielfache des geliehenen Kapitals, um die potenzielle Rendite einer Investition zu erhöhen.

  • Anfangsmargin-Verhältnis (IMR): Die für das Halten aktueller Positionen erforderliche Margin.

  • Maintenance-Margin-Verhältnis (MMR): Die für das Halten aktueller Positionen mindestens erforderliche Margin. Die Liquidation erfolgt, wenn das Eigenkapital des Kontos unter die Maintenance-Margin fällt.

Wenn du beispielsweise 3.000 ETHUSDT-Perpetual-Kontrakte handeln möchtest, kannst du maximal das 75-fache des Kapitals, das du besitzt, nutzen. IMR = 1 / 75 = 1,3 %, und du musst 0,8 % MMR oder mehr halten, um eine Liquidation zu vermeiden.

Es gibt 9 verschiedene Szenarien für Hebeleinstellungen über OKX Open APIs. Unter Hebel-Szenarien festlegen erfährst du mehr über die verschiedenen Fälle.

Bei Perpetual-Swaps gibt es drei verschiedene Szenarien für die Hebeleinstellung:

  • Hebel für SWAP-Instrumente bei einem Cross-Margin-Trade auf Kontraktebene festlegen.

  • Hebel für SWAP-Instrumente im isolierten Margin-Modus und im Kauf-/Verkaufspositionsmodus auf Kontraktebene festlegen.

  • Hebel für SWAP-Instrumente im isolierte Margin-Modus und im Long-/Short-Positionsmodus auf Kontrakt und Positionsebene festlegen.

Das folgende Beispiel zeigt, wie der Hebel für einen einzelnen SWAP-Kontrakt und eine Positionsseite festgelegt wird, im Vergleich zu allen SWAP-Kontrakten für einen bestimmten Basiswert.

Bash
# Set leverage to be 5x for all cross-margin BTC-USDT SWAP positions,
# by providing the SWAP instId
result = accountAPI.set_leverage(
    instId = "BTC-USDT-SWAP",
    lever = "5",
    mgnMode = "cross"
)
print(result)

# In buy/sell position mode, set leverage to be 5x 
# for all isolated-margin BTC-USDT SWAP positions
# by providing the SWAP instId
result = accountAPI.set_leverage(
    instId = "BTC-USDT-SWAP",
    lever = "5",
    mgnMode = "isolated"
)
print(result)

# In long/short position mode, set leverage to be 5x
# for an isolated-margin BTC-USDT-SWAP long position;
# This does NOT affect the leverage of the BTC-USDT-SWAP
# short positions
result = accountAPI.set_leverage(
    instId = "BTC-USDT-SWAP",
    lever = "5",
    posSide = "long",
    mgnMode = "isolated"
)
print(result)

Beachte, dass der Anfrageparameter posSide nur erforderlich ist, wenn der Margin-Modus für Long-/Short-Positionen (Orderplatzierung) für EXPIRY/ PERPETUAL-Instrumente isoliert ist (siehe Szenario 6 und 9 in Hebelszenarien festlegen).

6. Wie kann ich mit dem Jupyter Notebook Orders beim Derivatehandel in verschiedenen Positionsmodi (Auftragserteilung) platzieren: Long/Short und Kauf/Verkauf?

Beim Handel mit EXPIRY und PERPETUAL gibt es zwei Positionsmodi (Orderplatzierung): Long/Short und Kauf/Verkauf (netto).

Du kannst den Positionsmodus (Orderplatzierung) zwischen Long/Short und Kauf/Verkauf (netto) über die API Positionsmodus festlegen ändern:

SQL
result = accountAPI.set_position_mode(
    posMode = "long_short_mode"
)
print(result)

Alternativ kannst du dies im Web auch über Einstellungen wie unten beschrieben tun:

Im Modus Kauf/Verkauf (netto) entspricht die Position eines bestimmten Kontrakts der Nettomenge deiner Kauf- und Verkaufstrades. Wenn du Orders über Order platzieren platzierst, ist der Anfrageparameter posSide nicht obligatorisch. Wenn du ihn übergibst, ist der einzige gültige Wert net.

Im Long-/Short-Modus sind Long- und Short-Positionen eines bestimmten Kontrakts voneinander unabhängig und müssen separat geschlossen werden. Wenn du Orders über Order platzieren platzierst, ist der Anfrageparameter posSide obligatorisch. Gültige Werte sind Long oder Short. Im Folgenden wird gezeigt, wie du die Parameter side (Seite des Trades) und posSide (Seite der Position) einstellst, wenn du eine Order unter verschiedenen Szenarien platzierst:

  • - Kauforder platzieren und eine Long-Position eröffnen/erhöhen: side = Kauf, posSide = Long

  • - Verkaufsorder platzieren und eine Short-Position eröffnen/erhöhen: side = Verkauf, posSide = Short

  • - Verkaufsorder platzieren und eine Long-Position schließen/reduzieren: side = Verkauf, posSide = Long

  • Kauforder platzieren und eine Short-Position schließen/reduzieren: side = Kauf, posSide = Short Dann kannst du Derivate-Orders platzieren!

6.1 Platziere eine Limit-Order über Order platzieren

Kauf von 100 BTC-USDT-Swap-Kontrakten zum Preis von 19.000 USDT.

SQL
# limit order
result = tradeAPI.place_order(
    instId = "BTC-USDT-SWAP",
    tdMode = "isolated",
    side = "buy",
    posSide = "net",
    ordType = "limit",
    px = "19000",
    sz = "100"
)
print(result)

if result["code"] == "0":
    print("Successful order request,order_id = ",result["data"][0]["ordId"])
else:
    print("Unsuccessful order request,error_code = ",result["data"][0]["sCode"], ", Error_message = ", result["data"][0]["sMsg"])

6.2 Platziere eine Market-Order über Order platzieren

Kauf von 100 BTC-USDT-Swap-Kontrakten zum Marktpreis.

SQL
# market order
result = tradeAPI.place_order(
    instId = "BTC-USDT-SWAP",
    tdMode = "isolated",
    side = "buy",
    posSide = "net",
    ordType = "market",
    sz = "100"
)
print(result)

if result["code"] == "0":
    print("Successful order request,order_id = ",result["data"][0]["ordId"])
else:
    print("Unsuccessful order request,error_code = ",result["data"][0]["sCode"], ", Error_message = ", result["data"][0]["sMsg"])

7. Wie kann ich Details oder eine Order für den Derivatehandel mit dem Jupyter Notebook über Orderdetails abrufen abrufen?

Neben ordId kannst du auch clOrdId angeben, um Orderdetails abzurufen.

SQL
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)

8. Wie kann ich eine Order für den Derivatehandel mit dem Jupyter Notebook über Order stornieren stornieren?

Perl
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)

9. Wie kann ich eine Order für den Derivatehandel mit dem Jupyter Notebook über Order ändern ändern?

Du kannst auch clOrdId anstelle von ordId verwenden. Dieses Beispiel zeigt die Überarbeitung einer neuen Größe.

SQL
result = tradeAPI.amend_order(
    instId = "BTC-USDT-SWAP", 
    ordId = "505073046126960640",
    newSz = "80"
)
print(result)

10. Wie kann ich mit dem Jupyter Notebook über Order-Liste abrufen eine Liste der offenen Orders für den Derivatehandel abrufen?

SQL
result = tradeAPI.get_order_list()
print(result)

11. Wie kann ich den Order-Verlauf für den Derivatehandel mit dem Jupyter Notebook über Order-Verlauf abrufen (letzte 7 Tage) und Order-Verlauf abrufen (letzte 3 Monate) abrufen?

SQL
# Get order history (last 7 days)
result = tradeAPI.get_orders_history(
    instType = "SWAP"
)
print(result)

# Get order history (last 3 months)
result = tradeAPI.get_orders_history_archive(
    instType = "SWAP"
)
print(result)

12. Wie kann ich Transaktionsdetails für den Derivatehandel mit dem Jupyter Notebook über Transaktionsdetails abrufen (letzte 3 Tage) und Transaktionsdetails abrufen (letzte 3 Monate) abrufen?

SQL
# Get transaction details (last 3 days)
result = tradeAPI.get_fills()
print(result)

# Get transaction details (last 3 months)
result = tradeAPI.get_fills_history(
    instType = "SWAP"
)
print(result)

13. Wie kann ich Positionen für den Derivatehandel mit dem Jupyter Notebook über Positionen abrufen abrufen?

Wenn sich dein Konto im Netto-Modus befindet, wird die Netto-Position jedes Kontrakts angezeigt. Befindet sich dein Konto im Modus Long/Short, wird die Long- oder Short-Position jedes Kontrakts separat angezeigt.

SQL
result = accountAPI.get_positions()
print(result)

Du kannst beispielsweise deine nicht realisierten Gewinne und Verluste über den Antwortparameter upl verfolgen.

Weitere Beispiele

Für weitere Beispiele lade bitte das vollständige Jupyter Notebook hier herunter.

Wenn du Fragen zu unseren APIs hast, kannst du unserer API-Community beitreten und sie in der Community stellen.