Cách thực hiện giao dịch phái sinh bằng Jupyter Notebook?
Tìm hiểu cách thực hiện giao dịch phái sinh đơn giản bằng cùng một công cụ. Hãy sử dụng các tính năng toàn diện có sẵn trong python-okx ở cấp độ cao hơn!
Loại sản phẩm phái sinh
Có ba loại sản phẩm phái sinh có sẵn trên OKX:
Kỳ hạn
Vĩnh cửu
Quyền chọn
Bạn có thể chuyển hướng tới Giải thích về sản phẩm phái sinh của Bitcoin: Hợp đồng kỳ hạn, vĩnh cửu và quyền chọn để tìm hiểu đặc điểm của các loại sản phẩm phái sinh khác nhau trên OKX. Trong hướng dẫn này, chúng tôi sẽ lấy hợp đồng Vĩnh cửu làm ví dụ.
Câu hỏi thường gặp
1. Cách nhận dữ liệu thị trường cho giao dịch phái sinh với Jupyter Notebook bằng cách sử dụng Nhận dữ liệu thị trường?
Bạn cũng có thể thay thế instType bằng KỲ HẠN hoặc QUYỀN CHỌN để biết thêm thông tin.
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. Cách nhận cặp giao dịch khả dụng cho giao dịch phái sinh với Jupyter Notebook bằng cách sử dụng Nhận công cụ?
Cũng theo cách đó, hãy chọn instType bạn muốn lấy thông tin.
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 Tính giá trị danh nghĩa của hợp đồng phái sinh bằng thông số công cụ ctVal và ctMult
Để tính giá trị danh nghĩa của hợp đồng phái sinh (tức là futures, hoán đổi vĩnh cửu và quyền chọn), bạn cần ctVal (giá trị hợp đồng) và ctMult (hệ số nhân hợp đồng) từ các thông số của công cụ.
Giá trị danh nghĩa của một hợp đồng phái sinh có thể được tính bằng ctVal * ctMult (đơn vị: ctValCcy);
Ví dụ: từ các thông số công cụ hiển thị dưới đây, ta có thể tính giá trị danh nghĩa của hợp đồng vĩnh cửu LTC-USD như sau: 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. Cách kiểm tra số dư giao dịch phái sinh của bạn với Jupyter Notebook bằng cách sử dụng Nhận số dư?
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. Chế độ tài khoản và chế độ ký quỹ/giao dịch nào đủ điều kiện để giao dịch phái sinh với Jupyter Notebook?
Như đã đề cập trong hướng dẫn gần nhất, trong tài khoản hợp nhất, có bốn chế độ tài khoản:
Chế độ Spot,
Chế độ Spot và futures,
Chế độ ký quỹ đa tệ
Chế độ ký quỹ danh mục đầu tư.
Lưu ý, chỉ ba chế độ ký quỹ gần nhất là spot và futures, ký quỹ đa tệ và ký quỹ danh mục đầu tư, mới đủ điều kiện để giao dịch phái sinh. Vui lòng tham khảo cách thiết lập chế độ tài khoản để nắm được sự khác biệt và cách chuyển đổi giữa bốn chế độ thông qua giao diện người dùng Web.
4.1 Nhận cấu hình tài khoản hiện tại từ thông số acctLv trong Nhận cấu hình tài khoản
Đảm bảo rằng bạn đang ở đúng chế độ tài khoản để giao dịch phái sinh.
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. Cách đặt đòn bẩy cho giao dịch phái sinh với Jupyter Notebook thông qua Đặt đòn bẩy tài khoản?
Một thông số quan trọng cần đặt khi giao dịch phái sinh là đòn bẩy.
Đòn bẩy cho phép trader vào vị thế đáng giá hơn nhiều bằng cách chỉ cam kết một khoản tiền nhỏ. Do đó, phần lời hoặc lỗ sẽ được phóng đại rất lớn.
Trader có thể dùng đòn bẩy lên đến 125x khi giao dịch phái sinh trên OKX. Bạn có thể đọc tham khảo về cài đặt đòn bẩy để biết các mức đòn bẩy khác nhau được phép sử dụng ở các bậc vị thế khác nhau.
Sau đây là ý nghĩa của các thuật ngữ được hiển thị ở trên:
Đòn bẩy tối đa: Số lần nhân tối đa vốn vay để tăng lợi nhuận tiềm năng của khoản đầu tư.
Tỷ lệ ký quỹ ban đầu (IMR): Mức ký quỹ bắt buộc để nắm giữ các vị thế hiện tại.
Tỷ lệ ký quỹ duy trì (MMR): Mức ký quỹ tối thiểu cần thiết để duy trì các vị thế hiện tại. Thanh lý sẽ xảy ra nếu vốn chủ sở hữu trong tài khoản giảm xuống dưới mức ký quỹ duy trì.
Ví dụ: khi muốn giao dịch 3.000 ETHUSDT hợp đồng vĩnh cửu, bạn có thể đòn bẩy tối đa 75 lần số vốn mà bạn sở hữu. IMR = 1 / 75 = 1,3% và bạn phải duy trì 0,8% MMR trở lên để tránh bị thanh lý.
Có 9 tình huống khác nhau cho cài đặt đòn bẩy thông qua các API mở của OKX. Vui lòng tham khảo Đặt tình huống đòn bẩy cho các tình huống khác nhau.
Đối với hợp đồng hoán đổi vĩnh cửu, có 3 tình huống khác nhau để đặt đòn bẩy:
Thiết lập đòn bẩy cho các công cụ SWAP trong giao dịch ký quỹ chéo ở cấp độ hợp đồng.
Thiết lập đòn bẩy cho các công cụ SWAP trong chế độ giao dịch ký quỹ cô lập và chế độ vị thế mua/bán ở cấp hợp đồng.
Thiết lập đòn bẩy cho các công cụ SWAP trong chế độ giao dịch ký quỹ cô lập và chế độ vị thế mua/bán ở cấp hợp đồng và vị thế.
Ví dụ sau cho biết cách đặt đòn bẩy cho một bên vị thế và hợp đồng SWAP, so với trên tất cả hợp đồng SWAP của một số tài sản cơ sở nhất định.
# 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)Lưu ý rằng thông số yêu cầu posSide chỉ bắt buộc khi chế độ ký quỹ được cô lập ở vị thế mua/bán (đặt lệnh) cho các công cụ KỲ HẠN/VĨNH CỬU (xem tình huống 6 và 9 trong Thiết lập các kịch bản đòn bẩy).
6. Cách đặt lệnh giao dịch phái sinh với Jupyter Notebook trong các chế độ vị thế (đặt lệnh) khác nhau: vị thế mua/vị thế bán và mua/bán?
Có hai chế độ vị thế (đặt lệnh) khi giao dịch KỲ HẠN và VĨNH CỬU: long/short và mua/bán (ròng).
Bạn có thể chuyển đổi chế độ vị thế (đặt lệnh) giữa long/short và mua/bán (ròng) thông qua API Thiết lập chế độ vị thế.
result = accountAPI.set_position_mode(
posMode = "long_short_mode"
)
print(result)Hoặc bạn cũng có thể thực hiện thông qua Cài đặt trên web như bên dưới:
Trong chế độ mua/bán (ròng), vị thế của một hợp đồng nhất định là số lượng ròng của các giao dịch mua và bán của bạn. Khi bạn đặt lệnh thông qua Đặt lệnh, thông số yêu cầu posSide không bắt buộc. Nếu bạn chuyển tiếp giao dịch, giá trị hợp lệ duy nhất là ròng.
Ở chế độ mua/bán, các vị thế mua và bán của một hợp đồng nhất định sẽ độc lập với nhau và cần được đóng riêng biệt. Khi bạn đặt lệnh thông qua Đặt lệnh, thông số yêu cầu posSide là bắt buộc. Các giá trị hợp lệ là long hoặc short. Dưới đây là cách thiết lập thông số side (bên giao dịch) và posSide (bên vị thế) khi bạn đặt lệnh trong các trường hợp khác nhau:
Đặt lệnh mua và mở/tăng vị thế mua/long: side = mua, posSide = long
Đặt lệnh bán và mở/tăng vị thế bán/short: side = bán, posSide = short
Đặt lệnh bán và đóng/giảm vị thế mua/long: side = bán, posSide = long
Đặt lệnh mua và đóng/giảm vị thế bán/short: side = mua, posSide = bán/short. Sau đó, bạn đã sẵn sàng đặt lệnh phái sinh!
6.1 Đặt lệnh giới hạn thông qua Đặt lệnh
Mua 100 BTC-USDT hợp đồng hoán đổi với giá 19000 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 Đặt lệnh thị trường qua Đặt lệnh
Mua 100 BTC-USDT hợp đồng hoán đổi với giá thị trường.
# 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. Cách nhận chi tiết hoặc lệnh giao dịch phái sinh với Jupyter Notebook bằng cách sử dụng Nhận chi tiết lệnh?
Ngoài ordId, bạn cũng có thể chỉ định clOrdId để lấy thông tin chi tiết lệnh.
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)8. Cách hủy lệnh giao dịch phái sinh bằng Jupyter Notebook thông qua Hủy lệnh?
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)9. Cách sửa đổi lệnh giao dịch phái sinh với Jupyter Notebook thông qua Sửa đổi lệnh?
Bạn cũng sử dụng clOrdId thay cho ordId. Ví dụ này cho biết quá trình sửa đổi quy mô mới.
result = tradeAPI.amend_order(
instId = "BTC-USDT-SWAP",
ordId = "505073046126960640",
newSz = "80"
)
print(result)10. Cách nhận danh sách lệnh chờ khớp cho giao dịch phái sinh với Jupyter Notebook bằng cách sử dụng Nhận danh sách lệnh?
result = tradeAPI.get_order_list()
print(result)11. Cách nhận lịch sử lệnh giao dịch phái sinh với Jupyter Notebook thông qua Nhận lịch sử lệnh (7 ngày qua) và Nhận lịch sử lệnh (3 tháng qua)?
# 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. Cách nhận chi tiết giao dịch cho giao dịch phái sinh với Jupyter Notebook qua Nhận chi tiết giao dịch (3 ngày qua) và Nhận chi tiết giao dịch (3 tháng qua)?
# 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. Cách nhận vị thế giao dịch phái sinh với Jupyter Notebook thông qua Nhận vị thế?
Khi tài khoản của bạn ở chế độ ròng, vị thế ròng của mỗi hợp đồng sẽ được hiển thị; khi tài khoản của bạn ở chế độ long/short, vị thế mua hoặc bán của mỗi hợp đồng sẽ được hiển thị riêng biệt.
result = accountAPI.get_positions()
print(result)Ví dụ, bạn có thể theo dõi lãi lỗ chưa thực hiện của mình qua thông số phản hồi upl.
Ví dụ khác
Để biết thêm ví dụ, vui lòng tải Jupyter Notebook đầy đủ tại đây.
Nếu bạn có bất kỳ câu hỏi nào về API của chúng tôi, bạn có thể tham gia cộng đồng API của chúng tôi và nêu vấn đề trong cộng đồng.