温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

利用 Python 监控 Uniswap 加密货币价格的方法

发布时间:2021-06-15 15:57:08 来源:亿速云 阅读:1033 作者:chen 栏目:编程语言

本篇内容介绍了“利用 Python 监控 Uniswap 加密货币价格的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Uniswap是一个基于以太坊的交易所协议,允许任何人交换ERC20代币。普遍上讲,交易代币要求买卖双方创造委托订单,而Uniswap则是自动创建一个交易市场。Uniswap旨在帮助解决去中心化交易所的流动性问题,是一种去中心化的交易所。

在过去的几个月里,我在 Uniswap 上新上市的币上观察到了一个非常有趣的规律,尤其是那些被炒作的币种。在新币上市后的前 10-15 分钟内,价格上涨非常高,不过在接下来的几个小时内大幅下跌,然后在接下来的 24 小时内上涨超过 50%。不要以为你可以在价格低的时候买进,然后10分钟后高价卖出。因为以太坊网络拥堵的原因,这段时间的gas费用非常高(数百美元)。

利用 Python 监控 Uniswap 加密货币价格的方法

Superfarm 是之前比较受欢迎的一个新项目,在 Telegram 上拥有超过 86,000 名成员,在 Twitter 上拥有超过 88,000 名关注者。所以我决定来测试一下这个规律,或者说我决定进行推测。在最初的几分钟里,价格飙升至 2 美元左右,然后跌至 1 美元左右,因此我决定投资 0.98 eth(按当前价格计算约 1.5K 美元)。

第二天,如果价格要上涨,我必须观察价格才能退出我在 Superfarm 代币上的头寸。每分钟检查价格真的是在浪费时间,所以我决定制作一个脚本来监控价格,如果价格达到某个目标,它会通知我。

为了查看 Uniswap 的价格,我使用了 uniswap-python 库。

!pip install uniswap-python

如果你想知道我为什么使用它,pip 前面的感叹号是因为我已经在 Jupyter Notebook 中进行了编码,并且我已经从 Notebook 单元安装了所有必要的 python 库。

eth = "0x0000000000000000000000000000000000000000"  dai = "0x6B175474E89094C44Da98b954EedeAC495271d0F"  sup = "0xe53EC727dbDEB9E2d5456c3be40cFF031AB40A55"  address = "0x0000000000000000000000000000000000000000"  #  if you're not making transactions  private_key = None  # if you're not going to make transactions  provider = <the url of your provider> # if you use Infura    will be    like 'https://mainnet.infura.io/v3/########'  uniswap_wrapper = Uniswap(address, private_key, version=2, providerprovider=provider)  # use Uniswap v2

第一个变量包含我们想要在 Uniswap 上获得加密货币的以太坊地址校验和。

要获取加密货币的以太坊地址校验和,您可以使用 Coingecko 首先获取合约地址:

利用 Python 监控 Uniswap 加密货币价格的方法

然后你就可以使用下面网站轻松从合约地址中获取以太坊地址校验和。

https://ethsum.netlify.app/

如果您不太熟悉什么是以太坊地址校验和,您可以将其视为一个标识符,基于这个加密货币标识符 Uniswap 将能够为您提供价格。

provider(web3 provider)是一个运行 geth 或 parity 节点的网站,它与以太坊网络交互。要获得provider,您可以使用 Infura。如果您使用 Infura,必须注册然后创建一个新项目,在设置选项卡上您可以看到提供商 URL:

利用 Python 监控 Uniswap 加密货币价格的方法

要获得以 eth 表示的 Superfarm 币价格:

sup_price = uniswap_wrapper.get_token_eth_input_price(sup, 10 ** 18)  print(sup_price / 10**18)  # 0.000901625376604887

10 ** 18代表Superfarm 币的数量,它必须是一个整数值,如果我们选择小数量值将是0(由于近似),所以我们需要一个大数量。我们将获得 10 ** 18个 Superfarm 币的 eth 价格。

如果我们想以美元计算 1 个 Superfarm 币的价格,我们可以使用 Dai 稳定币(1 Dai ~= 1 美元)。我们可以请求相同数量的 Superfarm 和 Dai 币,然后分割它们。

def get_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)      return round(sup_price / dai_price, 4)  print(get_sup_price_in_dollars())  # 1.357 --> the price in dollars for 1 Superfarm coin

为了在我的桌面上推送通知,我使用了plyer库:

!pip install plyer

这是监控 Superfarm 价格和自前一个值以来的变化的函数:

from plyer import notification  def notify(price: int, new_price: int):      notification.notify(      title = 'Superfarm price whatcher',      message = f"Total value of SUPER = {new_price}, change: {round(new_price - price, 3)}",      timeout = 10,      app_icon = '/home/kederrac/Pictures/uniswap.ICO',      )

如您所见,我还添加了一个应用程序图标,为了能够使用应用程序图标,我还必须将 .png 图片转换为 .ico 格式,安装 dbus-python 库(如果您使用的是 Windows,则不需要)。

!pip install  dbus-python

现在让我们把它们放在一起:

import time  price = get_sup_price_in_dollars()  notify(price, price)  while True:      new_price = get_sup_price_in_dollars()          if abs(price - new_price) > 0.05:          notify(price, new_price)              price = new_price      time.sleep(10)

在这里,我每 10 秒调用一次 get_sup_price_in_dollars() 函数来检查价格是否发生变化,如果变化大于 0.05 美元,将推送通知,您可以更改变化的最小值以获得通知,或者您 可以设置要通知的最低价格目标。

结果如下:

利用 Python 监控 Uniswap 加密货币价格的方法

(在 ubuntu 20.04 上)

利用 Python 监控 Uniswap 加密货币价格的方法

(在 windows 10 上)

这对于实时价格通知非常有帮助,这种方法的另一优点是速度,与必须使用 Coingecko 相比,您将获得数分钟的时间,如果您使用 Uniswap 网络界面,时间将更快。

在这里你可以看到我一开始所说的规律:

利用 Python 监控 Uniswap 加密货币价格的方法

“利用 Python 监控 Uniswap 加密货币价格的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI