Cum pot tranzacționa derivate cu Jupyter Notebook?
Află cum poți tranzacționa derivate simple cu aceleași instrumente. Hai să folosim funcțiile cuprinzătoare disponibile în python-okx la un nivel superior!
Tip de derivate
Există trei tipuri de derivate disponibile pentru tranzacționare pe OKX:
Expirare
Perpetuu
Opțiuni
Poți accesa Derivate Bitcoin, explicate: expirare, perpetuu și opțiuni pentru a afla mai multe despre caracteristicile diferitelor tipuri de derivate pe OKX. În acest tutorial, vom folosi Perpetuu ca exemplu.
Întrebări frecvente
1. Cum pot obține datele de piață pentru tranzacționarea de derivate cu Jupyter Notebook folosind Obținere date de piață?
Poți, de asemenea, înlocui instType cu EXPIRY sau OPTION pentru informații suplimentare.
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. Cum pot obține perechi de tranzacționare disponibile pentru tranzacționarea de derivate cu Jupyter Notebook folosind Obținere instrumente?
În același mod, alege opțiunea instType pentru care dorești să obții informații.
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 Calculează valoarea noțională a unui contract derivat cu parametrul de instrument ctVal și ctMult
Pentru a calcula valoarea noțională a unui contract derivat (adică contracte la termen, swapuri perpetue și opțiuni), ai nevoie de ctVal (valoare contract) și ctMult (multiplicator contract) din parametrii de instrument.
Valoarea noțională a unui contract derivat poate fi calculată sub forma ctVal * ctMult (unitate: ctValCcy);
De exemplu, din parametrii instrumentului afișați mai jos, putem calcula valoarea noțională a unui contract perpetuu LTC-USD ca: ctVal * ctMult (unitate: ctValccy) = 10 * 1 USD = 10 USD
"instType":"SWAP",
"instId":"LTC-USD-SWAP",
"instFamily":"LTC-USD",
"uly":"LTC-USD",
"settleCcy":"LTC",
"ctVal":"10",
"ctMult":"1",
"ctValCcy":"USD"3. Cum pot verifica soldul pentru tranzacționarea derivatelor cu Jupyter Notebook folosind Obținere sold?
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. Ce mod de cont și mod de marjă/tranzacție sunt eligibile pentru tranzacționarea cu derivate cu Jupyter Notebook?
După cum am menționat în ultimul tutorial, în contul unificat există patru moduri de cont:
mod Spot;
mod Spot și contracte la termen;
mod marjă multimonedă;
mod de marjă de portofoliu.
Reține că numai ultimele trei moduri de marjă, mai precis Spot și contracte la termen, marjă multimonedă și marjă de portofoliu sunt eligibile pentru tranzacționarea derivatelor. Consultă configurarea modului de cont pentru a înțelege diferența între cele patru moduri și cum să comutați între acestea prin intermediul interfeței noastre web.
4.1 Obține configurația curentă a contului din parametrul acctLv în Obținere configurație cont
Asigură-te că te afli în modul de cont corect pentru a tranzacționa derivate.
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. Cum pot seta levierul pentru tranzacționarea cu derivate cu Jupyter Notebook prin Setare levier cont?
Un parametru important pe care trebuie să îl stabilim atunci când tranzacționăm derivate este levierul.
Levierul permite traderilor să intre într-o poziție care valorează mult mai mult, angajând doar o sumă mică de bani. Prin urmare, câștigurile sau pierderile sunt mărite enorm.
Traderii pot avea un levier de până la 125x când tranzacționează derivate pe OKX. Poți citi referințele pentru setarea levierului pentru diferitele niveluri de levier permise în diferite niveluri de poziții.
Iată ce înseamnă glosarele prezentate mai sus:
Levier max.: multiplul maxim de capital împrumutat pentru a crește profitul potențial al unei investiții.
Raport de marjă inițial (IMR): marja necesară pentru deținerea pozițiilor curente.
Raport de marjă de întreținere (MMR): marja minimă necesară pentru a menține pozițiile curente. Lichidarea va avea loc dacă capitalul propriu al contului scade sub marja de întreținere.
De exemplu, când dorești să tranzacționezi 3.000 de contracte perpetue ETHUSDT, poți folosi un levier de până la 75 de ori capitalul pe care îl deții. IMR = 1 ÷ 75 = 1,3% și trebuie să menții 0,8% MMR sau peste pentru a evita lichidarea.
Există 9 scenarii diferite pentru setările levierului prin intermediul API-urilor deschise OKX. Consultă Setare scenarii levier pentru diferitele cazuri.
Pentru swapuri perpetue, există 3 scenarii diferite pentru stabilirea levierului:
Stabilește levierul pentru instrumente SWAP sub modul de tranzacționare în marjă încrucișată la nivel de contract.
Stabilește levierul pentru instrumente SWAP sub modul de tranzacționare în marjă izolată și modul de poziție Cumpărare/vânzare la nivel de contract.
Stabilește levierul pentru instrumente SWAP sub modul de tranzacționare în marjă izolată și modul de poziție Long/Short la nivel de contract și de parte de poziție.
Următorul exemplu arată cum se stabilește levierul pentru un singur contract SWAP și parte de poziție, în comparație cu toate contractele SWAP pentru un anumit activ de bază.
# 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)Reține că parametrul de solicitare posSide este necesar doar când modul de marjă este izolat în modul de poziție Long/short (plasare ordin) pentru instrumente EXPIRY/PERPETUAL (a se vedea scenariile 6 și 9 din Setare scenarii levier).
6. Cum pot plasa ordine pentru tranzacționarea cu derivate cu Jupyter Notebook în diferite moduri de poziție (plasare ordin): Long/Short și Cumpărare/vânzare?
Există două moduri de poziție (plasare ordin) atunci când tranzacționezi EXPIRY și PERPETUAL: Long/Short și Cumpărare/vânzare (net).
Poți schimba modul de poziție (plasare ordin) între Long/Short și Cumpărare/vânzare (net), prin API-ul Setare mod poziție:
result = accountAPI.set_position_mode(
posMode = "long_short_mode"
)
print(result)Sau, alternativ, poți face acest lucru prin Setări în interfața web, după cum urmează:
În modul Cumpărare/vânzare (net), poziția unui anumit contract este cantitatea netă a tranzacțiilor de cumpărare și vânzare. Atunci când plasezi ordine prin Plasare ordin, parametrul de solicitare posSide nu este obligatoriu. Dacă îl accepți, singura valoare validă este net.
În modul Long/Short, pozițiile Long și Short ale unui anumit contract vor fi independente unul de celălalt și trebuie să fie închise separat. Atunci când plasezi ordine prin Plasare ordin, parametrul de solicitare posSide este obligatoriu. Valorile valide sunt Long sau Short. Mai jos este afișat modul în care se stabilește parametrul side (partea tranzacției) și posSide (partea poziției) când plasezi un ordin în diferite scenarii:
Plasează un ordin de cumpărare și deschide/crește o poziție Long: side = buy, posSide = long
Plasează un ordin de vânzare și deschide/crește o poziție Short: side = sell, posSide = short
Plasează un ordin de vânzare și închide/reduce o poziție Long: side = sell, posSide = long
Plasează un ordin de cumpărare și închide/reduce o poziție Short: side = buy, posSide = short Apoi ești gata să plasezi ordine pentru instrumente derivate!
6.1 Plasează un ordin limită prin Plasare ordin
Cumpărarea unui contract swap de 100 BTC-USDT la prețul de 19.000 USDT.
# 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 Plasează un ordin de piață prin Plasare ordin
Cumpărarea unui contract swap de 100 BTC-USDT la prețul de piață.
# 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. Cum pot obține detalii sau un ordin pentru tranzacționarea cu derivate cu Jupyter Notebook folosind Obținere detalii ordin?
În afară de ordId, poți specifica și clOrdId pentru a obține detaliile ordinului.
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)8. Cum pot anula un ordin pentru tranzacționarea cu derivate cu Jupyter Notebook prin intermediul Anulare ordin?
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)9. Cum pot modifica un ordin pentru tranzacționarea cu derivate cu Jupyter Notebook prin intermediul Modificare ordin?
De asemenea, utilizează clOrdId în loc de ordId. Acest exemplu arată o revizuire a unei noi dimensiuni.
result = tradeAPI.amend_order(
instId = "BTC-USDT-SWAP",
ordId = "505073046126960640",
newSz = "80"
)
print(result)10. Cum pot obține lista de ordine active pentru tranzacționarea cu derivate cu Jupyter Notebook folosind Obținere listă ordine?
result = tradeAPI.get_order_list()
print(result)11. Cum pot obține istoricul ordinelor pentru tranzacționarea derivatelor cu Jupyter Notebook prin Obținere istoric ordine (ultimele 7 zile) și Obținere istoric ordine (ultimele 3 luni)?
# 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. Cum pot obține detaliile tranzacției pentru tranzacționarea derivatelor cu Jupyter Notebook prin Obținere detalii tranzacție (ultimele 3 zile) și Obținere detalii tranzacție (ultimele 3 luni)?
# 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. Cum pot obține poziții pentru tranzacționarea cu derivate cu Jupyter Notebook prin Obținere poziții?
Când contul este în modul net, poziția netă a fiecărui contract va fi afișată; când contul este în modul Long/Short, poziția Long sau Short a fiecărui contract va fi afișată separat.
result = accountAPI.get_positions()
print(result)De exemplu, poți urmări profitul și pierderile nerealizate prin intermediul parametrului de răspuns upl.
Mai multe exemple
Pentru mai multe exemple, descarcă întregul Jupyter Notebook aici.
Dacă ai întrebări despre API-urile noastre, te poți alătura comunității noastre API și să le adresezi în comunitate.