
Python調(diào)用Google Bard API 完整指南
此外,KuCoin 還支持通過其 P2P 法定交易、快速購(gòu)買服務(wù)或信用卡或借記卡以法定貨幣(美元、歐元、加元、英鎊等)購(gòu)買加密貨幣。
是的,在 KuCoin 上建立賬戶是免費(fèi)的、簡(jiǎn)單且快捷的。
說到交易費(fèi)用,KuCoin 以低費(fèi)率而聞名。主要有 13 個(gè) (0-12) 交易費(fèi)用等級(jí),您可以通過以下兩種方式攀升:
例如,在第 0 層現(xiàn)貨交易費(fèi)用表中,Maker/Taker 費(fèi)用設(shè)置為 0.1%,24 小時(shí)提現(xiàn)金額(BTC)設(shè)置為 200。
在第 7 級(jí),Maker 費(fèi)用最終為 0%,而 Taker 費(fèi)用降至 0.05%,提款限額升至 500。如需詳細(xì)了解現(xiàn)貨和期貨市場(chǎng)費(fèi)用,請(qǐng)?jiān)L問以下網(wǎng)站:
https://www.kucoin.com/vip/level?lang=en_US
在低費(fèi)用方面,KuCoin 的競(jìng)爭(zhēng)對(duì)手是幣安,因?yàn)檫@兩家交易所的費(fèi)用水平相似。KuCoin 可能會(huì)占上風(fēng),因?yàn)樗鼡碛性试S質(zhì)押的 KuCoin 股份。
KuCoin Shares (KCS) 是 KuCoin 原生代幣,提供交易折扣、解鎖更多交易對(duì)、每日加密貨幣股息、福利、優(yōu)惠等特殊福利。您可以質(zhì)押您的 KCS 來解鎖這些特殊福利。
KCS 可以通過推薦鏈接購(gòu)買或獲得。
KuCoin 在所有國(guó)家/地區(qū)都可供未驗(yàn)證賬戶使用。完成驗(yàn)證賬戶的 KYC 規(guī)定后,將提供有關(guān)可用國(guó)家/地區(qū)的信息。
遺憾的是,KuCoin 沒有關(guān)于受限制國(guó)家完整名單的文檔,而且據(jù)我所知,他們也沒有公開此事。
KuCoin 可以被其他更適合您需求的應(yīng)用程序替代。以下是列表:
KuCoin 提供的官方 SDK 如下:
為了開始使用 KuCoin 并探索其產(chǎn)品和 API 使用情況,我們需要訪問其網(wǎng)站并創(chuàng)建一個(gè)帳戶。為此,請(qǐng)轉(zhuǎn)到以下鏈接并點(diǎn)擊注冊(cè):
之后,您將進(jìn)入一個(gè)新頁(yè)面,首先需要提供您的電子郵件以獲取驗(yàn)證碼。完成后,您可以設(shè)置密碼和推薦碼(如果有)。
請(qǐng)記住,在驗(yàn)證過程中您可以提供您的電話號(hào)碼,而不是電子郵件。
歡迎來到 KuCoin!要獲取 API 密鑰,請(qǐng)轉(zhuǎn)到右上角的大白色圓圈并選擇 API 管理選項(xiàng)。
到達(dá)那里后,您將需要完成短信或 Google 驗(yàn)證流程以及交易密碼設(shè)置。為此,只需點(diǎn)擊綠色的“編輯”字樣,即可進(jìn)入正確的步驟。
完成驗(yàn)證過程并設(shè)置交易密碼后,返回 API 管理選項(xiàng)卡并點(diǎn)擊“創(chuàng)建 API”按鈕。
到達(dá)那里后,您將命名您的 API,為其創(chuàng)建密碼,并授予其所需的權(quán)限。在本指南中,我將授予其一般權(quán)限和交易權(quán)限。您還可以將 API 限制為 IP 地址。
之后,請(qǐng)務(wù)必將您的 API Key 和 API Secret 保存到安全的地方。關(guān)閉 API 信息彈出窗口后,API Secret 將不再顯示。
現(xiàn)在 API Key 已準(zhǔn)備就緒,我們可以自由探索 KuCoin API 提供的功能。我們將從公共端點(diǎn)開始,并以兩個(gè)交易場(chǎng)景結(jié)束。
請(qǐng)務(wù)必使用以下命令安裝 KuCoin Python 庫(kù):
pip install kucoin-python
請(qǐng)記住,API 請(qǐng)求限制設(shè)置為每分鐘 1800 次調(diào)用。
通過使用 Python 庫(kù),可以通過多種方式從 KuCoin 獲取行情。讓我們?cè)O(shè)置客戶端并檢查市場(chǎng)列表由哪些部分組成:
import pandas as pd
from kucoin.client import Market
client = Market(url='https://api.kucoin.com')
symbols = client.get_market_list()
symbols
[‘USDS’, ‘BTC’, ‘KCS’, ‘ALTS’, ‘DeFi’, ‘NFT’, ‘Polkadot’]
這向我們展示了主要類別,但我們真正想要的是所有可用股票代碼的列表。我們將請(qǐng)求它們并將數(shù)據(jù)排列到 pandas 數(shù)據(jù)框中,以便更好地觀察。
tickers = client.get_all_tickers()
tickers = pd.DataFrame(tickers['ticker'])
tickers.set_index('symbol', inplace=True)
tickers.head().T
總共有577對(duì)。
有些人可能已經(jīng)體驗(yàn)過,Python 庫(kù)的速度并未優(yōu)化,因此很容易出現(xiàn)連接超時(shí)。請(qǐng)注意,當(dāng)交易量過大時(shí),KuCoin 會(huì)出現(xiàn)一些延遲。
因此,我們將切換為使用常規(guī)請(qǐng)求方法并獲取可用貨幣的列表。
import requests
import json
import datetime
url = 'https://api.kucoin.com'
currencies = requests.get(url + '/api/v1/currencies')
currencies = currencies.json()
currencies = pd.DataFrame(currencies['data'])
currencies.set_index('currency', inplace=True)
print('There are {} currencies'.format(len(currencies)))
currencies.head().T
為了獲取 KuCoin 上的價(jià)格數(shù)據(jù),請(qǐng)發(fā)出以下請(qǐng)求:
ticker = requests.get(url + '/api/v1/market/orderbook/level1?symbol=BTC-USDT').json()
ticker['data']
{'time': 1615475368927,
'sequence': '1614104704724',
'price': '56977.4',
'size': '0.001',
'bestBid': '56971.5',
'bestBidSize': '0.00009434',
'bestAsk': '56971.6',
'bestAskSize': '0.00017804'}
如果您想查看某項(xiàng)資產(chǎn)在 24 小時(shí)內(nèi)的表現(xiàn),請(qǐng)執(zhí)行以下操作:
ticker_24h = requests.get(url + '/api/v1/market/stats?symbol=BTC-USDT').json()
ticker_24h['data']
{'time': 1615475556056,
'symbol': 'BTC-U5DT',
'buy': '56998.3',
'sell': '57000',
'changeRate': '0.013',
'changePrice': '736.7',
'high': '57364',
'low': '54238',
'vol': '3712.3667572',
'volValue.: '208342804.860257668',
'last': '57000',
'averagePrice': '54559.31856369',
'takerFeeRate': '0.001',
'makerFeeRate': '0.001',
'takerCoefficient': '1',
'makerCoefficient': '1'}
要獲取特定資產(chǎn)的法定價(jià)格,請(qǐng)編寫以下代碼:
fiat = requests.get(url + '/api/v1/prices?base=USD').json()
fiat['data']
{'LOKI': '1.01001475',
'DFI': '3.74945229',
'IOTX': '0.03639693',
'MC': '0.0167',
'FRONT': '2.13320120',
'MXEU: '0.01922177',
'TFD': '0.06198852',
'DOCK': '0.09895415',
'SUSD': '1.02366360',
'REVV': '0.22804950',
'STX': '1.13057958',
'OLT': '0.01097026',
'DENT': '0.00207008',
'AION': '0.18767166',
'NPXS.: '0.00230893',
'TFL': '0.31107999',
'XNS': '0.00056870',
'GMB': '0.00070519',
'DGB': '0.06198852',
為了從 KuCoin 獲取歷史數(shù)據(jù),我們必須使用正確的端點(diǎn)并將數(shù)據(jù)排列到 pandas 數(shù)據(jù)框中以獲得更好的外觀。我們還將時(shí)間戳轉(zhuǎn)換為可讀格式。
history = requests.get(url + '/api/v1/market/histories?symbol=BTC-USDT')
history = history.json()
history = pd.DataFrame(history['data'])
history['time'] = pd.to_datetime(history['time'])
history.set_index('time', inplace=True)
history
現(xiàn)在讓我們獲取我們的符號(hào)的蠟燭,清理響應(yīng)并整理數(shù)據(jù)。
kline = requests.get(url + '/api/v1/market/candles?type=1min&symbol=BTC-USDT&startAt=1566703297&endAt=1566789757')
kline = kline.json()
kline = pd.DataFrame(kline['data'])
kline = kline.rename({0:"Time",1:"Open",
2:"Close",3:"High",4:"Low",5:"Amount",6:"Volume"}, axis='columns')
kline.set_index('Time', inplace=True)
kline.head()
為了計(jì)算 20SMA,我們可以進(jìn)行簡(jiǎn)單的 pandas 轉(zhuǎn)換。讓我們繼續(xù)對(duì)上一個(gè)示例的收盤價(jià)進(jìn)行轉(zhuǎn)換。
kline['20 SMA'] = kline.Close.rolling(20).mean()
kline.tail()
KuCoin 上的訂單簿數(shù)據(jù)有 3 個(gè)不同的端點(diǎn),如下所示:
部分訂單簿 (匯總) ——顧名思義,此訂單簿僅出價(jià)和要價(jià)達(dá)到您可以在請(qǐng)求中設(shè)置的某個(gè)水平(例如 level_100 返回 100 個(gè)實(shí)例)
完整訂單簿(匯總) ——此端點(diǎn)返回具有完整深度的訂單簿,最常由高級(jí)交易者使用。由于它明顯使用 KuCoin 服務(wù)器資源,因此具有嚴(yán)格的頻率控制。
完整訂單簿(原子) ——此端點(diǎn)提供指定對(duì)的 3 級(jí)訂單簿數(shù)據(jù)。數(shù)據(jù)未聚合,每個(gè)實(shí)例都是單個(gè)訂單,因此稱為原子。此端點(diǎn)也受到嚴(yán)格的頻率控制。
在本文中,我們將獲取具有 20 個(gè)級(jí)別的部分訂單簿。然后,我們將通過為買入價(jià)和賣出價(jià)創(chuàng)建 2 個(gè)單獨(dú)的數(shù)據(jù)框來清理響應(yīng)。我還將向您展示如何合并它們以便更好地觀察。
orderbook = requests.get(url + '/api/v1/market/orderbook/level2_20?symbol=BTC-USDT')
orderbook = orderbook.json()
orderbook
bids = pd.DataFrame(orderbook['data']['bids'])
asks = pd.DataFrame(orderbook['data']['asks'])
df = pd.merge(bids, asks, left_index=True, right_index=True)
df = df.rename({"0_x":"Bid Price","1_x":"Bid Amount",
"0_y":"Ask Price","1_y":"Ask Amount"}, axis='columns')
df.head()
KuCoin 支持三種訂單類型,即現(xiàn)貨訂單、保證金訂單、止損訂單和批量訂單。我們先簡(jiǎn)單了解一下止損訂單和批量訂單,因?yàn)榍皟煞N訂單對(duì)于不熟悉該領(lǐng)域的人來說已經(jīng)非常熟悉了。
止損單是指,當(dāng)訂單以預(yù)先指定的止損價(jià)或低于預(yù)先指定的止損價(jià)成交時(shí),您可以指定最后成交價(jià)或預(yù)先指定的限價(jià)的加密貨幣數(shù)量。然后訂單將按最高價(jià)格執(zhí)行。
另一方面,批量訂單允許您同時(shí)執(zhí)行 5 個(gè)訂單。訂單必須是同一符號(hào)的限價(jià)訂單。
現(xiàn)在我們知道了KuCoin提供什么類型的訂單,讓我們繼續(xù)探索兩個(gè)簡(jiǎn)單的交易場(chǎng)景。
在第一個(gè)示例中,我將向您展示如何正確安全地啟動(dòng)具有指定要求的訂單。我們想要做的事情是當(dāng) BTC 達(dá)到某個(gè)價(jià)格(例如 57200 美元)時(shí)啟動(dòng) ETH 交易。
為了實(shí)現(xiàn)這一點(diǎn),我們需要設(shè)置訂單基礎(chǔ),然后創(chuàng)建一個(gè)循環(huán)來檢查價(jià)格水平是否被觸及。如果價(jià)格被觸及,我們將執(zhí)行市價(jià)訂單。相反,我們將繼續(xù)循環(huán)。
當(dāng)價(jià)格執(zhí)行后,我們會(huì)等待幾秒鐘,然后檢查訂單是否真的成交。這一額外步驟對(duì)于您的交易策略非常重要,因?yàn)榻灰姿?wù)器可能會(huì)遇到一些問題。
現(xiàn)在我們已經(jīng)有了主要想法,是時(shí)候建立交易基礎(chǔ)了。我們將設(shè)置交易客戶端并添加 API 密鑰、API 機(jī)密和 API 密碼變量。
from kucoin.client import Trade
from kucoin.client import Market
import pandas as pd
from time import sleep
api_key = '<api_key>'
api_secret = '<api_secret>'
api_passphrase = '<api_passphrase>'
m_client = Market(url='https://api.kucoin.com')
client = Trade(api_key, api_secret, api_passphrase, is_sandbox=True)
在我們構(gòu)建檢查交易要求是否滿足的主循環(huán)之前,讓我們介紹一下執(zhí)行訂單時(shí)可以傳遞的參數(shù)。
現(xiàn)在來看看腳本的主要部分:
while True:
try:
btc = m_client.get_ticker('BTC-USDT')
print('The price of BTC at {} is:'.format(pd.Timestamp.now()), btc['price'])
except Exception as e:
print(f'Error obtaining BTC data: {e}')
if float(btc['bestAsk']) < 57200.00:
continue
elif float(btc['bestAsk']) >= 57200.00:
try:
order = client.create_market_order('ETH-USDT', 'buy', size='5')
print()
except Exception as e:
print(f'Error placing order: {e}')
sleep(2)
try:
check = client.get_order_details(orderId=order['orderId'])
print(check)
except Excpetion as e:
print(f'Error while checking order status: {e}')
if check['isActive'] == true:
print ('Order placed at {}'.format(pd.Timestamp.now()))
break
else:
print('Order was canceled {}'.format(pd.Timestamp.now()))
break
太棒了!但是如果我們想計(jì)算兩種貨幣之間的百分比變動(dòng),然后下訂單怎么辦?好吧,我們的下一個(gè)示例將解決這個(gè)問題!
主要任務(wù)是當(dāng) BTC 在過去 5 分鐘內(nèi)波動(dòng) 5% 時(shí)執(zhí)行 ETH 交易。這意味著我們需要?jiǎng)?chuàng)建一個(gè)循環(huán)來獲取兩種加密貨幣的價(jià)格并計(jì)算兩者之間的百分比變化。
如果百分比變化小于 5%,程序?qū)⑿菝?5 分鐘并再次計(jì)算百分比變化。如果百分比變化等于或大于 5%,則交易將執(zhí)行。
交易執(zhí)行后,我們將休眠幾秒鐘,然后檢查交易是否已完成?,F(xiàn)在邏輯已經(jīng)設(shè)置好,是時(shí)候編寫代碼了:
while True:
try:
btc_old = m_client.get_ticker('BTC-USDT')
print('The price of BTC at {} is:'.format(pd.Timestamp.now()), btc_old['price'])
except Exception as e:
print(f'Error obtaining BTC data: {e}')
sleep(300)
try:
btc_new = m_client.get_ticker('BTC-USDT')
print('The price of BTC at {} is:'.format(pd.Timestamp.now()), btc_new['price'])
except Exception as e:
print(f'Error obtaining BTC data: {e}')
percent = (((float(btc_new['bestAsk']) - float(btc_old['bestAsk'])) * 100) / float(btc_old['bestAsk']))
if percent < 5:
print('The trade requirement was not satisfied. The percentage move is at ',percent)
continue
elif percent >= 5:
try:
order = client.create_market_order('ETH-USDT', 'buy', size='5')
print()
except Exception as e:
print(f'Error placing order: {e}')
sleep(2)
try:
check = client.get_order_details(orderId=order['orderId'])
print(check)
except Excpetion as e:
print(f'Error while checking order status: {e}')
if check['isActive'] == true:
print ('Order placed at {}'.format(pd.Timestamp.now()))
break
else:
print('Order was canceled {}'.format(pd.Timestamp.now()))
break
如果您想取消KuCoin上的訂單,您可以輕松使用以下API請(qǐng)求:
client.cancel_order(orderId)
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)