Bagaimana Cara Melakukan Trading Derivatif Dengan Jupyter Notebook?

Dipublikasikan Pada 28 Sep 2023Diperbarui Pada 23 Des 2025Baca 9 mnt178

Ketahui cara melakukan trading derivatif simpel dengan alat yang sama. Mari gunakan fitur komprehensif yang tersedia di python-okx dengan level yang lebih tinggi!

Jenis Derivatif

Tersedia tiga jenis derivatif untuk trading di OKX:

  • Expiry

  • Perpetual

  • Option

Anda dapat merujuk ke Penjelasan Derivatif Bitcoin: Expiry, Perpetual, Dan Option untuk mempelajari karakteristik dari berbagai jenis derivatif di OKX. Dalam tutorial ini, kita akan menggunakan Perpetual sebagai contoh.

Pertanyaan Yang Sering Diajukan (FAQ)

1. Bagaimana Cara Mendapatkan Data Pasar Untuk Trading Derivatif Dengan Jupyter Notebook Menggunakan Dapatkan Data Pasar?

Sebagai informasi, Anda juga dapat mengganti instType dengan EXPIRY atau OPTION.

Python
     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. Bagaimana Cara Mendapatkan Pair Trading Yang Tersedia Untuk Trading Derivatif Dengan Jupyter Notebook Menggunakan Dapatkan Instrumen?

Dengan cara yang sama, pilih instType yang ingin Anda dapatkan informasinya.

Python
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 Hitung nilai nosional kontrak derivatif dengan parameter instrumen ctVal dan ctMult

Untuk menghitung nilai nosional kontrak derivatif (yaitu, futures, swap perpetual, dan option), Anda memerlukan ctVal (nilai kontrak) dan ctMult (pengganda kontrak) dari parameter instrumen.

Rumus nilai nosional kontrak derivatif adalah ctVal * ctMult (unit: ctValCcy);

Misalnya, dari parameter instrumen yang ditampilkan di bawah, penghitungan nilai nosional kontrak perpetual LTC-USD adalah sebagai berikut: ctVal * ctMult (unit:ctValccy) = 10 * 1 USD = 10 USD

JSON
        "instType":"SWAP",
        "instId":"LTC-USD-SWAP",
        "instFamily":"LTC-USD",
        "uly":"LTC-USD",
        "settleCcy":"LTC",
        "ctVal":"10",
        "ctMult":"1",
        "ctValCcy":"USD"

3. Bagaimana Cara Memeriksa Saldo Untuk Trading Derivatif Dengan Jupyter Notebook Menggunakan Dapatkan Saldo?

Python
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. Apa Saja Mode Akun Dan Mode Margin/Trading Yang Memenuhi Syarat Untuk Trading Derivatif Dengan Jupyter Notebook?

Sebagaimana disebutkan dalam tutorial terakhir kami, terdapat empat mode akun di akun terpadu:

  • Mode Spot,

  • Mode Spot dan Futures,

  • Mode Margin Multimata Uang,

  • Mode Margin Portofolio.

Perhatikan bahwa hanya tiga mode margin terakhir, yaitu Spot dan Futures, Margin Multimata Uang, dan Margin Portofolio, yang memenuhi syarat untuk trading derivatif. Silakan merujuk ke Cara Mengatur Mode Akun untuk memahami perbedaan di antara keempat mode tersebut dan cara beralih di antaranya melalui UI Web kami.

4.1 Dapatkan konfigurasi akun saat ini dari parameter acctLv di Dapatkan Konfigurasi Akun

Pastikan bahwa Anda berada dalam mode akun yang benar untuk melakukan trading derivatif.

Python
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. Bagaimana Cara Mengatur Leverage Untuk Trading Derivatif Dengan Jupyter Notebook Via Atur Leverage Akun?

Satu parameter penting yang harus diatur saat melakukan trading derivatif adalah leverage.

Leverage memungkinkan trader untuk memasuki posisi yang nilainya jauh lebih besar dengan mengalokasikan sejumlah kecil uang. Dengan demikian, keuntungan atau kerugian menjadi sangat diperbesar.

Trader dapat memiliki leverage hingga 125x saat melakukan trading derivatif di OKX. Anda dapat membaca referensi pengaturan leverage untuk berbagai level leverage yang diizinkan dalam berbagai tingkatan posisi.

Berikut adalah makna dari glosarium yang ditampilkan di atas:

  • Leverage Maks.: Kelipatan maksimum dari modal pinjaman untuk meningkatkan potensi imbal hasil investasi.

  • Rasio Margin Awal (IMR): Margin yang diperlukan untuk memiliki posisi saat ini.

  • Rasio Margin Pemeliharaan (MMR): Margin minimum yang diperlukan untuk mempertahankan posisi saat ini. Likuidasi akan terjadi jika ekuitas akun turun di bawah margin pemeliharaan.

Misalnya, saat ingin melakukan trading 3.000 kontrak perpetual ETHUSDT, Anda dapat menerapkan leverage maksimum 75 kali lipat dari modal yang dimiliki. IMR = 1 / 75 = 1,3%, maka Anda harus mempertahankan MMR sebesar 0,8% atau lebih untuk menghindari likuidasi.

Terdapat 9 macam skenario untuk pengaturan leverage via API terbuka OKX. Silakan merujuk ke Skenario Pengaturan Leverage untuk berbagai kasus.

