對(duì)于 VIP 用戶,費(fèi)用結(jié)構(gòu)取決于您每月的交易量(以美元表示)。VIP 用戶有 7 個(gè)等級(jí),均遵循掛單/接受單費(fèi)用結(jié)構(gòu)。您可以在下面看到費(fèi)用結(jié)構(gòu):

期貨市場(chǎng)也是如此,但費(fèi)用結(jié)構(gòu)不同。下面有兩個(gè)表格,第一個(gè)表格適用于普通用戶,第二個(gè)表格適用于 VIP 用戶。

如需更詳細(xì)地了解 OKX 費(fèi)用結(jié)構(gòu)及其運(yùn)作方式,請(qǐng)?jiān)L問(wèn)以下鏈接,其中通過(guò)示例進(jìn)行了詳細(xì)解釋:https://www.okx.com/fees.html

為什么要使用 OKX API?

為什么我不應(yīng)該使用 OKX API?

OKX API 在我的國(guó)家/地區(qū)可用嗎?

OKX 致力于在全球范圍內(nèi)提供服務(wù),但由于一些嚴(yán)格的法規(guī)和管轄權(quán)問(wèn)題,它無(wú)法在以下國(guó)家/地區(qū)提供服務(wù):

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

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

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

OKX API 有哪些客戶端可用?

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

如何開(kāi)始使用 OKX API?

為了開(kāi)始使用 OKX API 并啟動(dòng)這些交易策略,我們首先需要訪問(wèn)他們的網(wǎng)站并獲取 API 密鑰。

轉(zhuǎn)到以下鏈接并單擊頁(yè)面頂部的藍(lán)色“注冊(cè)”按鈕:https://www.okx.com

然后輸入您的電子郵件地址,創(chuàng)建密碼并單擊注冊(cè)按鈕。

然后輸入將發(fā)送到您的電子郵件帳戶的 6 位數(shù)代碼。之后,您將受到 OKX 網(wǎng)站的歡迎。現(xiàn)在,轉(zhuǎn)到右上角的個(gè)人資料圖標(biāo),然后在下拉菜單中選擇 API。

現(xiàn)在將提示您通過(guò)手機(jī)號(hào)碼或 Google Authenticator 啟用 2FA。之后,轉(zhuǎn)到 API 部分并單擊“+創(chuàng)建 V5 API 密鑰”按鈕。

然后,您可以指定 API Key 實(shí)例如何在您的帳戶上運(yùn)行。您可以添加不同的權(quán)限、名稱等。

然后,您將獲得 API 密鑰和密鑰,您應(yīng)該將其存儲(chǔ)在安全的地方以供日后使用。就是這樣!現(xiàn)在我們將探索 OKX API 功能,并在最后模擬兩個(gè)簡(jiǎn)單的交易腳本。

如何使用 OKX API 獲取交易對(duì)信息?

您可以使用 OKX API 利用 tickers 端點(diǎn)獲取交易對(duì)。使用 OKX API,您需要指定要獲取的股票代碼類型,即現(xiàn)貨、掉期、期貨或期權(quán)。

讓我們導(dǎo)入相關(guān)庫(kù)并獲取所有現(xiàn)貨交易對(duì)。為了清理,我們將數(shù)據(jù)放入 pandas 數(shù)據(jù)框中,刪除instType 又名“SPOT”列并打印最后 5 個(gè)轉(zhuǎn)置的值。

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 市場(chǎng)有 505 個(gè)交易對(duì),這是一個(gè)不錯(cuò)的數(shù)字。要查看其余交易對(duì),只需將端點(diǎn)中的“SPOT”更改為您感興趣的交易對(duì)(即“FUTURES”)。

如何使用 OKX API 獲取價(jià)格數(shù)據(jù)?

要使用 OKX API 獲取價(jià)格數(shù)據(jù),您需要在所需端點(diǎn)中指定工具 ID。工具 ID 由交易對(duì) + 其所屬的市場(chǎng)組成。讓我們將其編碼出來(lái):

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 獲取歷史數(shù)據(jù)?

要使用 OKX API 獲取歷史數(shù)據(jù),您需要決定使用哪個(gè)端點(diǎn),因?yàn)闅v史數(shù)據(jù)有 4 個(gè)端點(diǎn)。然后您可以通過(guò)所選端點(diǎn)請(qǐng)求數(shù)據(jù)。

以下列出并解釋了 4 個(gè)端點(diǎn):

我將采用第二種方法,并使用預(yù)設(shè)的蠟燭圖獲取過(guò)去幾年的 BTC-USD 數(shù)據(jù)。我將清理響應(yīng)并將其放入 pandas 數(shù)據(jù)框中。

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

