Jak handlować instrumentami pochodnymi za pomocą Jupyter Notebook?

Opublikowano 28 wrz 2023Zaktualizowano 23 gru 202510 min czytania178

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 instrumentów pochodnych

Na OKX dostępne są trzy rodzaje instrumentów pochodnych:

  • Expiry

  • Perpetual

  • 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 dla handlu instrumentami pochodnymi w Jupyter Notebook, korzystając z Pobierz dane rynkowe?

Możesz również zastąpić instType wartością EXPIRY lub 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. Jak mogę pobrać dostępne pary handlowe dla handlu instrumentami pochodnymi za pomocą Jupyter Notebook, używając Get instruments?

Podobnie jak w przypadku innych metod, wybierz typ instType, dla którego chcesz uzyskać informacje.

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 Oblicz wartość nominalną kontraktu instrumentu pochodnego z parametrem instrumentu ctVal i ctMult

Aby obliczyć wartość nominalną kontraktu pochodnego (tj. future, swapy perpetual i opcje), 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

JSON
        "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 dla handlu instrumentami pochodnymi za pomocą Jupyter Notebook za pomocą Get balance?

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. Jaki tryb konta i tryb depozytu zabezpieczającego/transakcji kwalifikują się do handlu instrumentami pochodnymi z Jupyter Notebook?

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 Pobierz konfigurację konta

Upewnij się, że jesteś w odpowiednim trybie konta do handlu instrumentami pochodnymi.

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. Jak ustawić dźwignię dla handlu instrumentami pochodnymi za pomocą Jupyter Notebook przez 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 finansowej 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. Różne przypadki można znaleźć na stronie Scenariusze ustawiania dźwigni.

W przypadku kontraktów wieczystych typu swap istnieją 3 różne scenariusze ustawiania dźwigni finansowej:

  • Ustaw dźwignię finansową dla instrumentów SWAP w ramach transakcji z krzyżowym depozytem zabezpieczającym na poziomie kontraktu.

  • Ustaw dźwignię finansową dla instrumentów SWAP w trybie izolowanego depozytu zabezpieczającego i kupna/sprzedaży pozycji na poziomie kontraktu.

  • Ustaw dźwignię dla instrumentów SWAP w trybie izolowanego depozytu zabezpieczającego i long/short 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.

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)

Zwróć uwagę, że parametr żądania posSide jest wymagany tylko wtedy, gdy tryb depozytu zabezpieczającego jest izolowany w trybie pozycji long/short (składanie zleceń) dla instrumentów EXPIRY/PERPETUAL (zobacz scenariusz 6 i 9 w Scenariusze ustawiania dźwigni).

6. Jak mogę składać zlecenia na instrumenty pochodne za pomocą Jupyter Notebook w różnych trybach pozycji (składania zleceń): long/short 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 Ustaw tryb pozycji:

SQL
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. W przypadku składania zleceń za pośrednictwem strony Złóż zlecenie, parametr żądania posSide nie jest obowiązkowy. Jeśli ją przekażesz, jedyną prawidłową wartością będzie net.

W trybie long/short, długie i krótkie pozycje danego kontraktu będą niezależne od siebie i muszą być zamykane oddzielnie. W przypadku składania zleceń za pośrednictwem strony 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 sprzedaży i otwarcie/zwiększenie krótkiej pozycji: 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 Złożenie zlecenia z limitem ceny za pośrednictwem strony Złóż zlecenie

Zakup 100 kontraktów swap BTC-USDT po cenie 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 Złożenie zlecenia rynkowego ceny za pośrednictwem strony Złóż zlecenie

Zakup 100 kontraktów swap BTC-USDT po cenie rynkowej.

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. Jak mogę uzyskać szczegóły zlecenia na instrumenty pochodne w notebooku Jupyter, korzystając z Pobierz szczegóły zlecenia?

Oprócz ordId, można również określić clOrdId, aby uzyskać szczegóły zlecenia.

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

8. Jak mogę anulować zlecenie na instrumenty pochodne za pomocą Jupyter Notebook używając funkcji Anuluj zlecenie?

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

9. Jak mogę zmienić zlecenie na instrumenty pochodne za pomocą Jupyter Notebook używając Zmień zlecenie?

Możesz także użyć clOrdId zamiast ordId. Ten przykład pokazuje zmianę nowego rozmiaru.

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

10. Jak mogę pobrać listę otwartych zleceń dla handlu instrumentami pochodnymi za pomocą Jupyter Notebook, korzystając z Pobierz listę zleceń?

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

11. Jak pobrać historię zleceń dla handlu instrumentami pochodnymi w Jupyter Notebook za pomocą Pobierz historię zleceń (ostatnie 7 dni) i Pobierz historię zleceń (ostatnie 3 miesiące)?

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. Jak mogę uzyskać szczegóły transakcji dla handlu instrumentami pochodnymi za pomocą Jupyter Notebook poprzez Pobierz szczegóły transakcji (ostatnie 3 dni) i Pobierz szczegóły transakcji (ostatnie 3 miesiące)?

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. Jak mogę pobrać pozycje dla handlu instrumentami pochodnymi za pomocą Jupyter Notebook przez Pobierz pozycje?

Gdy konto działa w trybie net, wyświetlana jest pozycja net dla każdego kontraktu; gdy konto działa w trybie long/short, pozycje long i short dla każdego kontraktu są wyświetlane osobno.

SQL
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.