Come posso fare trading di derivati con il Notebook Jupyter?
Scopri come puoi fare trading di derivati semplice con gli stessi strumenti. Utilizza le funzionalità complete disponibili in python-okx a un livello superiore!
Tipi di derivati
Esistono tre tipi di derivati disponibili per il trading su OKX:
A scadenza
Perpetuo
Opzioni
Puoi visitare la sezione I derivati del Bitcoin, spiegati: scadenza, perpetuo e opzioni per conoscere le caratteristiche dei diversi tipi di derivati su OKX. In questo tutorial, useremo Perpetuo come esempio.
Domande frequenti
1. Come posso ottenere i dati di mercato per il trading di derivati con il Notebook Jupyter utilizzando Ottieni dati di mercato?
Puoi anche sostituire instType con EXPERY oppure OPTION per le tue informazioni.
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. Come posso ottenere le coppie di trading disponibili per il trading di derivati con Jupyter Notebook utilizzando Ottieni strumenti?
Allo stesso modo, scegli instType per il quale desideri ottenere informazioni.
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 Calcola il valore nominale di un contratto derivato con il parametro dello strumento ctVal e ctMult
Per calcolare il valore nominale di un contratto derivato (ovvero futures, swap perpetui e opzioni), hai bisogno di ctVal (valore del contratto) e ctMult (moltiplicatore del contratto) dai parametri dello strumento.
Il valore nominale di un contratto derivato può essere calcolato come ctVal * ctMult (unità: ctValCcy);
Ad esempio, dai parametri dello strumento mostrati di seguito, possiamo calcolare il valore nozionale di un contratto perpetuo LTC-USD come: ctVal * ctMult (unità: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. Come posso controllare il saldo per il trading di derivati con il Notebook Jupyter utilizzando Ottieni il 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. Quale modalità di conto e modalità margine/operazione sono idonei per il trading di derivati con Jupyter Notebook?
Come indicato nell'ultimo tutorial, nell'account unificato ci sono quattro modalità di conto:
Modalità spot,
Modalità spot e futures,
Modalità di margine multivaluta
Modalità margine di portafoglio
Tieni presente che solo le ultime tre modalità di margine, ovvero spot e futures, margine multivaluta e margine di portafoglio, sono idonee per il trading di derivati. Per capire le differenze tra le quattro modalità e come passare da una all'altra attraverso l'interfaccia web, consulta la sezione Come impostare la modalità di conto.
4.1 Ottieni la configurazione del conto attuale dal parametro acctLv in Ottieni la configurazione del conto
Assicurati di essere nella modalità di conto corretta per fare trading di derivati.
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. Come posso impostare la leva per il trading di derivati con Jupyter Notebook tramite Imposta leva del conto?
Un parametro importante da impostare quando si fa trading sui derivati è la leva.
La leva finanziaria consente ai trader di entrare in una posizione che vale molto di più impegnando solo una piccola quantità di denaro. Pertanto, i guadagni o le perdite sono notevolmente moltiplicati.
I trader possono avere una leva fino a 125 volte maggiore quando fanno trading di derivati su OKX. Puoi leggere i riferimenti sulla configurazione della leva per conoscere i diversi livelli di leva consentiti in diversi livelli di posizione.
Ecco il significato dei glossari riportati sopra:
Leva massima: il multiplo massimo del capitale preso in prestito per aumentare il rendimento potenziale di un investimento.
Margine di profitto iniziale (IMR): il margine richiesto per la detenzione delle posizioni attuali.
Margine di mantenimento (MMR): il margine minimo richiesto per mantenere le posizioni correnti. Se il patrimonio netto scende al di sotto del margine di mantenimento, si verifica una liquidazione.
Ad esempio, se vuoi negoziare 3000 contratti perpetui ETHUSDT, puoi sfruttare un massimo di 75 volte il capitale che possiedi. IMR = 1 / 75 = 1,3%, e devi mantenere almeno lo 0,8% di MMR per evitare la liquidazione.
Esistono 9 diversi scenari per le impostazioni di leva tramite le API aperte di OKX. Consulta Imposta scenari di leva per diversi casi.
Per gli swap perpetui, ci sono 3 diversi scenari per l'impostazione della leva finanziaria:
Imposta la leva finanziaria per gli strumenti SWAP in trading di margine incrociato a livello di contratto.
Imposta la leva per gli strumenti SWAP in modalità di trading a margine isolato e in modalità di acquisto/vendita della posizione a livello di contratto.
Imposta la leva finanziaria per gli strumenti SWAP in modalità di trading a margine isolato e in modalità posizione long/short a livello di contratto e di posizione.
L'esempio seguente mostra come impostare la leva per un singolo contratto SWAP e lato posizione, rispetto a tutti i contratti SWAP per un determinato sottostante.
# 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)Tieni presente che il parametro della richiesta posSide è richiesto solo quando la modalità margine è isolata nella modalità di posizione (invio dell'ordine) long/short per gli strumenti EXPIRY/PERPETUAL (vedi scenari 6 e 9 in Scenari per la configurazione della leva).
6. Come posso effettuare ordini per il trading di derivati con Jupyter Notebook in modalità di posizione diverse (invio degli ordini) diverse: long/short e acquisto/vendita?
Esistono due modalità di invio dell'ordine quando si fa trading su EXPIRY e PERPETUAL: long/short e acquisto/vendita (netto).
Puoi modificare la modalità della posizione (invio dell'ordine) tra long/short e acquisto/vendita (netto), tramite l'API Imposta modalità posizione:
result = accountAPI.set_position_mode(
posMode = "long_short_mode"
)
print(result)In alternativa, puoi farlo tramite le Impostazioni sul Web:
In modalità acquisto/vendita (netto), la posizione di un determinato contratto è la quantità netta delle tue operazioni di trading di acquisto e vendita. Quando effettui ordini tramite Effettua ordine il parametro della richiesta posSide non è obbligatorio. Se lo superi, l'unico valore valido è net.
Nella modalità long/short, le posizioni long e short di un determinato contratto saranno indipendenti l'una dall'altra e dovranno essere chiuse separatamente. Quando effettui ordini tramite <auri="">Effettua l'ordine, il parametro della richiesta posSide è obbligatorio. I valori validi sono long o posizione in short. Di seguito viene mostrato come impostare i parametri side (lato dell'operazione) e posSide (lato della posizione) quando si effettua un ordine in diversi scenari:
Effettua un ordine di acquisto e apri/aumenta una posizione long: side = acquista, posSide = posizione long
Effettua un ordine di vendita e apri/aumenta una posizione in short: side = acquista, posSide = posizione in short
Effettua un ordine di vendita e chiudi/riduci una posizione in long: side = vendi, posSide = posizione in long
Effettua un ordine di acquisto e chiudi/riduci una posizione in short: side = acquista, posSide = posizione in short. Adesso sei pronto per ordinare i derivati!
6.1 Effettua un ordine limite tramite Effettua ordine
Acquisto di un contratto di swap BTC-USDT da 100 al prezzo di 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 Effettua un ordine di mercato tramite Effettua ordine
Acquisto di un contratto di swap da 100 BTC a USDT al prezzo di mercato.
# 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. Come posso ottenere dettagli o un ordine per il trading di derivati con il Notebook Jupyter utilizzando Ottieni dettagli dell'ordine?
Oltre a ordId, puoi anche specificare clOrdId per ottenere i dettagli dell'ordine.
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)8. Come posso annullare un ordine per il trading di derivati con Jupyter Notebook tramite Annulla ordine?
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)9. Come posso modificare un ordine per il trading di derivati con il Notebook Jupyter tramite Modifica ordine?
Usa anche clOrdId al posto di ordId. Questo esempio mostra la revisione di una nuova dimensione.
result = tradeAPI.amend_order(
instId = "BTC-USDT-SWAP",
ordId = "505073046126960640",
newSz = "80"
)
print(result)10. Come posso ottenere l'elenco degli ordini aperti per il trading di derivati con Jupyter Notebook utilizzando Ottieni l'elenco degli ordini?
result = tradeAPI.get_order_list()
print(result)11. Come posso ottenere la cronologia ordini per il trading di derivati con Jupyter Notebook tramite Ottieni cronologia ordini (ultimi 7 giorni) e Ottieni cronologia ordini (ultimi 3 mesi)?
# 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. Come posso ottenere i dettagli delle transazioni per il trading di derivati con Jupyter Notebook tramite Ottieni i dettagli delle transazioni (ultimi 3 giorni) e Ottieni i dettagli delle transazioni (ultimi 3 mesi)?
# 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. Come posso ottenere posizioni per il trading di derivati con Jupyter Notebook tramite Ottieni posizioni?
Quando il tuo conto è in modalità net, viene visualizzata la posizione net di ciascun contratto; quando il tuo conto è in modalità long/short, la posizione long o short di ciascun contratto viene visualizzata separatamente.
result = accountAPI.get_positions()
print(result)Ad esempio, puoi tenere traccia dei tuoi profitti e perdite non realizzati tramite il parametro di risposta upl.
Altri esempi
Per ulteriori esempi, scarica l'intero Notebook Jupyter qui.
In caso di domande sulle nostre API, puoi porle all'interno della nostra community API.