上篇文章利用python实现微信消息自动提醒谈过,我们可以通过简单的几句程序实现微信的自动提醒,这篇就谈谈如何结合交易所监控价格、订单、余额等具体应用。
上篇提到要想使用微信需要导入一个itchat包,这篇中需要导入的是交易所集成应用包ccxt,方法类似,比如在pycharm中安装步骤如下:设置-项目-编译器-点+号添加-搜索ccxt-安装就行了。
用API连接交易所需要编程,其中最大的困难点在于你需要通过签名和认证才能和交易所实现安全链接,而且每个交易所的认证又各不相同,而ccxt这个库就是把这些认证都做好,并且统一各个交易所的数据,比如获取行情,下单,余额等,非常强大。学会这一个,上百个交易所你都会玩了,真是通一抵百。官网手册在https://github.com/ccxt/ccxt/wiki/Manual
还有一个与时间相关的time,比如暂停几秒就要用到它。
import itchat
import ccxt
import time
# 微信登录
# itchat.login() # 扫码登陆
itchat.auto_login(hotReload =True)#添加hotReload = True参数,下次登陆时不需要通过扫描二维码,只需要在手机端确认登陆即可
多数交易所API连接需要科学上网,以下程序运行也需要。
一、监控币种价格
比如监控比特币的价格,当价格达到多少时,来个提醒.
首先需要申请交易所的API,这里以币安为例,创建交易所。这里币安用biance,如果你火币就用huobipro代替以下两处binance即可,其它交易所具体简称去CCXT官网查。
binance = ccxt.binance(
{'apiKey':'你的API KEY',
'secret':'你的API Secret'})
然后提取价格,这里我们需要用到一个交易所的行情数据binance.fetch_ticker(symbol) ,输入我们需要查询的交易对,就会返回一个字典数据。其它交易所只需更换binance。如下图,这里我们要用到一个最新成交价为'last'对应,用ticker1['last']即可获得。其它常用的比如bid对应卖一价,ask对应买一价。
代码如下:
symbol1 ="BTC/USDT"
ticker1 = binance.fetch_ticker(symbol1)
BTC_price =float(ticker1['last'])# 币安最新成交价
print("币安BTC成交价(USDT)", BTC_price)
加入条件判断,比如当比特币的价格达到6000美元时,发微信消息,这里以微信中'文件传输助手'发消息为例,发其他人用上篇文章中方法改下用户名即可。
# 当前价格达到6000提醒
if BTC_price >6000:
itchat.send(u'BTC价格已到6000USDT, 目前价格为' +str(BTC_price), 'filehelper')
上述只是实现了一次的判断,加入循环语句while True,直到价格达到6000美元时为止,否则每间隔3秒time.sleep(3)就监控一个价格,一直运行。
代码如下:
while True:
ticker1 = binance.fetch_ticker(symbol1)
BTC_price =float(ticker1['last'])# 币安最新成交价
print("币安BTC成交价(USDT)", BTC_price)
if BTC_price >6000:
itchat.send(u'BTC价格已到6000USDT, 目前价格为' +str(BTC_price), 'filehelper')
break
time.sleep(3)
二、下单并监控是否成交
比如我在币安上挂个单,如果成交之后给我发个消息,那我就不用常盯盘了;
用程序提前下限价单,当比特币达到6500美元时,卖掉0.1个。这里要用到ccxt统一下限价单格式binance.create_limit_sell_order(symbol, amount, price),三个输入参数:交易对、价格与数量。代码如下
# 下限价单
symbol1 ="BTC/USDT"
amount =0.1
price =6500
order_info1 = binance.create_limit_sell_order(symbol1, amount, price)print(order_info1)
下单之后,我们通过print(order_info1)输出订单信息,可以通过order_info1['id']找到订单号id,然后ccxt有一个指令binance.fetch_order(id1, symbol1)是根据订单号查询订单信息。对应的status如果是closed说明订单已成交,否则为open说明未成交。
# 查询下单后是否成交
id1 = order_info1['id']
order_info2 = binance.fetch_order(id1, symbol1)# 根据订单号查询订单信息
print(order_info2)
status2 = order_info2['status']
if (status2 =='closed') :
print("挂单已成交")
else:
print("挂单未成交")
itchat.send(u'挂单未成交', 'filehelper')
再加入循环即可,如果成交了,就利用itchat.send(u'挂单已成交', 'filehelper')发微信消息。
while True:
id1 = order_info1['id']
# print(id1)
order_info2 = binance.fetch_order(id1, symbol1)# 根据订单号查询订单信息
# print(order_info2)
status2 = order_info2['status']
if (status2 =='closed'):
print("挂单已成交")
itchat.send(u'挂单已成交', 'filehelper')
break
else:
print("挂单未成交")
time.sleep(3)
三、监控余额
比如我从一个钱包或交易所充值1个BTC到币安交易所,到账之后给我发微信提醒;
这里需要用到ccxt的一个余额查询功能binance.fetch_balance(),返回结果会非常多,但从ccxt查询其结构如下图:
其实要找到比如BTC的值,相当于要经过两层字典数据的分解,先通过balance['BTC']找到BTC对应的数据,有可用free、已用used、总共total三个组成;我们当然要调用可用的,于是用balance['BTC']['free']就可以查到可用余额。加入判断,再满足条件下发微信即可。
# 查询余额
while True:
balance = binance.fetch_balance()
BTC1 =float(balance['BTC']['free'])
print('BTC1', BTC1)# 资产的数量
if BTC1 >=1:
itchat.send(u'1个BTC充值已到账', 'filehelper')
break
time.sleep(3)
以上我们分析了如何监控价格、订单、余额等具体信息之后,进行微信提醒,这只是三个比较单一的应用,其实你可以进行各种组合:
比如第一个当价格达到多少时,你自动卖出,那只是在下面加一个限价单就可以了。
再比如充值到账之后,除了提醒之外,你也可以使用限价单卖掉,微信提醒是否成交等等。
总之,你可以灵活多变,根据需要来进行提醒,这样就会方便很多。
网友评论