Jak mohu obchodovat s deriváty pomocí Jupyter Notebook?

Publikováno dne 28. 9. 2023Aktualizováno dne 22. 12. 2025Doba čtení: 11 min178

Zjistěte, jak můžete se stejnými nástroji provádět jednoduché obchodování s deriváty. Využijme komplexní funkce dostupné v python-okx na vyšší úrovni!

Typ derivátů

Na burze OKX lze obchodovat se třemi typy derivátů:

  • Vypršení platnosti

  • Perpetuální

  • Opce

Můžete přejít na stránku Vysvětlení bitcoinových derivátů: Expiry, perpetuální kontrakty a opce a seznámit se s charakteristikou různých typů derivátů na OKX. V tomto výukovém kurzu použijeme jako příklad Perpetuální kontrakty.

Časté dotazy

1. Jak mohu získat tržní data pro obchodování s deriváty pomocí Jupyter Notebook pomocí funkce Získat tržní data?

Pro informaci můžete také nahradit instType za EXPIRY nebo OPCE.

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. Jak mohu získat dostupné obchodovatelné páry pro obchodování s deriváty pomocí Jupyter Notebook pomocí funkce Získat instrumenty?

Stejným způsobem, vyberte instType, pro který chcete získat informace.

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 Vypočítejte nominální hodnotu derivátového kontraktu s parametrem instrumentu ctVal a ctMult

Pro výpočet nominální hodnoty derivátového kontraktu (tj. future, perpetuální swapy a opce) potřebujete parametry ctVal (hodnota kontraktu) a ctMult (násobitel kontraktu) z parametrů instrumentu.

Nominální hodnotu derivátového kontraktu lze vypočítat jako ctVal * ctMult (jednotka: ctValCcy);

Například z níže uvedených parametrů nástroje můžeme vypočítat nominální hodnotu perpetuálního kontraktu LTC-USD takto: ctVal * ctMult (jednotka: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. Jak mohu zkontrolovat zůstatek pro obchodování s deriváty pomocí Jupyter Notebook pomocí funkce Získat zůstatek?

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. Jaký režim účtu a režim marže/obchodu jsou způsobilé pro obchodování s deriváty pomocí Jupyter Notebook?

Jak jsme se zmínili v minulém tutoriálu, v jednotném účtu existují čtyři režimy účtu:

  • Spotový režim,

  • Režim spotů a futures,

  • Režim multiměnové marže,

  • Režim portfoliové marže.

Pamatujte, že pouze poslední tři režimy marže, konkrétně: spot a futures, multiměnová marže a portfoliová marže, jsou způsobilé k obchodování derivátů. Rozdíly mezi těmito čtyřmi režimy a způsob přepínání mezi nimi prostřednictvím webového uživatelského rozhraní naleznete v části Postup nastavení režimu účtu.

4.1 Získejte aktuální konfiguraci účtu z parametru acctLv v příkazu Získat konfiguraci účtu

Ujistěte se, že jste v režimu správného účtu pro obchodování s deriváty.

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. Jak mohu nastavit finanční páku pro obchodování s deriváty pomocí Jupyter Notebook přes funkci Nastavit finanční páku účtu?

Jedním z důležitých parametrů, které musíme při obchodování s deriváty nastavit, je finanční páka.

Finanční páka umožňuje obchodníkům vstoupit do pozice, která má mnohem větší hodnotu, a to pouze s malou částkou peněz. Zisky nebo ztráty se tak výrazně zvětšují.

Obchodníci mohou při obchodování s deriváty na OKX využít až 125× finanční páku. Můžete si přečíst odkazy na nastavení finanční páky pro různé úrovně finanční páky povolené v rámci různých úrovní pozic.

Níže naleznete informace o tom, co znamenají výše uvedené termíny:

  • Max. finanční páka: Maximální násobek vypůjčeného kapitálu, který zvyšuje potenciální výnos investice.

  • Počáteční pákový poměr (IMR): Marže potřebná pro držení současných pozic.

  • Poměr udržovací marže (MMR): Minimální marže potřebná k udržení stávajících pozic. K likvidaci dojde, pokud vlastní kapitál na účtu klesne pod udržovací marži.

Například když chcete obchodovat s 3 000 perpetuálními kontrakty ETHUSDT, můžete využít finanční páku maximálně 75násobku kapitálu, který vlastníte. IMR = 1 / 75 = 1,3 %, a abyste se vyhnuli likvidaci, musíte udržovat MMR 0,8 % nebo vyšší.

Existuje 9 různých scénářů pro nastavení finanční páky prostřednictvím otevřeného rozhraní API OKX. Různé případy naleznete v části Scénáře finanční páky.

U perpetuálních swapů existují 3 různé scénáře pro nastavení finanční páky:

  • Nastavení finanční páky pro instrumenty SWAP v rámci obchodování s křížovou marží na úrovni kontraktu.

  • Nastavení finanční páky pro instrumenty SWAP v režimu obchodování s izolovanou marží a v režimu pozice nákup/prodej na úrovni kontraktu.

  • Nastavení finanční páky pro instrumenty SWAP v režimu obchodování s izolovanou marží a v režimu pozice long/short na úrovni kontraktu a strany pozice.

Následující příklad ukazuje, jak nastavit finanční páku pro jeden kontrakt SWAP a stranu pozice ve srovnání se všemi kontrakty SWAP pro určitý podkladový nástroj.

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)

