Jak handlować instrumentami pochodnymi za pomocą Jupyter Notebook?
Dowiedz się, jak możesz przeprowadzić prosty handel instrumentami pochodnymi za pomocą tych samych narzędzi. Wykorzystajmy wszechstronne funkcje dostępne w python-okx na wyższym poziomie!
Typy derywatów
Na OKX dostępne są trzy rodzaje instrumentów pochodnych:
Kontrakty expiry
Wieczyste
Opcje
Możesz przejść do Objaśnienia instrumentów pochodnych BTC: Expiry, Perpetual i opcje, aby poznać charakterystykę różnych rodzajów instrumentów pochodnych na OKX. W tym poradniku użyjemy kontraktu Pepertual jako przykładu.
Często zadawane pytania
1. Jak mogę uzyskać dane rynkowe z Uzyskaj dane rynkowe?
Możesz również zastąpić instType EXPIRY lub OPTION.
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. Jak mogę uzyskać dostępne pary handlowe z Pobierz instrumenty?
Podobnie jak w przypadku innych metod, wybierz typ instType, dla którego chcesz uzyskać informacje.
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 Oblicz wartość nominalną kontraktu pochodnego z parametrem instrumentu ctVal i ctMult
Aby obliczyć wartość referencyjną kontraktu pochodnego (tj. future, perpetual swap i opcji), potrzebujesz ctVal (wartość kontraktu) i ctMult (mnożnik kontraktu) z parametrów instrumentu.
Wartość referencyjną kontraktu pochodnego można obliczyć jako ctVal * ctMult (jednostka: ctValCcy);
Na przykład, na podstawie parametrów instrumentu przedstawionych poniżej, możemy obliczyć wartość referencyjną kontraktu wieczystego LTC-USD jako: ctVal * ctMult (jednostka: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. Jak mogę sprawdzić saldo z Uzyskaj 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)
Czum jest tryb konta i tryb depozytu zabezpieczającego/transakcji w handlu instrumentami pochodnymi?
Jak wspomnieliśmy w naszym ostatnim poradniku, w ramach ujednoliconego konta dostępne są cztery tryby konta:
Tryb spot,
Tryb spot i kontraktów futures,
Tryb wielowalutowego depozytu zabezpieczającego
Tryb depozytu zabezpieczającego portfolio
Pamiętaj, że tylko trzy ostatnie tryby depozytu zabezpieczającego, a mianowicie jednowalutowy depozyt zabezpieczający, wielowalutowy depozyt zabezpieczający i depozyt zabezpieczający portfolio, kwalifikują się do obrotu instrumentami pochodnymi. Zapoznaj się z dokumentem Jak skonfigurować tryb konta, aby zrozumieć różnice między czterema trybami i jak przełączać się między nimi za pośrednictwem naszego interfejsu użytkownika.
4.1 Pobierz bieżącą konfigurację konta z parametru acctLv w polu Pobierz konfigurację konta
Upewnij się, że jesteś w odpowiednim trybie konta do handlu instrumentami pochodnymi.
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. Jak ustawić dźwignię za pomocą Ustaw dźwignię konta?
Jednym z ważnych parametrów, które musimy ustawić podczas handlu instrumentami pochodnymi, jest dźwignia.
Dźwignia finansowa umożliwia traderom wejście w pozycję, która jest warta znacznie więcej przy zaangażowaniu jedynie niewielkiej kwoty pieniędzy. Zyski lub straty są zatem znacznie większe.
Traderzy mogą mieć nawet 125-krotną dźwignię finansową podczas handlu instrumentami pochodnymi na OKX. Możesz przeczytać odnośniki do ustawiania dźwigni dla różnych poziomów dźwigni dozwolonych na różnych poziomach pozycji.
Oto, co oznaczają powyższe objaśnienia:
Maks. dźwignia: Maksymalna wielokrotność pożyczonego kapitału w celu zwiększenia potencjalnego zwrotu z inwestycji.
Początkowy wskaźnik depozytu zabezpieczającego (IMR): Depozyt zabezpieczający wymagany do utrzymywania bieżących pozycji.
Współczynnik wymaganego depozytu zabezpieczającego (MMR): Minimalny depozyt zabezpieczający wymagany do utrzymania bieżących pozycji. Likwidacja nastąpi, jeśli kapitał konta spadnie poniżej depozytu zabezpieczającego.
Na przykład, jeśli chcesz dokonać transakcji na 3000 kontraktów wieczystych ETHU/SDT, możesz wykorzystać maksymalnie 75-krotność posiadanego kapitału. IMR = 1 / 75 = 1,3%, a aby uniknąć likwidacji, należy utrzymywać MMR na poziomie 0,8% lub wyższym.
Istnieje 9 różnych scenariuszy dźwigni ustawień za pośrednictwem otwartych interfejsów API OKX. Zapoznaj się z Scenariusze dźwigni dla różnych przypadków użycia.
W przypadku kontraktów wieczystych typu swap istnieją 3 różne scenariusze ustawiania dźwigni finansowej:
Ustaw dźwignię dla instrumentów SWAP w ramach transakcji cross-margin na poziomie kontraktu.
Ustaw dźwignię dla instrumentów SWAP w trybie izolowanego depozytu zabezpieczającego i trybie kupna/sprzedaży pozycji na poziomie kontraktu.
Ustaw dźwignię dla instrumentów SWAP w trybieizolowanego depozytu zabezpieczającego i wybierz pozycjędługą/krótką na poziomie kontraktu i pozycji.
Poniższy przykład pokazuje, jak ustawić dźwignię dla pojedynczego kontraktu SWAP i strony pozycji, w porównaniu do wszystkich kontraktów SWAP dla określonego instrumentu bazowego.
# 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)
Pamiętaj, że parametr żądania posSide jest wymagany tylko wtedy, gdy tryb depozytu zabezpieczającego jest izolowany w trybie pozycji długa/krótka (złożenie zlecenia) dla EXPIRY/PERPETUAL (patrz scenariusz 6 i 9 w Scenariusze dźwigni).
6. Jak mogę składać zlecenia w różnych trybach pozycji (składania zleceń): długa/krótka i kupno/sprzedaż?
Istnieją dwa tryby pozycji (składania zleceń) podczas handlu FUTURES i PERPETUAL: długa/krótka i kupno/sprzedaż (netto)?
Możesz zmienić tryb pozycji (składania zleceń) pomiędzy long/short i kup/sprzedaj (netto), poprzez API
result = accountAPI.set_position_mode(
posMode = "long_short_mode"
)
print(result)
Alternatywnie można to zrobić poprzez Ustawienia w przeglądarce:
W trybie kup/sprzedaż (net) pozycja określonego kontraktu jest ilością netto Twoich transakcji zakupu i sprzedaży. Kiedy składasz zlecenia przez Złóż zlecenie, parametr żądania posSide nie jest obowiązkowy. Jeśli go przekażesz, jedyną prawidłową wartością będzie net.
W trybie długa/krótka, długie i krótkie pozycje danego kontraktu będą niezależne od siebie i muszą być zamykane oddzielnie. Kiedy składasz zlecenia przez Złóż zlecenie, parametr żądania posSide jest obowiązkowy. Prawidłowe wartości to long lub short. Poniżej pokazano, jak ustawić parametr side (strona transakcji) i posSide (strona pozycji) podczas składania zlecenia w różnych scenariuszach:
Złożenie zlecenia kupna i otwarcie/zwiększenie pozycji długiej: side = buy, posSide = long
Złożenie zlecenia kupna i otwarcie/zwiększenie pozycji krótkiej: side = sell, posSide = short
Złożenie zlecenia sprzedaży i zamknięcie/redukcja długiej pozycji: side = sell,posSide = long
Złożenie zlecenia sprzedaży i zamknięcie/redukcja krótkiej pozycji: side = buy, posSide = short Teraz możesz składać zlecenia na instrumenty pochodne!
6.1 Składanie zleceń z limitem za pomocą Złóż zlecenie
Zakup 100 kontraktów swap BTC-USDT po cenie 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 Składanie zleceń rynkowego za pomocą Złóż zlecenie
Zakup 100 kontraktów swap BTC-USDT po cenie rynkowej.
# 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. Jak uzyskać szczegóły/stan danego zlecenia (patrz Pobierz szczegóły zlecenia)?
Oprócz ordId, można również określić clOrdId, aby uzyskać szczegóły zlecenia.
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)
8. Jak anulować zlecenie za pomocą Anuluj zlecenie?
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)
9. Jak zmienić zmodyfikować za pomocą Zmodyfikuj zlecenie?
Możesz także użyć clOrdId zamiast ordId Ten przykład pokazuje zmianę nowego rozmiaru.
result = tradeAPI.amend_order(
instId = "BTC-USDT-SWAP",
ordId = "505073046126960640",
newSz = "80"
)
print(result)
10. Jak uzyskać listę otwartych zleceń za pomocą Pobierz listę zleceń?
result = tradeAPI.get_order_list()
print(result)
11. Jak uzyskać historię zleceń za pomocą Pobierz historię zleceń (ostatnie 7 dni) i Pobierz historię zleceń (ostatnie 3 miesiące)?
# 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. Jak uzyskać szczegóły transakcji za pośrednictwem Pobierz szczegóły transakcji (z ostatnich 3 dni) i Pobierz szczegóły transakcji (z ostatnich 3 miesięcy)?
# 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. Jak uzyskać pozycje za pomocą Pobierz pozycje?
Gdy konto jest w trybie netto, wyświetlona zostanie pozycja netto każdego kontraktu; gdy konto jest w trybie long/short, długa lub krótka pozycja każdego kontraktu zostanie wyświetlona osobno.
result = accountAPI.get_positions()
print(result)
Możesz śledzić swój niezrealizowany zysk i stratę poprzez parametr odpowiedzi upl.
Więcej przykładów
Aby uzyskać więcej przykładów, pobierz pełny Jupyter Notebook tutaj.
Jeśli masz jakiekolwiek pytania dotyczące naszych interfejsów API, możesz zadać je w nasze społeczności API.