Як торгувати на споті за допомогою Блокнота 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-ключі?
Після входу в OKX перейдіть у пункт Торгувати > Демоторгівля та створіть API-ключі для тестування
Перейдіть в Акаунт > API для створення API-ключів
Створіть API-ключі для різних основних акаунтів/субакаунтів, які у вас є
Щоб торгувати з API-ключем, у розділі Дозволи виберіть Торгувати
Тепер у вас є API-ключ, секретний ключ і парольна фраза. Зберігайте їх у надійному місці!
Створіть екземпляри змінних python для зберігання деталей API в блокноті для подальшого використання
Python1 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, ви можете виконати:
1 import okx.Trade as Trade
Тепер усе готово для використання всіх можливостей, що надає python-okx!
5. Як отримати доступ до наших ринкових даних?
Дізнайтеся, як отримати доступ до наших ринкових даних, і перегляньте код нижче.
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. Як зчитати доступні торгові пари?
Дізнайтеся, як зчитати доступні торгові пари, і перегляньте код нижче.
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
.
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
.
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.
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 за поточною ринковою ціною.
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.
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
під час виклику кінцевої точки скасування, редагування чи отримання ордера.
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
1 result = tradeAPI.get_order(instId="BTC-USDT", ordId="497819823594909696")
2 print(result)
11.2 Використання clOrdId
1 result = tradeAPI.get_order(instId="BTC-USDT", clOrdId="002")
2 print(result)
12. Як скасувати ордер?
Докладніше про те, як скасувати ордер, можна дізнатись у нашому спеціальному посібнику.
Крім того, замість ordId
можна використати clOrdId
.
1 result = tradeAPI.cancel_order(instId="BTC-USDT", ordId = "489093931993509888")
2 print(result)
13. Як змінити ордер?
Докладніше про те, як змінити ордер, можна дізнатись у нашому спеціальному посібнику.
Крім того, замість ordId
можна використати clOrdId
.
1 result = tradeAPI.amend_order(
2 instId="BTC-USDT",
3 ordId="489103565508685824",
4 newSz="0.012"
5 )
6 print(result)
14. Як отримати доступ до списку відкритих ордерів?
Докладніше про те, як отримати список відкритих ордерів, можна дізнатись у нашому спеціальному посібнику.
1 result = tradeAPI.get_order_list()
2 print(result)
15. Як отримати доступ до історії ордерів?
15.1. За останні 7 днів
Додаткову інформацію про те, як отримати доступ до історії ордерів за останні 7 днів, можна знайти в нашому спеціальному посібнику.
1 result = tradeAPI.get_orders_history(
2 instType="SPOT"
3 )
4 print(result)
15.2. За останні 3 місяці
Додаткову інформацію про те, як отримати доступ до історії ордерів за останні 3 місяці, можна знайти в нашому спеціальному посібнику.
1 result = tradeAPI.get_orders_history_archive(
2 instType="SPOT"
3 )
4 print(result)
16. Які ще можливості дає API OKX із Блокнотом Jupyter?
Щоб ознайомитися з додатковими прикладами, завантажте повний Блокнот Jupyter тут. Якщо у вас виникли запитання щодо наших API, поставте їх у каналі підтримки API OKX у Telegram.