這里我們看到 OKX API 返回的數(shù)據(jù)沒(méi)有以信息豐富的方式標(biāo)記。讓我們看看文檔中的內(nèi)容,并相應(yīng)地重命名列。

我們還將把 Unix 時(shí)間轉(zhuǎn)換為日期時(shí)間,并按升序?qū)χ颠M(jìn)行排序。

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

太好了,我們現(xiàn)在可以使用指標(biāo)并利用這些數(shù)據(jù)做一些事情。

如何使用 OKX API 訪問(wèn) 20 SMA 等技術(shù)指標(biāo)?

OKX API 不具備指標(biāo)創(chuàng)建功能,但我們可以利用 pandas 庫(kù)或?yàn)橹笜?biāo)構(gòu)建的更復(fù)雜的 btalib 庫(kù)自行完成。

讓我們根據(jù)數(shù)據(jù)創(chuàng)建一個(gè)簡(jiǎn)單的 20 SMA,并將其全部放在一個(gè)漂亮的圖表中:

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 獲取訂單簿數(shù)據(jù)?

可以使用 OKX API 獲取訂單簿數(shù)據(jù),方法是使用獲取訂單簿端點(diǎn)并指定工具 ID 和訂單簿深度來(lái)檢索數(shù)據(jù)。API 返回買(mǎi)賣(mài)價(jià)分拆的數(shù)據(jù)。

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

如果您想將出價(jià)和要價(jià)拆分到各自的數(shù)據(jù)框中,您可以執(zhí)行以下操作:

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

ask

我們?cè)俅斡脭?shù)字代替了信息列。讓我們以第一行為例,解釋一下每個(gè)數(shù)字的含義:

現(xiàn)在,讓我們從兩個(gè)數(shù)據(jù)框中取出 0、1 和 3,并將它們合并為一個(gè)。

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 獲取交易數(shù)據(jù)?

要使用 OKX API 獲取交易數(shù)據(jù),您需要在 Get Trades 端點(diǎn)上執(zhí)行請(qǐng)求。操作方法如下:

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 觸發(fā)市價(jià)單與限價(jià)單?

除了價(jià)格參數(shù)之外,使用我們將要使用的OKX SDK啟動(dòng)市價(jià)訂單和限價(jià)訂單時(shí)還有一點(diǎn)區(qū)別。

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

sz為了說(shuō)明這一點(diǎn),以下兩個(gè)訂單都將購(gòu)買(mǎi)價(jià)值 20 美元的 ETH,但市價(jià)單將關(guān)注 USDC 部分,而限價(jià)單將關(guān)注 ETH 部分。這就是參數(shù)不一樣的原因。

# 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')

當(dāng) ETH 達(dá)到某個(gè)價(jià)格時(shí),如何使用 OKX API 對(duì) BTC 執(zhí)行交易?

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

為了實(shí)現(xiàn)這一點(diǎn),我們需要設(shè)置訂單基礎(chǔ),然后創(chuàng)建一個(gè)循環(huán)來(lái)檢查價(jià)格水平是否被觸及。如果價(jià)格被觸及,我們將執(zhí)行市價(jià)訂單。相反,我們將繼續(xù)循環(huán)。

當(dāng)價(jià)格執(zhí)行后,我們會(huì)等待幾秒鐘,然后檢查訂單是否真的成交。這一額外步驟對(duì)于您的交易策略非常重要,因?yàn)榻灰姿?wù)器可能會(huì)遇到一些問(wèn)題。

現(xiàn)在我們已經(jīng)有了主要想法,是時(shí)候開(kāi)始交易了。請(qǐng)注意,我們將為此使用 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)

當(dāng) BTC 在過(guò)去 5 分鐘內(nèi)波動(dòng) 5% 時(shí),如何使用 OKX API 執(zhí)行 ETH 交易?

主要任務(wù)是當(dāng) BTC 在過(guò)去 5 分鐘內(nèi)波動(dòng) 5% 時(shí)執(zhí)行 ETH 交易。這意味著我們需要?jiǎng)?chuàng)建一個(gè)循環(huán)來(lái)獲取兩種加密貨幣的價(jià)格并計(jì)算兩者之間的百分比變化。

如果百分比變化小于 5%,程序?qū)⑿菝?5 分鐘并再次計(jì)算百分比變化。如果百分比變化等于或大于 5%,則交易將執(zhí)行。

交易執(zhí)行后,我們將休眠幾秒鐘,然后檢查交易是否已完成。現(xiàn)在邏輯已經(jīng)設(shè)置好,是時(shí)候編寫(xiě)代碼了:

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 取消訂單,您只需訪問(wèn)“取消訂單”端點(diǎn)。以下是 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 – 入門(mén)指南

下一篇:

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

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門(mén)場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)