Wie kann ich den Derivate-Handel mit dem Jupyter-Notebook durchführen?

Veröffentlicht am 28. Sept. 2023Aktualisiert am 25. Okt. 2024Lesezeit: 9 Min.80

Finden Sie heraus, wie Sie mit denselben Tools einfachen Derivate-Handel durchführen können. 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

Sie können zu Bitcoin-Derivate, erklärt: Futures, Perpetual Swaps und Optionen gehen, um mehr über die Eigenschaften verschiedener Derivatearten auf OKX zu erfahren. In diesem Tutorial verwenden wir Perpetual als Beispiel.

Häufig gestellte Fragen (FAQ)

1. Wie kann ich die Marktdaten von Get market data abrufen?

Sie können instType auch durch EXPIRY oder OPTION ersetzen, um 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 verfügbare Handelspaare von Get instruments erhalten?

Wählen Sie, auf gleiche Weise, den instType aus, für den Sie Informationen erhalten möchten.

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 Berechnen Sie den Nominalwert eines Derivate-Kontrakts mit dem Instrument-Parameter ctVal und ctMult

Zur Berechnung des Nominalwerts eines Derivate-Kontrakts (d. h. Future, Perpetual Swaps und Optionen) benötigen Sie ctVal (Kontraktwert) und ctMult (Kontraktmultiplikator) aus den Instrumentparametern.

Der Nominalwert eines Derivate-Kontrakts kann berechnet werden als ctVal * ctMult (unit: 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 mein Guthaben unter Get balance ü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. Was ist ein Kontomodus und ein Margin-/Handelsmodus, der zum Handel von Derivaten berechtigt ist?

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

  • Spot-Modus,

  • Spot- und Futures-Modus,

  • MultiwährMulti-Währungsmargin-Modus,

  • Portfolio-Margin-Modus.

Beachten Sie, dass nur die letzten drei Margin-Modi, d. h. Sport und Futures, Multi-Währungsmargin und Portfolio-Margin zum Derivatehandel berechtigt sind. Um die Unterschiede zwischen den vier Modi und die Art und Weise des Wechsels zwischen diesen Modi über unsere Web-Benutzeroberfläche zu verstehen, lesen Sie den Artikel So richten Sie den Kontomodus ein.

4.1 Erhalten Sie die aktuelle Konto-Konfiguration aus dem Parameter acctLv in Get account configuration erhalten

Achten Sie darauf, dass Sie sich im richtigen Kontomodus befinden, 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 über Set account leverage erhalten?

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

Der Hebel ermöglicht es den Händlerinnen und Händlern, eine Position zu eröffnen, die viel mehr wert ist, indem sie nur einen geringen Geldbetrag investieren. Die Gewinne oder Verluste sind daher erheblich vergrößert.

Händlerinnen und Händler können bis einen Hebel von bis zu 125x einstellen, wenn sie Derivate auf OKX handeln. Lesen Sie die Referenzen zur Einstellung des Hebels für unterschiedliche Hebelstufen, die für verschiedene Positionenstufen zulässig sind.

CT-web-spottrading-howtoapi-6

Im Folgenden werden die Bedeutungen der oben aufgeführten Glossare erläutert:

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

  • Anfängliches Margin-Verhältnis (IMR): Für das Halten aktueller Positionen erforderliche Margin.

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

Wenn Sie beispielsweise 3.000 ETHUSDT-Perpetual-Kontrakte handeln möchten, können Sie maximal das 75-fache des Kapitals, das Sie besitzen, nutzen. IMR = 1 / 75 = 1,3 %, und Sie müssen 0,8 % MMR oder mehr halten, um eine Liquidation zu vermeiden.

Es gibt 9 verschiedene Szenarien für die Nutzung von Einstellungen über die offenen OKX-APIs. Siehe auch Set leverage scenarios für verschiedene Fälle fest.

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

  • Hebel für SWAP-Instrumente unter Cross-Margin-Trade auf Kontraktebene einstellen.

  • Hebel für SWAP-Instrumente im Tradingmodus Isolierte Margin und den Kauf/Verkauf-Positionsmodus auf Kontraktebene einstellen.

  • Hebel für SWAPInstrumente im Tradingmodus Isolierte Margin und den Long/Short-Positionsmodus auf Kontrakt- und Positionsseitenebene einstellen.

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

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)

