当前位置: 首页 > 科技观察

使用Python监控Uniswap加密货币价格

时间:2023-03-14 19:11:34 科技观察

Uniswap是一种基于以太坊的交换协议,允许任何人交换ERC20代币。一般来说,交易代币需要买卖双方创建委托订单,而Uniswap自动创建交易市场。Uniswap旨在帮助解决去中心化交易所的流动性问题,是去中心化交易所。在过去的几个月里,我在Uniswap上新上市的币种中观察到一个非常有趣的模式,尤其是炒作的币种。新币上线后的前10-15分钟,价格涨得很高,但在接下来的几个小时内大幅下跌,随后在接下来的24小时内涨幅超过50%。不要以为你可以在低价时买入,10分钟后高价卖出。由于以太坊网络拥堵,这段时间的gas费非常高(数百)。Superfarm是一个以前很受欢迎的新项目,在Telegram上拥有超过86,000名成员,在Twitter上拥有超过88,000名粉丝。所以我决定测试这个模式,或者我决定推测。在最初的几分钟内,价格飙升至2美元左右,然后跌至1美元左右,所以我决定投资0.98eth(按当前价格计算约为1500美元)。第二天,如果价格要上涨,我必须观察价格才能退出我在Superfarm代币上的头寸。每分钟查看一次价格真的很浪费时间,所以我决定制作一个脚本来监控价格并在价格达到某个目标时通知我。为了查看Uniswap价格,我使用了uniswap-python库。!pipinstalluniswap-python如果你想知道我为什么要使用它,pip前面的感叹号是因为我已经在J??upyterNotebook中编码,并且我已经从Notebook单元安装了所有必要的python库。eth="0x0000000000000000000000000000000000000000"dai="0x6B175474E89094C44Da98b954EedeAC495271d0F"sup="0xe53EC727dbDEB9E2d5456c3be40cFF031AB40A55"address="0x0000000000000000000000000000000000000000"#ifyou'renotmakingtransactionsprivate_key=None#ifyou'renotgoingtomaketransactionsprovider=#ifyouuseInfurawillbelike'https://mainnet.infura.io/v3/########'uniswap_wrapper=Uniswap(address,private_key,version=2,providerprovider=provider)#useUniswapv2第一个变量包含我们要在Uniswap上获取加密货币的以太坊地址的校验和。要获取加密货币的以太坊地址校验和,您可以使用Coingecko先获取合约地址:然后您可以使用以下网站从合约地址轻松获取以太坊地址校验和。https://ethsum.netlify.app/如果您不熟悉以太坊地址校验和是什么,您可以将其视为一个标识符,Uniswap可以根据该标识符为您提供价格。提供商(web3提供商)是运行与以太坊网络交互的geth或奇偶校验节点的网站。要获得提供商,您可以使用Infura。如果你使用Infura,你必须注册然后创建一个新项目,在设置选项卡上你可以看到提供者URL:以eth获取Superfarm代币价格:sup_price=uniswap_wrapper.get_token_eth_input_price(sup,10**18)print(sup_price/10**18)#0.00090162537660488710**18代表Superfarm币的数量,它必须是一个整数值,如果我们选择小的数量该值将是0(由于近似),所以我们需要大的数量。我们将获得10**18个Superfarm硬币的eth价格。如果我们想计算1个Superfarm硬币的美元价格,我们可以使用Dai稳定币(1Dai~=1美元)。我们可以请求相同数量的Superfarm和Dai并将它们拆分。defget_sup_price_in_dollars():sup_price=uniswap_wrapper.get_token_eth_input_price(sup,10**18)dai_price=uniswap_wrapper.get_token_eth_input_price(dai,10**18)returnround(sup_price/dai_price,4)print(get_sup_price_in_dollarsup7->farthedollarsin->1.35对于桌面上的推送通知,我使用的是plyer库:!pipinstallplyer这是监视Superfarm的价格和自上一个值以来的变化的函数:fromplyerimportnotificationdefnotify(price:int,new_price:int):notification.notify(title='Superfarmppricewhatcher',message=f"TotalvalueofSUPER={new_price},change:{round(new_price-price,3)}",timeout=10,app_icon='/home/kederrac/Pictures/uniswap.ICO',)正如你提到的看,我还添加了一个应用程序图标,为了能够使用该应用程序图标,我还必须将.png图像转换为.ico格式,安装dbus-python库(如果您使用的是Windows,则不需要)。!pipinstallldbus-python现在让我们把它们放在一起:importtimeprice=get_sup_price_in_dollars()notify(price,price)whileTrue:new_price=get_sup_price_in_dollars()ifabs(price-new_price)>0.05:notify(price,new_price)price=new_pricetime。sleep(10)在这里,我每10秒调用一次get_sup_price_in_dollars()函数来检查价格是否有变化,如果变化大于$0.05,就会推送一个通知,你可以更改变化的最小值来获得通知,或者您可以设置通知的最低价格目标。以下是结果:(在ubuntu20.04上)(在windows10上)这对实时价格通知非常有帮助,这种方法的另一个优点是速度,如果你使用Uniswap网络,与必须使用Coingecko相比,你将获得更多时间界面和时间会更快。这里可以看到我一开始说的模式: