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

Опубліковано 29 вер. 2023 р.Оновлено 22 трав. 2024 р.4 хв читання149

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

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

CT-web-spottrading-howtoapi-1

Блокнот Jupyter — неймовірно потужний і простий у роботі інструмент розробки й аналізу даних на Python. Сервер Блокнота Jupyter можна запустити на Windows, Mac OS або Linux. У цьому посібнику наведено вичерпні інструкції з налаштування та запуску Блокнота Jupyter.

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

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

CT-web-spottrading-howtoapi-2

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

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

    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.PublicData as PublicData
2
3   flag = "1"  # live trading: 0, demo trading: 1
4
5   PublicDataAPI = PublicData.PublicAPI(flag=flag)
6
7    result = PublicDataAPI.get_instruments(
8        instType="SPOT"
9    )
10  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?

Розміщуючи ордер, ви можете вказати власний ID ордера клієнта через параметр 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?

Щоб ознайомитися з додатковими прикладами, завантажте повний Блокнот Jupyter тут. Якщо у вас виникли запитання щодо наших API, поставте їх у каналі підтримки API OKX у Telegram.