Der Anforderungsparameter posSide ist nur erforderlich, wenn der Margin-Modus im Modus long/short Position (Order-Platzierung) für EXPIRY/PERPETUAL-Instrumente isoliert ist (siehe Szenario 6 und 9 in Set leverage scenarios).

6. Wie kann ich Orders unter verschiedenen Positionsmodi (Order-Platzierung) platzieren: Long/Short und Kauf/Verkauf?

Beim Handel von EXPIRY und PERPETUAL gibt es zwei Positionsmodi (Order-Platzierung): Long/Short und Kauf/Verkauf (net).

Sie können den Positionsmodus (Orderplatzierung) zwischen Long/Short und Kauf/Verkauf (net) über folgende API ändern: Set position mode:

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

Oder alternativ können Sie dies über Einstellungen im Web wie folgt erledigen:

CT-web-derivativestrading-howtoapi-9

Im Kauf/Verkauf (net) Modus, ist die Position eines bestimmten Kontrakts die Nettomenge Ihrer Kauf- und Verkaufshandelsgeschäfte. Wenn Sie Orders über Place order platzieren, ist der Anfrageparameter posSide nicht obligatorisch. Wenn Sie es durchgeben, ist der einzige gültige Wert net.

Im Long/Short-Modus, sind Long- und Short-Positionen eines bestimmten Kontrakts unabhängig voneinander und müssen separat geschlossen werden. Wenn Sie Orders über Place order platzieren, ist der Anfrageparameter posSide obligatorisch. Gültige Werte sind long oder short. Nachfolgend zeigen wir, wie Sie die Parameter side (Seite des Trades) und posSide (Seite der Position) festlegen, wenn Sie eine Order unter verschiedenen Szenarien platzieren:

  • Platzieren Sie eine Kauf-Order und eröffnen/erhöhen Sie eine Long-Position: side = buy, posSide = long

  • Platzieren Sie eine Verkaufs-Order und eröffnen/erhöhen Sie eine Short-Position: side = sell, posSide = short

  • Platzieren Sie eine Verkaufs-Order und schließen/reduzieren Sie eine Long-Position: side = sell, posSide = long

  • Platzieren Sie eine Kauf-Order und schließen/verringern Sie eine Short-Position: side = buy, posSide = short Dann sind Sie bereit, Derivate-Orders zu platzieren!

6.1 Eine Limit-Order über Place order platzieren

Kauf eines 100 BTC-USDT Swap-Kontrakts zum Preis von 19000 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 Eine Market-Order über Place order platzieren

Kauf eines 100 BTC-USDT Swap-Kontrakts 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/Zustand einer bestimmten Order erhalten (siehe Get order details)?

Neben ordId können Sie auch clOrdId angeben, um Orderdetails zu erhalten.

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

8. Wie kann ich eine Order über Get order details 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 über Amend order ändern?

Sie verwenden ebenfalls clOrdId anstelle von ordId. 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 die Liste der offenen Orders über Get order List erhalten?

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

11. Wie kann ich den Order-Verlauf über Get order history (letzte 7 Tage) und Get order history (letzte 3 Monate) erhalten?

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 erhalte ich Transaktionsdetails über Get transaction details (letzte 3 Tage) und Get transaction details (letzte 3 Monate) erhalten?

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 über Get positions erhalten?

Wenn Ihr Konto im net-Modus ist, wird die net-Position jedes Kontrakts angezeigt. Wenn sich Ihr Konto im Long/Shor-Modus befindet, werden die Long- oder Short-Position jedes Kontrakts separat angezeigt.

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

Sie können beispielsweise Ihren nicht realisierter Gewinn und Verlust durch den Parameter upl nachverfolgen.

Weitere Beispiele

Für weitere Beispiele laden Sie bitte das vollständige Jupyter-Notebook hier herunter.

Wenn Sie Fragen zu unseren APIs haben, können Sie unserer API-Community beitreten und sie in der Community stellen.