Як торгувати на споті за допомогою Jupyter Notebook?

Опубліковано 29 вер. 2023 р.Оновлено 18 груд. 2024 р.4 хв читання281

Дізнайтеся, як спростити торгівлю на споті викликом функцій з бібліотеки python-okx у Jupyter Notebook.

1. Як запускати фрагменти коду Python у Jupyter Notebook?

CT-web-spottrading-howtoapi-1

Jupyter Notebook — це неймовірно потужний і простий у використанні інструмент для розробки й аналізу даних на базі Python. Ви можете запустити сервер Jupyter Notebook на Windows, Mac OSS або Linux. У цьому посібнику наведено дуже детальну інструкцію про те, як створити й запустити Jupyter Notebook.

2. Як установити пакет python-okx?

Після початку запуску Jupyter Notebook ви можете встановити пакет python-okx, просто запустивши команду pip install python-okx у записнику або в терміналі (або через командний рядок для Windows):

CT-web-spottrading-howtoapi-2

3. Як створити API-ключі?

  1. Щоб створити API-ключі для тестування, після входу в OKX перейдіть у пункт Торгівля> Демоторгівля

    CT-web-trade-demo trading

    Відкрийте сторінку «Демоторгівля»

  2. Перейдіть у меню Акаунт > > API, щоб створити API-ключі

    CT-web-profile-API

    Відкрийте API, щоб створити API-ключі

  3. Створіть API-ключі для різних основних акаунтів/субакаунтів

    CT-web-API-create

    Виберіть «Створити API-ключ»

  4. Виберіть Торгівля у пункті Дозволи для торгівлі з API-ключем

    CT-web-API-trade

    Виберіть «Торгівля» в розділі «Дозволи»

  5. Тепер ви маєте доступ до своїх API-ключа, секретного ключа та парольної фрази. Зберігайте їх у надійному місці!

  6. Ініціюйте змінні python, щоб зберегти деталі своїх API у записнику для використання в майбутньому.

    Python
    1 api_key = "xxxxx"
    2 secret_key = "xxxxx"
    3 passphrase = "xxxxxx"

4. Як імпортувати модулі OKX?

У python-okx є кілька модулів на основі наших модулів REST API. Дізнайтесь у нашому посібнику, як імпортувати модулі OKX.

  • Trade

  • BlockTrading

  • Funding

  • Account

  • Convert

  • Earning

  • SubAccount

  • MarketData

  • PublicData

  • TradingData

  • Status

  • NDBroker

  • FDBroker

Щоб імпортувати модуль Trade, ви можете запустити:

Python
1 import okx.Trade as Trade

Тепер усе готово для використання комплексних функцій, доступних у python-okx!

5. Як отримати доступ до наших ринкових даних?

Дізнайтеся більше про те, як отримати доступ до наших ринкових даних, і дивіться код нижче.

Python
1  import okx.MarketData as MarketData
2  flag = "1"  # live trading: 0, demo trading: 1
3  marketDataAPI = MarketData.MarketAPI(flag=flag)
4  result = marketDataAPI.get_tickers(instType="SPOT")print(result)

6. Як зчитати доступні торгові пари?

Дізнайтеся більше про те, як зчитати наші доступні торгові пари, і дивіться код нижче.

Python
1   import okx.Account as Account
2
3   # API initialization
4   apikey = "YOUR_API_KEY"
5   secretkey = "YOUR_SECRET_KEY"
6   passphrase = "YOUR_PASSPHRASE"
7    
8   flag = "1" # Production trading: 0, Demo trading: 1
9    
10  accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
11
12  result = accountAPI.get_instruments(instType="SPOT")
13  print(result)

7. Як зчитати баланс свого акаунта?

Детальніше про те, як зчитати баланс акаунта, ви можете дізнатись у нашому посібнику.

Примітка: для спотової торгівлі у «готівковому» режимі tdMode, головним чином потрібно вибрати параметри cashBal і frozenBal для кожної валюти ccy у details, а також параметр totalEq.

Python
1   import okx.Account as Account
2   flag = "1"  # live trading: 0, demo trading: 1
3
4   accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
5
6   result = accountAPI.get_account_balance()
7   print(result)

8. Як активувати чотири різні режими акаунта?

У нашій системі єдиного акаунта є чотири режими акаунта:

  • спот

  • спот і ф’ючерси

  • мультивалютна маржа

  • маржа портфеля

Щоб зрозуміти різницю між різними режимами акаунта та як налаштувати режим акаунта через інтерфейс сайту, ознайомтеся з нашим спеціальним посібником.

У режимі маржі або в режимі торгівлі параметр tdMode визначає режим маржі позиції, який потрібно встановлювати з розміщенням нового ордера.

Для спотової торгівлі в спотовому або спотовому та ф’ючерсному режимі торгівлі установіть tdMode='cash'.

Для спотової торгівлі в режимі мультивалютної маржі або маржі портфеля виберіть tdMode = 'cross'.

Далі коротко пояснюється, як дізнатися, який режим зараз вибрано на поточному акаунті.

9. Як дізнатися, який режим зараз вибрано на моєму поточному акаунті?

Більше інформації про те, як дізнатися, який режим зараз вибрано на поточному акаунті, шукайте в окремому посібнику та введіть параметр acctLv.

Python
1 import okx.Account as Account
2
3 flag = "1"  # live trading: 0, demo trading: 1
4 
5 accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
6 result = accountAPI.get_account_config()
7 print(result)
8 
9 if result['code'] == "0":
10     acctLv = result["data"][0]["acctLv"]
11     if acctLv == "1":
12         print("Simple mode")
13     elif acctLv == "2":
14        print("Single-currency margin mode")
15     elif acctLv == "3":
16        print("Multi-currency margin mode")
17     elif acctLv == "4":
18        print("Portfolio margin mode")

