對于 VIP 用戶,費用結構取決于您每月的交易量(以美元表示)。VIP 用戶有 7 個等級,均遵循掛單/接受單費用結構。您可以在下面看到費用結構:

期貨市場也是如此,但費用結構不同。下面有兩個表格,第一個表格適用于普通用戶,第二個表格適用于 VIP 用戶。

如需更詳細地了解 OKX 費用結構及其運作方式,請訪問以下鏈接,其中通過示例進行了詳細解釋:https://www.okx.com/fees.html

為什么要使用 OKX API?

為什么我不應該使用 OKX API?

OKX API 在我的國家/地區可用嗎?

OKX 致力于在全球范圍內提供服務,但由于一些嚴格的法規和管轄權問題,它無法在以下國家/地區提供服務:

香港、古巴、伊朗、朝鮮、克里米亞、蘇丹、馬來西亞、敘利亞、美國(包括所有美國領土)、孟加拉國、玻利維亞、厄瓜多爾和吉爾吉斯斯坦。

使用 OKX API 有哪些替代方案?

OKX 可以替換為其他更適合您需求的網站。以下是其中一些:

OKX API 有哪些客戶端可用?

OKX API 可在以下客戶端中使用:

如何開始使用 OKX API?

為了開始使用 OKX API 并啟動這些交易策略,我們首先需要訪問他們的網站并獲取 API 密鑰。

轉到以下鏈接并單擊頁面頂部的藍色“注冊”按鈕:https://www.okx.com

然后輸入您的電子郵件地址,創建密碼并單擊注冊按鈕。

然后輸入將發送到您的電子郵件帳戶的 6 位數代碼。之后,您將受到 OKX 網站的歡迎。現在,轉到右上角的個人資料圖標,然后在下拉菜單中選擇 API。

現在將提示您通過手機號碼或 Google Authenticator 啟用 2FA。之后,轉到 API 部分并單擊“+創建 V5 API 密鑰”按鈕。

然后,您可以指定 API Key 實例如何在您的帳戶上運行。您可以添加不同的權限、名稱等。

然后,您將獲得 API 密鑰和密鑰,您應該將其存儲在安全的地方以供日后使用。就是這樣!現在我們將探索 OKX API 功能,并在最后模擬兩個簡單的交易腳本。

如何使用 OKX API 獲取交易對信息?

您可以使用 OKX API 利用 tickers 端點獲取交易對。使用 OKX API,您需要指定要獲取的股票代碼類型,即現貨、掉期、期貨或期權。

讓我們導入相關庫并獲取所有現貨交易對。為了清理,我們將數據放入 pandas 數據框中,刪除instType 又名“SPOT”列并打印最后 5 個轉置的值。

import requests
import pandas as pd

url = 'https://www.okx.com'
tickers = pd.DataFrame((requests.get(url+'/api/v5/market/tickers?instType=SPOT').json())['data'])
tickers = tickers.drop('instType', axis=1)
tickers.tail().T

在這里我們看到 SPOT 市場有 505 個交易對,這是一個不錯的數字。要查看其余交易對,只需將端點中的“SPOT”更改為您感興趣的交易對(即“FUTURES”)。

如何使用 OKX API 獲取價格數據?

要使用 OKX API 獲取價格數據,您需要在所需端點中指定工具 ID。工具 ID 由交易對 + 其所屬的市場組成。讓我們將其編碼出來:

ticker = requests.get(url+'/api/v5/market/ticker?instId=BTC-USD-SWAP').json()
ticker
{'code' : '0',
'msg': '',
'data': [{'instType': 'SWAP',
'instId': 'BTC-USD-SWAP',
'last': '56143.2',
'lastSz': '5',
'askPx': '56145.4',
'askSz': '1475',
'bidPx': '56145.3',
'bidSz': '538',
'open24h': '58578.6',
'high24h': '59012',
'low24h': '54561.2',
'volCcy24h': '22600.2617',
'vol24h.: '12824931',
'ts': '1620119907853',
'sodUtc0': '57204.8',
'sodUtc8': '57653.4'}]}

如何使用 OKX API 獲取歷史數據?

要使用 OKX API 獲取歷史數據,您需要決定使用哪個端點,因為歷史數據有 4 個端點。然后您可以通過所選端點請求數據。

以下列出并解釋了 4 個端點:

我將采用第二種方法,并使用預設的蠟燭圖獲取過去幾年的 BTC-USD 數據。我將清理響應并將其放入 pandas 數據框中。

historical = pd.DataFrame((requests.get(url+'/api/v5/market/history-candles?instId=BTC-USDT-SWAP').json())['data'])
historical

這里我們看到 OKX API 返回的數據沒有以信息豐富的方式標記。讓我們看看文檔中的內容,并相應地重命名列。

我們還將把 Unix 時間轉換為日期時間,并按升序對值進行排序。

historical.columns= ["Date","Open","High","Low","Close","Vol","volCcy"]
historical['Date'] = pd.to_datetime(historical['Date'], unit='ms')
historical.set_index('Date', inplace=True)
historical.sort_values(by='Date')
historical

太好了,我們現在可以使用指標并利用這些數據做一些事情。

如何使用 OKX API 訪問 20 SMA 等技術指標?

OKX API 不具備指標創建功能,但我們可以利用 pandas 庫或為指標構建的更復雜的 btalib 庫自行完成。

讓我們根據數據創建一個簡單的 20 SMA,并將其全部放在一個漂亮的圖表中:

historical['20 SMA'] = historical.Close.rolling(20).mean()
historical.tail()
import plotly.graph_objects as go
fig = go.Figure(data=[go.Candlestick(x = historical.index,
open = historical['Open'],
high = historical['High'],
low = historical['Low'],
close = historical['Close'],
),
go.Scatter(x=historical.index, y=historical['20 SMA'], line=dict(color='purple', width=1))])

fig.show()

如何使用 OKX API 獲取訂單簿數據?

可以使用 OKX API 獲取訂單簿數據,方法是使用獲取訂單簿端點并指定工具 ID 和訂單簿深度來檢索數據。API 返回買賣價分拆的數據。

book = requests.get(url+'/api/v5/market/books?instId=BTC-USD-SWAP&sz=10').json()
book['data']

如果您想將出價和要價拆分到各自的數據框中,您可以執行以下操作:

ask = pd.DataFrame(book['data'][0]['asks'])
bid = pd.DataFrame(book['data'][0]['bids'])

ask

我們再次用數字代替了信息列。讓我們以第一行為例,解釋一下每個數字的含義:

現在,讓我們從兩個數據框中取出 0、1 和 3,并將它們合并為一個。

bid.pop(2)
ask.pop(2)
df = pd.merge(bid, ask, left_index=True, right_index=True)
df = df.rename({"0_x":"Bid Price","1_x":"Bid Size", "3_x":"Bid Amount",
"0_y":"Ask Price","1_y":"Ask Size", "3_y":"Ask Amount"}, axis='columns')
df.head()

如何使用 OKX API 獲取交易數據?

要使用 OKX API 獲取交易數據,您需要在 Get Trades 端點上執行請求。操作方法如下:

trades = requests.get(url+'/api/v5/market/trades?instId=BTC-USDT').json()
trades['data']
[{'instld': 'BTC-USDT',
'side': 'sell',
'sz': '0.00928',
'px': '54118.4',
'tradeId.: '177167228',
'ts': '1620149876536'},
{'instID': 'BTCUSDT',
'side': 'buy',
'sz': '0.00002267',
'px': '54118.5',
'tradeId': '177167227',
'ts': '1620149876291'},

如何使用 OKX 觸發市價單與限價單?

除了價格參數之外,使用我們將要使用的OKX SDK啟動市價訂單和限價訂單時還有一點區別。

不同之處在于您指定尺寸(sz)參數時。使用市價單時,尺寸將由股票代碼的第二個符號指定,反之亦然。

sz為了說明這一點,以下兩個訂單都將購買價值 20 美元的 ETH,但市價單將關注 USDC 部分,而限價單將關注 ETH 部分。這就是參數不一樣的原因。

# Limit Order
tradeAPI.place_order(instId='ETH-USDC', tdMode='cash', side='buy',
ordType='limit', sz='0.0093', px='2159.00')
# Market Order
tradeAPI.place_order(instId='ETH-USDC', tdMode='cash', side='buy',
ordType='market', sz='20')

當 ETH 達到某個價格時,如何使用 OKX API 對 BTC 執行交易?

在第一個示例中,我將向您展示如何正確安全地根據指定要求啟動訂單。我們想要做的事情是當 ETH 達到某個價格(例如 3000 美元)時啟動 BTC 交易。

為了實現這一點,我們需要設置訂單基礎,然后創建一個循環來檢查價格水平是否被觸及。如果價格被觸及,我們將執行市價訂單。相反,我們將繼續循環。

當價格執行后,我們會等待幾秒鐘,然后檢查訂單是否真的成交。這一額外步驟對于您的交易策略非常重要,因為交易所服務器可能會遇到一些問題。

現在我們已經有了主要想法,是時候開始交易了。請注意,我們將為此使用 OKX python SDK 。

import okx.Trade_api as Trade
import requests, time

api_key = ""
secret_key = ""
passphrase = ""
instId = "ETH-USDC"
flag = '0'

tradeAPI = Trade.TradeAPI(api_key, secret_key, passphrase, False, flag)

while True:
try:
ticker = requests.get('http://www.okx.com/api/v5/market/ticker?instId=BTC-USDC').json()
print(ticker['data'][0]['bidPx'])
except Exception as e:
print(f'Unable to obtain ticker: {e}')

if float(ticker['data'][0]['bidPx']) >= 32000.00:
try:
result = tradeAPI.place_order(instId=instId, tdMode='cash', side='buy',
ordType='limit', sz='0.005', px='2000.00')
ordId = result['data'][0]['ordId']
except Exception as e:
print(f'Unable to execute order: {e}')

time.sleep(2)

try:
check = tradeAPI.get_orders(instId, ordId)
except Exception as e:
print(f'Unable to check order: {e}')

if check['data'][0]['state'] == 'canceled':
print('Order was canceled.')
break
else:
print('Order was executed!')
break
else:
print('Requirement not reached.')
time.sleep(15)

當 BTC 在過去 5 分鐘內波動 5% 時,如何使用 OKX API 執行 ETH 交易?

主要任務是當 BTC 在過去 5 分鐘內波動 5% 時執行 ETH 交易。這意味著我們需要創建一個循環來獲取兩種加密貨幣的價格并計算兩者之間的百分比變化。

如果百分比變化小于 5%,程序將休眠 5 分鐘并再次計算百分比變化。如果百分比變化等于或大于 5%,則交易將執行。

交易執行后,我們將休眠幾秒鐘,然后檢查交易是否已完成。現在邏輯已經設置好,是時候編寫代碼了:

import okx.Trade_api as Trade
import requests, time

api_key = ""
secret_key = ""
passphrase = ""
instId = "ETH-USDC"
flag = '0'

tradeAPI = Trade.TradeAPI(api_key, secret_key, passphrase, False, flag)

while True:
try:
old = requests.get('http://www.okx.com/api/v5/market/ticker?instId=BTC-USDC').json()
print(old['data'][0]['bidPx'])
except Exception as e:
print(f'Unable to obtain ticker: {e}')

time.sleep(300)

try:
new = requests.get('http://www.okx.com/api/v5/market/ticker?instId=BTC-USDC').json()
print(new['data'][0]['bidPx'])
except Exception as e:
print(f'Unable to obtain ticker: {e}')

percent = ((float(new['data'][0]['bidPx']) - float(old['data'][0]['bidPx'])) / float(old['data'][0]['bidPx'])) * 100

if percent >= 5:
try:
result = tradeAPI.place_order(instId=instId, tdMode='cash', side='buy',
ordType='limit', sz='0.005', px='2000.00')
ordId = result['data'][0]['ordId']
except Exception as e:
print(f'Unable to execute order: {e}')

time.sleep(2)

try:
check = tradeAPI.get_orders(instId, ordId)
except Exception as e:
print(f'Unable to check order: {e}')

if check['data'][0]['state'] == 'canceled':
print('Order was canceled.')
break
else:
print('Order was executed!')
break
else:
print(f'Requirement not reached. Percentage move at {percent}')

如何使用OKX API取消訂單?

要使用 OKX API 取消訂單,您只需訪問“取消訂單”端點。以下是 OKX API SDK 文檔中的示例代碼:

import okx.Trade_api as Trade

tradeAPI = Trade.TradeAPI(api_key, secret_key, passphrase, False, flag)
tradeAPI.cancel_order(instId, ordId, clOrdId)

上一篇:

Bittrex API – 入門指南

下一篇:

Coinbase Pro API – 入門指南
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費