Pamatujte, že parametr požadavku posSide je vyžadován pouze v případě, že je režim marže „s izolovanou marží“ v režimu pozice long/short (zadání objednávky) pro instrumenty EXPIRY / PERPETUÁLNÍ (viz scénáře 6 a 9 ve scénářích Nastavení finanční páky).

6. Jak mohu zadávat objednávky pro obchodování derivátů pomocí Jupyter Notebook v různých režimech pozice (zadání objednávky): long/short a nákup/prodej?

Při obchodování EXPIRY a PERPETUÁLNÍCH KONTRAKTŮ existují dva režimy pozice (zadání objednávky): long/shortnákup/prodej (net).

Režim pozice (zadání objednávky) můžete změnit mezi long/short a buy/sell (net) pomocí API Režim nastavení pozice:

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

Popřípadě to můžete provést prostřednictvím Nastavení na webu, jak je uvedeno níže:

V režimu nákup/prodej (net) je pozice určitého kontraktu čistým množstvím vašich nákupních a prodejních obchodů. Při zadávání objednávek pomocí funkce Zadat objednávku není parametr požadavku posSide povinný. Pokud jej předáte, jedinou platnou hodnotou je net.

V režimu long/short budou long a short pozice určitého kontraktu na sobě nezávislé a je třeba je uzavřít odděleně. Při zadávání objednávek prostřednictvím funkce Zadat objednávku je parametr požadavku posSide povinný. Platné hodnoty jsou long nebo short. Níže je ukázáno, jak nastavit parametr side (strana obchodu) a posSide (strana pozice) při zadávání objednávky v různých scénářích:

  • Zadejte nákupní objednávku a otevřete/zvýšíte dlouhou pozici: side = nákup, posSide = long

  • Zadejte prodejní objednávku a otevřete/zvýšíte krátkou pozici: side = prodej, posSide = short

  • Zadejte prodejní objednávku a uzavřete/snižte dlouhou pozici: side = prodej, posSide = long

  • Zadejte nákupní objednávku a uzavřete/snižte short pozici: side = nákup, posSide = short .Pak máte vše nastavené k zadávání objednávek derivátů!

6.1 Zadání limitní objednávky prostřednictvím funkce Zadat objednávku

Nákup 100 swapových kontraktů BTC-USDT za cenu 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 Zadání market order prostřednictvím funkce Zadat objednávku

Nákup 100 swapových kontraktů BTC-USDT za tržní cenu.

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. Jak mohu získat podrobnosti nebo objednávku pro obchodování s deriváty pomocí Jupyter Notebook prostřednictvím funkce Získat podrobnosti objednávky?

Kromě ordId můžete zadat také clOrdId a získat tak podrobnosti o objednávce.

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

8 Jak mohu zrušit objednávku na obchodování s deriváty pomocí Jupyter Notebook prostřednictvím funkce Zrušit objednávku?

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

9. Jak mohu změnit objednávku na obchodování s deriváty pomocí Jupyter Notebook prostřednictvím funkce Upravit objednávku?

Místo ordId můžete také použít clOrdId. Tento příklad ukazuje revizi nové velikosti.

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

10. Jak mohu získat seznam otevřených objednávek pro obchodování s deriváty pomocí Jupyter Notebook prostřednictvím funkce Získat seznam objednávek?

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

11. Jak mohu získat historii objednávek pro obchodování s deriváty pomocí Jupyter Notebook prostřednictvím funkcí Získat historii objednávek (posledních 7 dní) a Získat historii objednávek (poslední 3 měsíce)?

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. Jak mohu získat podrobnosti o transakcích ro obchodování s deriváty pomocí zápisníku Jupyter prostřednictvím funkcí Získat podrobnosti o transakcích (poslední 3 dny) a Získat podrobnosti o transakcích (poslední 3 měsíce)?

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. Jak mohu získat pozice pro obchodování s deriváty pomocí Jupyter Notebook prostřednictvím funkce Získat pozice?

Pokud je váš účet v režimu net, zobrazí se net pozice každého kontraktu; pokud je váš účet v režimu long/short, zobrazí se dlouhá nebo krátká pozice každého kontraktu zvlášť.

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

Například můžete sledovat nerealizovaný zisk a ztrátu prostřednictvím parametru odezvy upl.

Další příklady

Pro další příklady si prosím stáhněte kompletní Jupyter Notebook zde.

Pokud máte jakékoli dotazy k našim rozhraním API, můžete se připojit k naší komunitě API a zeptat se v naší komunitě.