Hvordan kan jeg handle derivater med Jupyter Notebook?
Finn ut hvordan du kan handle enkle derivater med de samme verktøyene. La oss bruke de omfattende funksjonene som er tilgjengelige i python-okx på et høyere nivå!
Derivattyper
Det finnes tre typer derivater som kan handles på OKX:
Utløp
Perpetual
Alternativer
Du kan gå til Bitcoin-derivater, forklart: Utløp, evige og opsjoner for å lære om egenskapene til ulike typer derivater på OKX. I denne veiledningen skal vi bruke Perpetual som et eksempel.
Vanlige spørsmål
1. Hvordan kan jeg hente markedsdata for derivathandel med Jupyter Notebook ved å bruke Hent markedsdata?
Du kan også erstatte instType med EXPIRY eller OPTION for din informasjon.
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. Hvordan kan jeg få tilgjengelige handelspar for derivathandel med Jupyter Notebook ved å bruke Hent instrumenter?
På samme måte, velg instType som du ønsker å få informasjon om.
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 Beregn den nominelle verdien av en derivatkontrakt med instrumentparameteren ctVal og ctMult
For å beregne den nominelle verdien av en derivatkontrakt (dvs. for fremtidige kontrakter, evige swaps og opsjoner), trenger du ctVal (kontraktsverdi) og ctMult (kontraktsmultiplikator) fra instrumentparametrene.
Den nominelle verdien av en derivatkontrakt kan beregnes som ctVal * ctMult (enhet: ctValCcy);
For eksempel, ut fra instrumentparametrene vist nedenfor, kan vi beregne den nominelle verdien av en LTC-USD evigvarende kontrakt som: ctVal * ctMult (enhet: 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. Hvordan kan jeg sjekke saldoen din for derivathandel med Jupyter Notebook ved å bruke Hent saldo?
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. Hvilken kontotype og margin-/handelsmodus er kvalifisert for derivathandel med Jupyter Notebook?
Som nevnt i vår siste veiledning, finnes det i en samlet konto fire kontomoduser som vi nevnte i den siste veiledningen:
Spotmodus,
Spot- og futuresmodus,
Multivalutamarginmodus,
Porteføljemarginmodus.
Merk at kun de siste tre marginmodusene, nemlig spot og futures, mangfoldig valuta-margin og porteføljemargin, er kvalifisert for derivathandel. Vennligst se på hvordan du setter opp kontomodus for å forstå forskjellene mellom de fire modusene og hvordan du bytter mellom dem via vår nettbaserte brukergrensesnitt.
4.1 Hent den nåværende kontokonfigurasjonen fra acctLv-parameteren i Hent kontokonfigurasjon
Sørg for at du er i riktig kontomodus for å handle derivater.
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. Hvordan kan jeg sette giring for derivathandel med Jupyter Notebook via Sett kontogiring?
En viktig parameter vi må sette når vi handler derivater er giringsgrad.
Giring lar tradere gå inn i en posisjon som er mye mer verdt ved å kun satse en liten pengesum. The gains or losses are therefore greatly magnified.
Handlere kan ha opptil 125x giring når de handler derivater på OKX. Du kan lese referanser for innstilling av giring for forskjellige nivåer av giring som er tillatt under ulike nivåer av posisjoner.
Her er hva ordlistene vist ovenfor betyr:
Maks. giring: Den maksimale multiplikatoren av lånt kapital for å øke det potensielle avkastningen på en investering.
Initial margin ratio (IMR): Margin som kreves for å beholde nåværende posisjoner.
Vedlikeholdsmarginforhold (MMR): Minimumsmargin som kreves for å opprettholde gjeldende posisjoner. Likvidasjon vil finne sted hvis kontoen egenkapital faller under vedlikeholdsmarginen.
For eksempel, når du vil handle 3000 ETHUSDT evige kontrakter, kan du bruke en maks på 75 ganger kapitalen du har. IMR = 1 / 75 = 1,3 %, og du må opprettholde 0,8 % MMR eller høyere for å unngå likvidasjon.
Det finnes 9 forskjellige scenarier for innstillinger av giring via OKX åpne API-er. Vennligst se Sett giringsscenarier for ulike tilfeller.
For evige swaps finnes det 3 forskjellige scenarier for innstilling av giring:
Angi giring for SWAP-instrumenter under cross-margin-handel på kontraktsnivå.
Angi giring for SWAP-instrumenter under isolert-marginal-handelsmodus og kjøp/salg-posisjonsmodus på kontraktsnivå.
Angi giring for SWAP-instrumenter under isolert margin handelsmodus og lang/kort posisjonsmodus på kontrakt- og posisjonsnivå.
Følgende eksempel viser hvordan man setter gearing for en enkelt SWAP-kontrakt og posisjonsside, sammenlignet med på tvers av alle SWAP-kontrakter for et bestemt underliggende.
# 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)Merk at forespørselsparameteren posSide kun er påkrevd når marginmodus er isolert i long/short-posisjonsmodus (ordreplassering) for UTLØP/PERPETUELL-instrumenter (se scenario 6 og 9 i Sett giringsscenarier).
6. Hvordan kan jeg legge inn ordre for derivathandel med Jupyter Notebook under forskjellige posisjonsmodus (ordreplassering): long/short og kjøp/salg?
Det finnes to posisjonsmoduser (ordreplassering) når man handler EXPIRY og PERPETUAL: long/short og kjøp/salg (netto).
Du kan endre posisjonsmodusen (rekkefølgen på plassering) mellom lang/kort og kjøp/salg (netto), via API-en Sett posisjonsmodus:
result = accountAPI.set_position_mode(
posMode = "long_short_mode"
)
print(result)Eller alternativt kan du gjøre det via Innstillinger på nettet som vist nedenfor:
I kjøp/salg (netto)-modus er posisjonen til en bestemt kontrakt den netto mengden av dine kjøps- og salgshandler. Når du legger inn bestillinger via Legg inn bestilling, er ikke forespørselsparameteren posSide obligatorisk. Hvis du sender det gjennom, er den eneste gyldige verdien netto.
I long/kort-modus vil lange og korte posisjoner i en bestemt kontrakt være uavhengige av hverandre og må lukkes separat. Når du legger inn bestillinger via Legg inn bestilling, er forespørselsparameteren posSide obligatorisk. Gyldige verdier er lang eller kort. Nedenfor vises hvordan man setter parameteren side (handelens side) og posSide (posisjonens side) når du legger inn en ordre under forskjellige scenarioer:
Plasser en kjøpsordre og åpne/øk en lang posisjon: side = kjøp, posSide = lang
Plasser en salgsordre og åpne/øk en kort posisjon: side = selg, posSide = kort
Plasser en salgsordre og lukk/reduser en lang posisjon: side = selg, posSide = lang
Legg inn en kjøpsordre og lukk/reduser en short-posisjon: side = kjøp, posSide = short Så er du klar til å legge inn derivatordrer!
6.1 Sett en limitordre via Plasser ordre
Kjøper 100 BTC-USDT Swap-kontrakter til prisen 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 Legg inn en markedsordre via Legg inn ordre
Kjøper 100 BTC-USDT Swap-kontrakter til markedspris.
# 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. Hvordan kan jeg få detaljer eller en ordre for derivathandel med Jupyter Notebook ved å bruke Få ordredetaljer?
Bortsett fra ordId, kan du også angi clOrdId for å få ordredetaljer.
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)8. Hvordan kan jeg kansellere en ordre for derivathandel med Jupyter Notebook ved å bruke Kanseller ordre?
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)9. Hvordan kan jeg endre en ordre for derivathandel i Jupyter Notebook ved å bruke Endre ordre?
Du bruker også clOrdId i stedet for ordId. Dette eksemplet viser revisjonen av en ny størrelse.
result = tradeAPI.amend_order(
instId = "BTC-USDT-SWAP",
ordId = "505073046126960640",
newSz = "80"
)
print(result)10. Hvordan kan jeg få listen over åpne ordre for derivathandel med Jupyter Notebook ved å bruke Hent ordreliste?
result = tradeAPI.get_order_list()
print(result)11. How can I get order history for derivatives trading with the Jupyter Notebook via Get order history (last 7 days) and Get order history (last 3 months)?
# 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. Hvordan kan jeg få transaksjonsdetaljer for derivathandel med Jupyter Notebook via Hent transaksjonsdetaljer (siste 3 dager) og Hent transaksjonsdetaljer (siste 3 måneder)?
# 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. Hvordan kan jeg få posisjoner for derivathandel med Jupyter Notebook via Hent posisjoner?
Når kontoen din er i netto-modus, vil netto-posisjonen til hver kontrakt bli vist; når kontoen din er i lang/kort-modus, vil lange eller korte posisjoner for hver kontrakt bli vist separat.
result = accountAPI.get_positions()
print(result)For eksempel kan du spore din urealisert gevinst og tap gjennom responsparameteren upl.
Flere eksempler
For flere eksempler, last ned hele Jupyter Notebook her.
Hvis du har spørsmål om API-ene våre, kan du bli med i vårt API-fellesskap og stille dem der.