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

Publikováno dne 28. 9. 2023Aktualizováno dne 25. 10. 2024Doba čtení: 10 min78

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.

Nejčastější dotazy

1. Jak mohu získat tržní data pomocí Získání tržních dat?

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 pomocí Získání instrumentů?

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 pomyslné hodnoty derivátového kontraktu (tj. futures, perpetuálních swapů a opcí) potřebujete z parametrů instrumentu ctVal (hodnota kontraktu) a ctMult (multiplikátor kontraktu).

Pomyslnou 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 pomyslnou hodnotu trvalé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 pomocí 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ý je režim účtu a režim marže/obchodu, který je způsobilý pro obchodování s deriváty?

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 marže portfolia.

Pamatujte, že pouze poslední tři režimy marže, konkrétně: spot a futures, multiměnová maržemarže portfolia, 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ískání aktuální konfigurace účtu z parametru acctLv v Získání konfigurace úč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 nastavit finanční páku pomocí Nastavení finanční páky úč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ž 125násobnou 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.

CT-web-spottrading-howtoapi-6

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.

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

Například když chcete obchodovat s 3000 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. Viz Scénáře různého nastavení finanční páky pro různé případy.

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 SWAPv 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 SWAPv 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Í KONTRAKTY (viz scénáře 6 a 9 v Scénáře nastavení finanční páky).

6. Jak mohu zadávat objednávky 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/shortbuy/sell (net) prostřednictvím rozhraní API Nastavit režim 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:

CT-web-derivativestrading-howtoapi-9

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ů. Když zadáváte objednávky přes 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 Zadejte market prostřednictvím 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/stav určité objednávky (viz Získání podrobností 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 prostřednictvím Zrušení objednávky?

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

9. Jak upravit objednávku prostřednictvím 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 open orders prostřednictvím Získejte seznam objednávek?

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

11. Jak mohu získat historii objednávek prostřednictvím Získat historii objednávek (posledních 7 dní)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 prostřednictvím Získat podrobnosti o transakcích (poslední 3 dny)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 prostřednictvím 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 long nebo short 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ě.