Hur kan jag handla med derivat med Jupyter Notebook?
Ta reda på hur du enkelt kan handla med derivat med samma verktyg. Låt oss använda de omfattande funktionerna som är tillgängliga i python-okx på en högre nivå!
Derivattyper
Det finns tre typer av derivat tillgängliga för handel på OKX:
Förfallande terminer
Eviga terminer
Optioner
Besök Förklaring av Bitcoin-derivat: förfallande terminer, eviga terminer och optioner för att lära dig mer om egenskaperna hos olika typer av derivat på OKX. I denna handledning använder vi eviga terminer som ett exempel.
Vanliga frågor
1. Hur kan jag hämta marknadsdata för derivathandel med Jupyter Notebook med hjälp av Hämta marknadsdata?
Du kan också ersätta instType med EXPIRY eller OPTION för din information.
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. Hur kan jag få tillgängliga handelspar för derivathandel med Jupyter Notebook med hjälp av Hämta instrument?
På samma sätt väljer du den instType som du vill få information 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 Beräkna det nominella värdet för ett derivatkontrakt med instrumentparametrarna ctVal och ctMult
För att beräkna det nominella värdet av ett derivatkontrakt (dvs. terminer, eviga swappar och optioner), du behöver ctVal (kontraktsvärde) och ctMult (kontraktsmultiplikator) från instrumentparametrarna.
Det nominella värdet av ett derivatkontrakt kan beräknas som ctVal * ctMult (enhet: ctValCcy);
Till exempel kan vi utifrån instrumentparametrarna nedan beräkna det nominella värdet för ett evigt LTC-USD-kontrakt enligt följande: 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. Hur kan jag kontrollera saldot för derivathandel med Jupyter Notebook med hjälp av Hämta 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. Vilket kontoläge och marginal-/handelsläge är lämpligt för derivathandel med Jupyter Notebook?
Som vi nämnde i vår senaste handledning finns det fyra kontolägen i det enhetliga kontot:
Spotläge,
Spot- och terminsläge,
Marginalläge för flera valutor,
Portföljmarginalläge.
Observera att endast de tre sista marginallägena, nämligen spot och terminer, marginal för flera valutor och portföljmarginal, är berättigade för derivathandel. Se hur du ställer in kontoläget för att förstå skillnaderna mellan de fyra lägena och hur du växlar mellan dem via vårt webbgränssnitt.
4.1 Hämta den aktuella kontokonfigurationen från parametern acctLv i Hämta kontokonfiguration
Se till att du är i rätt kontoläge för att handla med derivat.
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. Hur kan jag ställa in hävstång för derivathandel med Jupyter Notebook via Ställ in kontohävstång?
Ett viktigt parameter som vi behöver ställa in när vi handlar derivat är hävstång.
Hävstång gör det möjligt för handlare att öppna en position som är värd mycket mer genom att endast satsa en liten summa pengar. Vinsterna eller förlusterna förstoras därför kraftigt.
Handlare kan få upp till 125 gånger hävstång när de handlar med derivat på OKX. Du kan läsa referenser för inställning av hävstång för olika nivåer av hävstång som är tillåtna under olika positioner.
Här är vad orden ovan betyder:
Max hävstång: Det maximala beloppet av lånat kapital för att öka den potentiella avkastningen på en investering.
Initial marginalkvot (IMR): marginal som krävs för att inneha aktuella positioner.
Underhållsmarginalkvot (MMR): Minsta marginalkrav för att behålla nuvarande positioner. Likvidation sker om kontots kapital sjunker under underhållsmarginalen.
Om du till exempel vill handla 3 000 eviga ETHUSDT-kontrakt kan du utnyttja maximalt 75 gånger det kapital du äger. IMR = 1 / 75 = 1,3 %, och du måste upprätthålla 0,8 % MMR eller högre för att undvika likvidation.
Det finns 9 olika scenarier för hävstångsinställningar via OKX öppna API:er. Se Ställ in hävstångsscenarier för olika fall.
För eviga swappar finns det tre olika scenarier för inställning av hävstång:
Ställ in hävstång för SWAP-instrument under korsmarginalhandel på kontraktsnivå.
Ställ in hävstång för SWAP-instrument under läget isolerad marginalhandel och positionsläget köp/sälj på kontraktsnivå.
Ställ in hävstång för SWAP-instrument under läget isolerad marginalhandel och positionsläget lång/kort på kontrakts- och positionsnivå.
Följande exempel visar hur man ställer in hävstången för ett enskilt SWAP-kontrakt och positionssida, jämfört med alla SWAP-kontrakt för en viss underliggande tillgång.
# 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)Observera att förfrågningsparametern posSide endast krävs när marginalläget är isolerat i lång/kort position (orderläggning) för EXPIRY/PERPETUAL-instrument (se scenario 6 och 9 i Ställ in hävstångsscenarier).
6. Hur kan jag lägga ordrar för derivathandel med Jupyter Notebook under olika positionslägen (orderläggningslägen): lång/kort och köp/sälj?
Det finns två positioner (orderläggning) vid handel med EXPIRY och PERPETUAL: lång/kort och köp/sälj (netto).
Du kan ändra positionsläget (orderläggning) mellan lång/kort och köp/sälj (netto), via API:et Ställ in positionsläge:
result = accountAPI.set_position_mode(
posMode = "long_short_mode"
)
print(result)Alternativt kan du göra det via Inställningar på webben enligt nedan:
I köp-/säljläge (netto) är positionen för ett visst kontrakt nettokvantiteten av dina köp- och säljtransaktioner. När du lägger ordrar via Lägg order är förfrågningsparametern posSide inte obligatorisk. Om du skickar den vidare är det enda giltiga värdet netto.
I läget lång/kort är långa och korta positioner i ett visst kontrakt oberoende av varandra och måste stängas separat. När du lägger ordrar via Lägg order är förfrågningsparametern posSide obligatorisk. Giltiga värden är lång eller kort. Nedan visas hur du ställer in parametern side (sidan av affären) och posSide (sidan av positionen) när du lägger en order under olika scenarier:
Lägg en köporder och öppna/öka en lång position: side = köp, posSide = lång
Lägg en säljorder och öppna/öka en kort position: side = sälj, posSide = kort
Lägg en säljorder och stäng/minska en lång position: side = sälj, posSide = lång
Lägg en köporder och stäng/minska en kort position: side = köp, posSide = kort Nu är du redo att lägga derivatordrar!
6.1 Lägg en limitorder via Lägg order
Köper 100 BTC-USDT- swapkontrakt till priset 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 Lägg en marknadsorder via Lägg order
Köper 100 BTC-USDT-swapkontrakt till marknadspris.
# 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. Hur kan jag få detaljer eller en order för derivathandel med Jupyter Notebook med hjälp av Hämta orderdetaljer?
Förutom ordId, kan du även ange clOrdId för att hämta orderdetaljer.
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)8. Hur kan jag avbryta en order för derivathandel med Jupyter Notebook med hjälp av Avbryt order?
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)9. Hur ändrar jag en order för derivathandel med Jupyter Notebook med hjälp av Ändra order?
Du använder också clOrdId istället för ordId. Detta exempel visar revideringen av en ny storlek.
result = tradeAPI.amend_order(
instId = "BTC-USDT-SWAP",
ordId = "505073046126960640",
newSz = "80"
)
print(result)10. Hur kan jag få en lista över öppna ordrar för derivathandel med Jupyter Notebook med hjälp av Hämta orderlista?
result = tradeAPI.get_order_list()
print(result)11. Hur kan jag få orderhistorik för derivathandel med Jupyter Notebook via Hämta orderhistorik (senaste 7 dagarna) och Hämta orderhistorik (senaste 3 månaderna)?
# 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. Hur kan jag få transaktionsdetaljer för derivathandel med Jupyter Notebook via Hämta transaktionsdetaljer (senaste 3 dagarna) och Hämta transaktionsdetaljer (senaste 3 månaderna)?
# 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. Hur kan jag få positioner för derivathandel med Jupyter Notebook via Hämta positioner?
När ditt konto är i läget netto kommer netto-position för varje kontrakt att visas. När ditt konto är i läget lång/kort visas den långa eller korta positionen för varje kontrakt separat.
result = accountAPI.get_positions()
print(result)Till exempel kan du spåra din orealiserade vinst och förlust genom responsparametern upl.
Fler exempel
För fler exempel kan du ladda ner Jupyter Notebook här.
Om du har några frågor om våra API:er kan du gå med i vår API-community och ställa dem där.