Як торгувати на споті за допомогою Блокнота Jupyter?
Дізнайтеся, як вести просту спотову торгівлю, викликаючи функції в бібліотеці python-okx у Блокноті Jupyter.
1. Як запустити фрагменти коду Python в Блокноті Jupyter?
Блокнот Jupyter — неймовірно потужний і простий у роботі інструмент розробки й аналізу даних на Python. Сервер Блокнота Jupyter можна запустити на Windows, Mac OS або Linux. У цьому посібнику наведено вичерпні інструкції з налаштування та запуску Блокнота Jupyter.
2. Як встановити пакет python-okx?
Щойно ви запустили Блокнот Jupyter, ви можете встановити пакет python-okx, просто виконавши команду pip install python-okx у блокноті чи терміналі (або через командний рядок для Windows):
3. Як створюються API-ключі?
1. Після входу в OKX перейдіть у пункт Торгувати > Демоторгівля та створіть API-ключі для тестування
2. Перейдіть в Акаунт > API для створення API-ключів
3. Створіть API-ключі для різних основних акаунтів/субакаунтів, які у вас є
4. Щоб торгувати з API-ключем, у розділі Дозволи виберіть Торгувати
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.