Kuinka voin treidata johdannaisilla Jupyter Notebookilla?
Katso, miten voit tehdä yksinkertaista johdannaistreidausta samoilla työkaluilla. Hyödynnetään python-okx-rajapinnan kattavia ominaisuuksia edistyneemmällä tasolla!
Johdannaisten tyypit
OKX:ssä on kolme eri johdannaistyyppiä treidattavana:
Eräpäivälliset
Eräpäivättömät
Optiot
Voit siirtyä kohtaan Bitcoin-johdannaiset selitettyinä: eräpäivälliset, eräpäivättömät, optiot ja oppia OKX:n eri johdannaistyyppien ominaisuuksista. Tässä opetusmateriaalissa käytämme eräpäivätöntä sopimusta esimerkkinä.
UKK
1. Miten saan johdannaistreidauksen markkinatiedot Jupyter Notebookissa käyttämällä Hanki markkinatiedot -toimintoa?
Voit myös korvata instType-parametrin arvoilla EXPIRY tai OPTION tiedoksiantoa varten.
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. Miten saan käytettävissä olevat johdannaistreidauksen treidausparit Jupyter Notebookissa käyttämällä Hanki instrumentteja -toimintoa?
Valitse samalla tavalla se instType, josta haluat lisätietoja.
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 Laske johdannaissopimuksen nimellisarvo instrumenttiparametrien ctVal ja ctMult avulla
Johdannaissopimuksen nimellisarvon (esim. futuurit, perpetual-swapit ja optiot) laskemiseksi tarvitset instrumentin parametreista ctVal-arvon (sopimuksen arvo) ja ctMult-arvon (sopimuskerroin).
Johdannaissopimuksen nimellisarvo voidaan laskea kaavalla: ctVal * ctMult (yksikkö: ctValCcy);
Esimerkiksi alla esitetyistä instrumenttiparametreista voidaan laskea LTC-USD-parin eräpäivättömän sopimuksen nimellisarvo: ctVal × ctMult (yksikkö: 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. Miten tarkistan saldoni johdannaistreidausta varten Jupiter Notebookissa käyttämällä Hanki saldo -ominaisuutta?
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. Mikä tilitila ja marginaali-/treidaustila ovat sallittuja johdannaistreidauksessa Jupiter Notebookin kautta?
Kuten edellisessä opetusohjeessamme mainittiin, yhtenäisellä tilillä on neljä tilatyyppiä:
spot-tila
Spot- ja futuuritila
Monen valuutan marginaalitila
Salkun marginaalitila.
Huomaa, että vain kolme viimeistä marginaalitilaa, eli spot- ja futuurimarginaali, monivaluuttamarginaali ja salkunmarginaali, ovat kelvollisia johdannaistreidaukseen. Katso verkkokäyttöliittymän kautta, miten tilitila asetetaan, jotta ymmärrät neljän eri tilan erot ja kuinka niiden välillä voi vaihtaa.
4.1 Hae nykyinen tilin määritys acctLv-parametrista kohdassa Hae tilin määritys
Varmista, että olet oikeassa tilitilassa, jotta voit käydä kauppaa johdannaisilla.
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. Miten asetan vipuvaikutuksen johdannaistreidaukseen Jupyter Notebookissa käyttämällä Aseta tilin vipu -toimintoa?
Yksi tärkeimmistä parametreista, joka tulee asettaa johdannaistreidauksessa, on vipu.
Vipu mahdollistaa position avaamisen, jonka arvo on huomattavasti suurempi sitomalla vain pieni rahasumma. Tämän seurauksena voitot tai tappiot voivat kasvaa merkittävästi.
Treidaajat voivat käyttää jopa 125-kertaista vipua treidatessaan johdannaisia OKX:ssä. Voit lukea viitteet vipuasetuksista eri positiotasojen sallittuja vipuja varten.
Tässä on, mitä yllä mainitut sanastot tarkoittavat:
Suurin vipu: suurin sallittu vipukerroin lainatulle pääomalle, jolla voidaan kasvattaa sijoituksen mahdollista tuottoa.
Alkuperäinen marginaalisuhde (IMR): marginaali, joka vaaditaan nykyisten positioiden pitämiseen.
Ylläpitomarginaalisuhde (MMR): vähimmäismarginaali, joka vaaditaan nykyisten positioiden ylläpitämiseen. Likvidointi tapahtuu, jos tilin oma pääoma laskee alle ylläpitomarginaalin.
Esimerkiksi jos haluat treidata 3 000 ETHUSDT eräpäivättömillä sopimuksilla, voit käyttää enintään 75-kertaista vipua omistamaasi pääomaan nähden. IMR = 1 / 75 = 1,3 %, ja sinun on ylläpidettävä vähintään 0,8 % MMR välttääksesi likvidaation.
OKX:n avoimien API:t tarjoavat 9 erilaista vipuasetusten skenaariota. Katso Vipuasetusten skenaarioit eri käyttötapauksia varten.
Eräpäivättömissä swapeissa on kolme eri vipun asetuksen skenaariota:
Aseta SWAP-instrumenttien vipu poikittaismarginaalisessa treidauksessa sopimustasolla.
Aseta SWAP-instrumenttien vipu eristetyn marginaalin treidaustilassa sekä osto/myynti-positiotilassa sopimustasolla.
Aseta SWAP-instrumenttien vipu eristetyn marginaalin treidaustilassa sekä pitkä positio-/lyhyt positio -tilassa sopimus- ja positiokohtaisella tasolla.
Seuraava esimerkki näyttää, miten vipu asetetaan yhdelle SWAP-sopimukselle ja positiosivulle verrattuna kaikkien SWAP-sopimusten vipuun tietylle kohde-etuudelle.
# 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)Huomaa, että pyyntöparametri posSide vaaditaan vain, kun marginaalitila on eristetty pitkä positio/lyhyt positio -tilassa (toimeksiannon tekeminen) EXPIRY/PERPETUAL-instrumenteille (katso skenaariot 6 ja 9 kohdassa Aseta vipu -skenaariot).
6. Miten voin tehdä johdannaistreidauksen toimeksiantoja Jupiter Notebookissa eri positiotiloissa (pitkä/lyhyt ja osta/myy)?
Johdannaistreidauksessa (EXPIRY ja PERPETUAL) on kaksi positiotilaa (toimeksiannon tekeminen): pitkä/lyhyt ja osta/myy (netto).
Voit vaihtaa positiotilaa (toimeksiannon tekeminen) pitkä positio/lyhyt positio- ja osta/myy (netto) -tilojen välillä API:n kautta kohdassa Aseta positiotila:
result = accountAPI.set_position_mode(
posMode = "long_short_mode"
)
print(result)Vaihtoehtoisesti voit tehdä tämän verkossa kohdassa Asetukset noudattamalla seuraavia ohjeita:
Osto-/myyntitilassa (netto) tietyn sopimuksen positio on ostojen ja myyntien nettomäärä. Kun teet toimeksiantoja Tee toimeksianto -toiminnon kautta, pyyntöparametri posSide ei ole pakollinen. Jos hyväksyt sen, ainoa kelvollinen arvo on netto.
Pitkä/lyhyt-tilassa tietyn sopimuksen pitkät ja lyhyet positiot ovat toisistaan riippumattomia ja ne on suljettava erikseen. Kun teet toimeksiantoja Tee toimeksianto -toiminnon kautta, pyyntöparametri posSide on pakollinen. Kelvolliset arvot ovat pitkä tai lyhyt. Alla on esitetty, kuinka parametri side (kaupan puoli) ja posSide (position puoli) asetetaan, kun teet toimeksiannon eri tilanteissa:
Tee ostotoimeksianto ja avaa/lisää pitkä positio: side = buy, posSide = long
Tee myyntitoimeksianto ja avaa/lisää lyhyt positio: side = sell, posSide = short
Tee myyntitoimeksianto ja sulje/vähennä pitkää positiota: side = sell, posSide = long
Tee ostotoimeksianto ja sulje tai pienennä lyhyt positio: side = buy, posSide = short Sitten olet valmis tekemään johdannaistoimeksiantoja!
6.1 Tee rajatoimeksianto valitsemalla Tee toimeksianto
Osta 100 BTC-USDT:n swap-sopimus hintaan 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 Tee markkinatoimeksianto valitsemalla Tee toimeksianto
Osta 100 BTC-USDT-swap-sopimusta markkinahintaan.
# 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. Miten saan johdannaistreidauksen toimeksiannon tiedot Jupyter Notebookissa käyttämällä Hanki toimeksiantotiedot -toimintoa?
ordId-parametrin lisäksi voit käyttää clOrdId-parametria saadaksesi toimeksiannon tiedot.
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)8. Miten peruutan johdannaistreidauksen toimeksiannon Jupyter Notebookissa käyttämällä Peruuta toimeksianto -toimintoa?
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)9. Miten voin muokata johdannaiskaupan toimeksiantoa Jupyter Notebookissa käyttämällä Muokkaa toimeksiantoa -toimintoa?
Voit käyttää clOrdId-parametria ordId-parametrin sijaan. Tämä esimerkki havainnollistaa uuden koon tarkistusta.
result = tradeAPI.amend_order(
instId = "BTC-USDT-SWAP",
ordId = "505073046126960640",
newSz = "80"
)
print(result)10. Miten saan listan avoimista johdannaistreidauksen toimeksiannoista Jupyter Notebookissa käyttämällä Hanki toimeksiantolista -toimintoa?
result = tradeAPI.get_order_list()
print(result)11. Miten saan johdannaistreidauksen toimeksiantohistorian Jupyter Notebookissa käyttämällä Hanki toimeksiantohistoria (viimeiset 7 päivää)- ja Hanki toimeksiantohistoria (viimeiset 3 kuukautta) -toimintoja?
# 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. Miten saan johdannaistreidauksen transaktiotiedot Jupyter Notebookissa käyttämällä Hanki transaktiotiedot (viimeiset 3 päivää)- ja Hanki transaktiotiedot (viimeiset 3 kuukautta) -toimintoa?
# 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. Miten saan johdannaistreidauksen positiot Jupyter Notebookissa käyttämällä Hanki positioita -toimintoa?
Kun tilisi on nettotilassa, kunkin sopimuksen nettopositio näytetään; kun tilisi on pitkä/lyhyt-tilassa, kunkin sopimuksen pitkä ja lyhyt positio näytetään erikseen.
result = accountAPI.get_positions()
print(result)Voit esimerkiksi seurata realisoimatonta voittoa ja tappiota vastausparametrin upl kautta.
Lisää esimerkkejä
Jos haluat lisää esimerkkejä, lataa koko Jupyter Notebook täältä.
Jos sinulla on kysyttävää API:n käytöstä, voit liittyä API-yhteisöömme ja esittää kysymyksiä siellä.