每个交易所都有吸引交易者的特殊功能。 Coinbase Pro有一个特殊的代码,帮助自动化和简化交易。 此代码是Coinbase Pro API。
创建帐户以及启用Coinbase Pro API是完全免费的。
这两个平台确实有一些共同点。 至少Coinbase Global Inc拥有两者,Ui彼此相似。
然而,很明显,Coinbase和Coinbase Pro共享相当多的差异。 N.硬币基数 是一个加密货币市场,而Coinbase Pro是一个成熟的加密交换。 N.硬币基数 类似于加密货币钱包,而Coinbase Pro更可能是交易平台。
创新的属性和端点使Coinbase Pro API上的交易比Coinbase更快,更好。
现在Coinbase Pro API可用于更多 100个国家.
以下是交易者应该考虑的利弊的简短列表。
专业人员:
●简单
●直观
●美国全面监管
●高流动性
●支持菲亚特(美元,欧元,英镑)
●支持超过120种加密货币
缺点:
●高收费
●客户支持缓慢
●对新手来说太复杂了
总而言之,Coinbase Pro API的优点是缺点的两倍。
是的,是的。 Coinbase Pro从其用户那里收取通常的交易费用。 它发生在计算最终价格的30天之后。 为了交易者的方便,金额以美元计算。
通常情况下,费用分为"制造者"和"接受者":
1. 当一个放置的市场订单立即被填满时,用户就成为一个接受者。 费用:从0.04%到0.50%。
2. 当一个放置的订单没有立即完成并出现在订单簿上时,Aser就会成为一个制造商。 所以有必要等到它被另一个交易者匹配。 费用:0.00%至0.50%。
3. 当订单只被部分填充时,这两个费用都被支付。 首先,支付与填充部分相匹配的接受者费用,而订单的其余部分在订单簿上移动到以后。 当它匹配时,支付制造商费用。
此表显示了两种费用的当前交易量:
许多其他交易所确实有API。 这就是为什么Coinbase Pro API不能成为交易者的唯一选择。 这里只是几个与API的交流:
● 宾纳斯
● 比特梅克斯
● HitBTC
● 海妖
● 双子座
● 库科因
● Bittrex的
● Bitfinex
在完成适当的研究后,交易者可以在提供的交易所中进行选择,或者找到满足他们需求的其他平台。 但是,让我们回到Coinbase Pro。
交易者在这个平台上只有两种创建账户的方法:
1. 如果交易者已经拥有Coinbase帐户,唯一剩下的就是将其与Coinbase Pro连接起来。 然后资金转移将是可能的帐户之间。
2. 或者只是访问 Coinbase Pro开始页面 并在那里启动一个帐户。
点击"开始使用"按钮后,新人必须填写基本帐户详细信息,验证电子邮件地址并启用双因素身份验证。 要完成注册,用户必须提供一些个人信息:姓名,出生日期,地址,意图,资金来源,职业,包括身份证照片和银行帐户的链接。
要处理Coinbase Pro API,交易者需要Coinbase API密钥。 首先,点击"API",然后点击"+New API Key"按钮。 然后,用户必须选择API密钥的权限,设置昵称和密码短语,额外的身份验证级别和Coinbase实现的安全功能。
在API密钥开始工作之前,交易者需要再完成一个步骤:输入验证代码以获得密钥。 此外,用户应将该密钥保存在安全的地方,以免丢失。
最后,创建了Coinbase Pro API。 让我们继续谈论它的能力。
每个交易者可以从五个支持的客户中选择他们最喜欢的客户:
Python是在Coinbase Pro API上编写命令的最流行客户端。 这就是为什么例子只包括它。
让我们开始吧:
pip安装cbpro
在Coinbase Pro API中,python库使用 get_产品
端点获取交易对的信息。 下一步是导入库,初始化客户端,获取产品数据:
进口cbpro
导入pandas作为pd
c=cbpro。公共客户端()
数据=pd。DataFrame(c.get_products())
数据。尾()。
要获取有关价格数据的信息,请使用 get_产品_ticker
端点并指定ticker参数。 对于卡尔达诺来说,这将是:
ticker=c.get_product_ticker(product_id='ADA-USD')
股票,股票
获取日期的第二种方法是借助 硬币基数PRO RESTAPI 端点:
导入请求ticker=requests.get('https://api.pro.coinbase.com/products/ADA-USD/ticker json()
股票,股票
要获取历史数据的信息,请使用 get_product_historic_rates
端点。 可以指定粒度,开始和结束日期。
看看使用默认参数获取ETH-USD历史数据并将其全部排列成一个有序的数据框是多么简单:
历史=pd。DataFrame(c.get_product_historic_rates(product_id='ETH-USD'))历史。columns=["日期","开盘","高","低","收盘","成交量"]
历史['日期']=pd.to_datetime(历史['日期'],单位='s')
历史。set_index('日期',inplace=True)
历史。sort_values(by='Date',ascending=True,inplace=True)
历史
如果需要,以后这些数据可以用来创建一个简单的指标并产生一个烛台图。
不幸的是,Coinbase Pro API不提供任何预设指标。 但是,可以使用内置的pandas功能或仅依赖btalib库来制作它们。
这就是如何用pandas创建一个简单的20SMA指标:
历史['20SMA']=历史。很近。滚动(20)。平均()
历史。尾()
拥有所有这些数据,就可以创建一个交互式图表:
导入plotly。graph_objects as go
fig=走。图(data=[go.烛台(x=历史。索引,
open=历史['Open'],
高=历史['高'],
低=历史['低'],
关闭=历史['关闭'],),
去吧。散点(x=历史。index,y=historical['20SMA'],line=dict(color='purple',width=1))])
无花果。表演()
要获取订单簿数据,请使用 get_product_order_book
Coinbase Pro API端点。 下面是一个获取BTC输油管的数据并安排出价和要求的例子.
order_book=c.get_product_order_book('BTC-USD')
订购书
下一步是创建两个数据帧:
出价=pd。DataFrame(order_book['出价'])
问=pd。DataFrame(order_book['asks'])
出价。头()
现在合并它们并重命名列以提供更多信息:
df=pd。合并(出价,询问,left_index=True,right_index=True)
df=df。重命名({"0_x":"出价","1_x":"出价大小","2_x":"出价金额",
"0_y":"要价","1_y":"要价","2_y":"要价"},axis='columns')
df.头()
要获取交易数据,请使用 get_产品_贸易
端点。 不要忘记输入资产获取数据;ETH-USD在这个例子中。
trades=pd.DataFrame(requests.get('https://api.pro.coinbase.com/products/ETH-USD/trades json())
交易。尾()
不要让Python库卡住,请使用REST API。
要访问Coinbase Pro WebSockets,请使用 Webcoketclient
端点。 多亏了它,交易者可以很容易地了解有趣的数据。
进口cbpro
wsc=cbpro.WebsocketClient(url="wss://ws-feed.pro.coinbase.com",products="ADA-USD",
频道=["股票"])
要关闭WebSocket,只需使用一个简单的命令:
wsc。关闭()
下一个命令有助于收集股票价格数据,最多可以收集一定数量的WebSocket消息并将其打印出来:
进口时间,cbpro
类myWebsocketClient(cbpro.WebsocketClient):
def on_open(自我):
自我。url="wss://ws-feed.pro.coinbase.com/"
自我。产品=["ETH-USDT"]
自我。频道=["股票"]
自我。message_count=0
def on_message(自我,味精):
自我。消息_count+=1
如果味精中的"价格"和味精中的"类型":
print("消息类型:",msg["类型"],
"\t@{:。3f}"。格式(float(msg["price"])))
def on_close(自我):
打印("关闭")
wsClient=myWebsocketClient()
wsClient。开始()
打印(wsClient.url,wsClient。产品,wsClient。频道)
虽然(wsClient。message_count<50):
print("\nmessage_count=","{}\n".格式(wsClient.message_count))
时间。睡眠(1)
wsClient。关闭()
使用python Coinbase API命令,执行交易非常简单。 让我们来看两个例子:当BTC输油管达到某个价格时执行ETH交易,当BTC输油管在过去5分钟内移动5%时执行ETH交易。
现在让我们来了解如何正确启动具有特定要求的订单:当BTC达到某个价格(例如$38500)时开始ETH交易。
1. 设置订单基础;
2. 创建一个循环,检查价格水平是否达到;
3. 一旦价格被击中,市场秩序将被执行;
4. 等待几秒钟,检查订单是否真的已满。
设置好逻辑后,就可以导入相关的库并设置Api了:
进口cbpro
进口基准64
从时间导入json
导入睡眠
键="
秘密="
密码="
编码=json。转储(秘密)。编码()
b64secret=base64.b64encode(编码)
auth_client=cbpro。AuthenticatedClient(key=key,b64secret=secret,passphrase=密码短语)
c=cbpro。公共客户端()
至于主要的交易逻辑,这里有一个重要的通知,使订单更安全。 要做到这一点,通过采取当前的ETH-USD价格并在顶部添加几美元来下达限价订单。
虽然真实:
试试:
ticker=c.get_product_ticker(product_id='BTC-USD')
例外情况为e:
print(F'Error获取股票数据:{e}')
如果浮动(股票['价格'])>=38500.00:
试试:
limit=c.get_product_ticker(product_id='ETH-USD')
例外情况为e:
print(F'Error获取股票数据:{e}')
试试:
订单=auth_client。place_limit_order(product_id='ETH-USDT',
side='购买',
价格=浮动(限价['价格'])+2,
尺寸='0.007')
例外情况为e:
打印(F'Error下订单:{e}')
睡眠(2)
试试:
检查=订单['id']
check_order=auth_client。get_order(order_id=检查)
例外情况为e:
打印(F'Unable检查订单. 它可能会被拒绝。 {e}')
如果check_order['状态']=='完成':
列印("成功订购")
打印(check_order)
休息
其他:
打印("订单未匹配")
休息
其他:
print(f'未达到要求。 股票价格为{股票["价格"]}')
睡眠(10)
任务变得稍微复杂。 新的循环将不得不获得两种加密货币的价格,并计算两者之间的百分比变化:
●如果百分比变化小于5%,程序将再睡5分钟;
●如果百分比变化等于或超过5%,交易将执行。
完成后等待几秒钟,然后再次检查交易。
虽然真实:
试试:
ticker_old=c.get_product_ticker(product_id='BTC-USD')
例外情况为e:
print(F'Error获取股票数据:{e}')
睡眠(300)
试试:
ticker_new=c.get_product_ticker(product_id='BTC-USD')
例外情况为e:
print(F'Error获取股票数据:{e}')
百分比=((float(ticker_new['price'])-float(ticker_old['price']))*100)/float(ticker_old['price'])
如果百分比>=5:
试试:
limit=c.get_product_ticker(product_id='ETH-USDT')
例外情况为e:
print(F'Error获取股票数据:{e}')
试试:
订单=auth_client。place_limit_order(product_id='ETH-USDT',
side='购买',
价格=浮动(限价['价格'])+2,
尺寸='0.007')
例外情况为e:
打印(F'Error下订单:{e}')
睡眠(2)
试试:
检查=订单['id']
check_order=auth_client。get_order(order_id=检查)
例外情况为e:
打印(F'Unable检查订单. 它可能会被拒绝。 {e}')
如果check_order['状态']=='完成':
列印("成功订购")
打印(check_order)
休息
其他:
打印("订单未匹配")
休息
其他:
print(f'未达到要求。 百分比变化在{percent}')
取消订单非常简单。 前往 取消订单
API端点并输入订单id作为参数:
客户。cancel_order(order_id="ORDER-ID-HERE")
在本文中,我们仔细研究了Coinbase Pro API,并给出了一些python代码示例。 完整的代码可以在平台上找到 GitHub 页。
此处暂无评论。 成为第一个!