Jak handlować instrumentami pochodnymi za pomocą Jupyter Notebook?

Opublikowano 28 wrz 2023Zaktualizowano 2 sty 202610 min czytania179

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.