Untuk swap perpetual, terdapat 3 macam skenario pengaturan leverage:

  • Atur leverage untuk instrumen SWAP dalam trading Margin Silang pada level kontrak.

  • Atur leverage untuk instrumen SWAP dalam mode trading Margin Terisolasi dan mode posisi Beli/Jual pada level kontrak.

  • Atur leverage untuk instrumen SWAP dalam mode trading Margin Terisolasi dan mode posisi Long/Short pada level kontrak dan sisi posisi.

Contoh berikut menunjukkan cara mengatur leverage untuk satu kontrak SWAP dan sisi posisi dibandingkan dengan pada semua kontrak SWAP untuk dasar tertentu.

Bash
# 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)

Perhatikan bahwa parameter permintaan posSide hanya diperlukan ketika mode margin adalah terisolasi dalam posisi long/short (pembuatan order) untuk instrumen EXPIRY/PERPETUAL (lihat skenario 6 dan 9 dalam Skenario Pengaturan Leverage).

6. Bagaimana Cara Membuat Order Untuk Trading Derivatif Dengan Jupyter Notebook Dalam Berbagai Mode Posisi (Pembuatan Order): Long/Short Dan Beli/Jual?

Terdapat dua mode posisi (pembuatan order) saat melakukan trading EXPIRY dan PERPETUAL: Long/Short dan Beli/Jual (net).

Anda dapat mengubah mode posisi (pembuatan order) antara Long/Short dan Beli/Jual (net) via API Atur Mode Posisi:

SQL
result = accountAPI.set_position_mode(
    posMode = "long_short_mode"
)
print(result)

Alternatifnya, Anda dapat melakukannya via Pengaturan di web sebagai berikut:

Dalam mode Beli/Jual (net), posisi kontrak tertentu adalah kuantitas bersih dari trading beli dan jual Anda. Saat membuat order via Buat Order, parameter permintaan posSide bersifat tidak wajib. Jika menjalankannya, nilai yang valid hanyalah net.

Dalam mode Long/Short, posisi Long dan Short dari kontrak tertentu akan bersifat saling independen dan harus ditutup secara terpisah. Saat membuat order via Buat Order, parameter permintaan posSide bersifat wajib. Nilai yang valid adalah long atau short. Berikut adalah cara mengatur parameter side (sisi trading) dan posSide (sisi posisi) saat membuat order dalam berbagai skenario:

  • Buat order beli, lalu buka/tingkatkan posisi long: side = buy, posSide = long

  • Buat order jual, lalu buka/tingkatkan posisi short: side = sell, posSide = short

  • Buat order jual, lalu tutup/kurangi posisi long: side = sell, posSide = long

  • Buat order beli, lalu tutup/kurangi posisi short: side = buy, posSide = short Anda sudah siap untuk membuat order derivatif!

6.1 Buat Order Limit Via Buat Order

Membeli 100 kontrak Swap BTC-USDT seharga 19.000 USDT.

SQL
# 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 Buat Order Pasar Via Buat Order

Membeli 100 kontrak Swap BTC-USDT dengan harga pasar.

SQL
# 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. Bagaimana Cara Mendapatkan Detail Atau Order Untuk Trading Derivatif Dengan Jupyter Notebook Menggunakan Dapatkan Detail Order?

Selain dari ordId, Anda juga dapat menentukan clOrdId untuk mendapatkan detail order.

SQL
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)

8. Bagaimana Cara Membatalkan Order Untuk Trading Derivatif Dengan Jupyter Notebook Via Batalkan Order?

Perl
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)

9. Bagaimana Cara Mengubah Order Untuk Trading Derivatif Dengan Jupyter Notebook Via Ubah Order?

Anda juga menggunakan clOrdId sebagai pengganti ordId. Contoh ini menunjukkan revisi nilai yang baru.

SQL
result = tradeAPI.amend_order(
    instId = "BTC-USDT-SWAP", 
    ordId = "505073046126960640",
    newSz = "80"
)
print(result)

10. Bagaimana Cara Mendapatkan Daftar Order Terbuka Untuk Trading Derivatif Dengan Jupyter Notebook Menggunakan Dapatkan Daftar Order?

SQL
result = tradeAPI.get_order_list()
print(result)

11. Bagaimana Cara Mendapatkan Riwayat Order Untuk Trading Derivatif Dengan Jupyter Notebook Via Dapatkan Riwayat Order (7 Hari Terakhir) Dan Dapatkan Riwayat Order (3 Bulan Terakhir)?

SQL
# 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. Bagaimana Cara Mendapatkan Detail Transaksi Untuk Trading Derivatif Dengan Jupyter Notebook Via Dapatkan Detail Transaksi (3 Hari Terakhir) Dan Dapatkan Detail Transaksi (3 Bulan Terakhir)?

SQL
# 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. Bagaimana Cara Mendapatkan Posisi Untuk Trading Derivatif Dengan Jupyter Notebook Via Dapatkan Posisi?

Saat akun Anda berada dalam mode net, posisi net dari setiap kontrak akan ditampilkan. Saat akun Anda berada dalam mode long/short, posisi long atau short dari setiap kontrak akan ditampilkan secara terpisah.

SQL
result = accountAPI.get_positions()
print(result)

Misalnya, Anda dapat melacak Keuntungan Dan Kerugian Belum Terealisasi melalui parameter respons upl.

Contoh Lainnya

Untuk mengetahui contoh lainnya, silakan unduh Jupyter Notebook lengkap di sini.

Jika ada pertanyaan tentang API kami, Anda dapat bergabung ke komunitas API kami, lalu mengajukannya di komunitas.