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

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

Дізнайтеся, як вести просту спотову торгівлю, викликаючи функції в бібліотеці 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 в блокноті для подальшого використання

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

```
api_key = "xxxxx"
secret_key = "xxxxx"
passphrase = "xxxxxx"
```

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

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

  • Trade

  • BlockTrading

  • Funding

  • Account

  • Convert

  • Earning

  • SubAccount

  • MarketData

  • PublicData

  • TradingData

  • Status

  • NDBroker

  • FDBroker

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

1 import okx.Trade as Trade

```
import okx.Trade as Trade
```

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

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

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

1 import okx.MarketData as MarketData
2 flag = "1" # реальна торгівля: 0, демоторгівля: 1
3 marketDataAPI = MarketData.MarketAPI(flag=flag)
4 result = marketDataAPI.get_tickers(instType="SPOT")print(result)

```
import okx.MarketData as MarketData
flag = "1" # live trading: 0, демоторгівля: 1
marketDataAPI = MarketData.MarketAPI(flag=flag) result = marketDataAPI.get_tickers(instType="SPOT"
)
print(result)
```

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

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

```
import okx.PublicData as PublicData

flag = "1" # реальна торгівля: 0, демоторгівля: 1

PublicDataAPI = PublicData.PublicAPI(flag=flag)

result = PublicDataAPI.get_instruments(
instType="SPOT"
)
print(result)
```

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

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

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

```
import okx.Account as Account
flag = "1" # реальна торгівля: 0, демоторгівля: 1

accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)

result = accountAPI.get_account_balance()
print(result)
```

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

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

  • простий акаунт;

  • акаунт з одновалютною маржею;

  • акаунт з мультивалютною маржею;

  • акаунт маржі портфеля.

Щоб дізнатися, чим відрізняються ці режими акаунта та як налаштувати режим акаунта на сайті, ознайомтеся з нашим спеціальним посібником. У режимі маржі або режимі торгівлі параметр tdMode визначає спосіб формування маржі під позицію. Це потрібно встановлювати щоразу, коли розміщується новий ордер. Для спотової торгівлі в режимі простого акаунта або акаунт з одновалютною маржею встановіть tdMode='cash'.Для спотової торгівлі в режимі мультивалютної маржі або маржі портфеля встановіть tdMode= 'cross'.Далі коротко пояснюється, як визначити режим, встановлений на вашому акаунті.

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

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

```
import okx.Account as Account

flag = "1" # реальна торгівля: 0, демоторгівля: 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("Простий режим")
elif acctLv == "2":
print("Режим одновалютної маржі")
elif acctLv == "3":
print("Режим мультивалютної маржі")
elif acctLv == "4":
print("Режим маржі портфеля")
```

10. Як розміщувати спотові ордери в простому режимі/режимі одновалютної маржі?

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

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

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

```
# лімітний ордер
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="limit",
px="19000",
sz="0.01"
)
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"])
```

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

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

Для прикладу візьмемо купівлю BTC на 100 USD за поточною ринковою ціною.

```
# ринковий ордер
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="market",
sz="100",
)
print(result)
```

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

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

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

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

```
# ринковий ордер
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="market",
sz="100",
tgtCcy="quote_ccy" # це визначає одиницю параметру sz.
)
print(result)
```

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

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

```
# ринковий ордер
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="market",
sz="100",
clOrdId="003" # ви можете встановити власний ID ордера
)
print(result)
```

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

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

Використання ordId

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

Використання clOrdId

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

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

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

Крім того, замість ordId можна використати clOrdId.

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

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

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

Крім того, замість ordId можна використати clOrdId.

```
result = tradeAPI.amend_order(
instId="BTC-USDT",
ordId="489103565508685824",
newSz="0.012"
)
print(result)
```

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

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

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

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

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

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

```
result = tradeAPI.get_orders_history(
instType="SPOT"
)
print(result)
```

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

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

```
result = tradeAPI.get_orders_history_archive(
instType="SPOT"
)
print(result)
```

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

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