10. Як розмістити спотові ордери в спотовому / спотовому та ф’ючерсному режимах?

10.1. Як розмістити лімітний ордер?

Додаткову інформацію про те, як розмістити лімітний ордер у спотовому або спотовому та ф’ючерсному режимах, шукайте в нашому окремому посібнику.

Ось приклад купівлі 0,01 BTC за ціною 19 000 USDT.

Python
1    # limit order
2    result = tradeAPI.place_order(
3            instId="BTC-USDT",
4            tdMode="cash",
5            side="buy",
6            ordType="limit",
7            px="19000",
8            sz="0.01"
9    )
10   print(result)
11
12   if result["code"] == "0":
13          print("Successful order request,order_id = ",result["data"][0]["ordId"])
14   else:
 15         print("Unsuccessful order request,error_code = ",result["data"][0]["sCode"], ", Error_message = ", result["data"][0]["sMsg"])

10.2. Як розмістити ринковий ордер?

Додаткову інформацію про те, як розмістити ринковий ордер у спотовому або спотовому та ф’ючерсному режимах, шукайте в нашому окремому посібнику.

Ось приклад купівлі BTC на 100 USD за актуальною ринковою ціною.

Python
1   #  market order
2   result = tradeAPI.place_order(
3           instId="BTC-USDT",
4           tdMode="cash",
5           side="buy",
6           ordType="market",
7           sz="100",
8   )
9   print(result)

10.3. Як використовувати параметр цільової валюти tgtCcy у спотовій торгівлі?

У спотовій торгівлі параметр tgtCcy визначає одиницю параметра розміру sz та може бути або базовою валютою, або валютою котирування торгової пари. Наприклад, у парі BTC-USDT базова валюта — BTC, а валюта котирування — USDT.

За умовчанням, tgtCcy = quote_ccy для ордерів на купівлю, тобто вказане вами значення sz виражено у валюті котирування. А стандартне значення tgtCcy для ордерів на продаж — base_ccy, тобто вказане вами значення sz виражене базової валюти.

У наведеному нижче прикладі ви збираєтеся розмістити ринковий ордер на купівлю BTC на суму 100 USD.

Python

  1   #  market order
  2   result = tradeAPI.place_order(
  3           instId="BTC-USDT",
  4           tdMode="cash",
  5           side="buy",
  6           ordType="market",
  7           sz="100",
  8           tgtCcy="quote_ccy" # this determines the unit of the sz parameter. 
  9   )
10   print(result)

10.4. Як користуватися параметром ID клієнтського ордера clOrdId?

Розміщуючи ордер, ви можете вказати ідентифікатор клієнтського ордера, вказавши параметр clOrdId, який пізніше можна використати як ідентифікатор замість ordId під час виклику скасування ордера, редагування або кінцевої точки отримання.

Python
1    #  market order
2    result = tradeAPI.place_order(
3           instId="BTC-USDT",
4           tdMode="cash",
5           side="buy",
6           ordType="market",
7           sz="100",
8           clOrdId="003" # you can define your own client defined order ID
9    )
10  print(result)

11. Як отримати деталі певного ордера?

Додаткову інформацію про те, як отримати деталі певного ордера, можна знайти в нашому окремому посібнику.

11.1. З використанням ordId

Python
1 result = tradeAPI.get_order(instId="BTC-USDT", ordId="497819823594909696")
2 print(result)

11.2. З використанням clOrdId

Python
1 result = tradeAPI.get_order(instId="BTC-USDT", clOrdId="002")
2 print(result)

12. Як скасувати ордер?

Додаткову інформацію про те, як скасувати ордер, шукайте в нашому окремому посібнику.

А ще замість ordId ви можете використати clOrdId.

Python
1 result = tradeAPI.cancel_order(instId="BTC-USDT", ordId = "489093931993509888")
2 print(result)

13. Як внести зміни в ордер?

Додаткову інформацію про те, як внести зміни в ордер, шукайте в нашому окремому посібнику.

А ще замість ordId ви можете використати clOrdId.

Python
1 result = tradeAPI.amend_order(
2     instId="BTC-USDT",
3     ordId="489103565508685824",
4     newSz="0.012"
5 )
6 print(result)

14. Як отримати доступ до списку відкритих ордерів?

Додаткову інформацію про те, як отримати доступ до списку відкритих ордерів, шукайте в нашому окремому посібнику.

Python
1 result = tradeAPI.get_order_list()
2 print(result)

15. Як отримати доступ до історії ордерів?

15.1. За останні 7 днів

Додаткову інформацію про те, як отримати доступ до історії ордерів за останні 7 днів, шукайте в нашому окремому посібнику.

Python
1 result = tradeAPI.get_orders_history(
2     instType="SPOT"
3 )
4 print(result)

15.2. За останні 3 місяці

Додаткову інформацію про те, як отримати доступ до історії ордерів за останні 3 місяці, шукайте в нашому окремому посібнику.

Python
1 result = tradeAPI.get_orders_history_archive(
2     instType="SPOT"
3 )
4 print(result)

16. Як додаткові можливості має API від OKX з Jupyter Notebook?

Щоб отримати інші приклади, завантажте повний Jupyter Notebook тут.

Якщо у вас виникли запитання про наші API, ви можете приєднатися до нашої API-спільноти й поставити їх учасникам.