Как торговать на споте с помощью 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 OS или Linux. Это руководство подробно объясняет, как использовать Jupyter Notebook.

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

Запустите Jupyter Notebook и установите пакет 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.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. Как узнать баланс аккаунта?

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

Примечание: для спотовой торговли в режиме cash 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 при стоимости 1 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. Как отменить ордер?

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

Вы также можете использовать ClOrdId вместо ordId.

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

13. Как изменить ордер?

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

Вы также можете использовать ClOrdId вместо ordId.

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, присоединяйтесь к сообществу и задайте их там.