溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

利用 Python 監(jiān)控 Uniswap 加密貨幣價(jià)格的方法

發(fā)布時(shí)間:2021-06-15 15:57:08 來源:億速云 閱讀:1017 作者:chen 欄目:編程語言

本篇內(nèi)容介紹了“利用 Python 監(jiān)控 Uniswap 加密貨幣價(jià)格的方法”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

Uniswap是一個(gè)基于以太坊的交易所協(xié)議,允許任何人交換ERC20代幣。普遍上講,交易代幣要求買賣雙方創(chuàng)造委托訂單,而Uniswap則是自動(dòng)創(chuàng)建一個(gè)交易市場(chǎng)。Uniswap旨在幫助解決去中心化交易所的流動(dòng)性問題,是一種去中心化的交易所。

在過去的幾個(gè)月里,我在 Uniswap 上新上市的幣上觀察到了一個(gè)非常有趣的規(guī)律,尤其是那些被炒作的幣種。在新幣上市后的前 10-15 分鐘內(nèi),價(jià)格上漲非常高,不過在接下來的幾個(gè)小時(shí)內(nèi)大幅下跌,然后在接下來的 24 小時(shí)內(nèi)上漲超過 50%。不要以為你可以在價(jià)格低的時(shí)候買進(jìn),然后10分鐘后高價(jià)賣出。因?yàn)橐蕴痪W(wǎng)絡(luò)擁堵的原因,這段時(shí)間的gas費(fèi)用非常高(數(shù)百美元)。

利用 Python 監(jiān)控 Uniswap 加密貨幣價(jià)格的方法

Superfarm 是之前比較受歡迎的一個(gè)新項(xiàng)目,在 Telegram 上擁有超過 86,000 名成員,在 Twitter 上擁有超過 88,000 名關(guān)注者。所以我決定來測(cè)試一下這個(gè)規(guī)律,或者說我決定進(jìn)行推測(cè)。在最初的幾分鐘里,價(jià)格飆升至 2 美元左右,然后跌至 1 美元左右,因此我決定投資 0.98 eth(按當(dāng)前價(jià)格計(jì)算約 1.5K 美元)。

第二天,如果價(jià)格要上漲,我必須觀察價(jià)格才能退出我在 Superfarm 代幣上的頭寸。每分鐘檢查價(jià)格真的是在浪費(fèi)時(shí)間,所以我決定制作一個(gè)腳本來監(jiān)控價(jià)格,如果價(jià)格達(dá)到某個(gè)目標(biāo),它會(huì)通知我。

為了查看 Uniswap 的價(jià)格,我使用了 uniswap-python 庫。

!pip install uniswap-python

如果你想知道我為什么使用它,pip 前面的感嘆號(hào)是因?yàn)槲乙呀?jīng)在 Jupyter Notebook 中進(jìn)行了編碼,并且我已經(jīng)從 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

第一個(gè)變量包含我們想要在 Uniswap 上獲得加密貨幣的以太坊地址校驗(yàn)和。

要獲取加密貨幣的以太坊地址校驗(yàn)和,您可以使用 Coingecko 首先獲取合約地址:

利用 Python 監(jiān)控 Uniswap 加密貨幣價(jià)格的方法

然后你就可以使用下面網(wǎng)站輕松從合約地址中獲取以太坊地址校驗(yàn)和。

https://ethsum.netlify.app/

如果您不太熟悉什么是以太坊地址校驗(yàn)和,您可以將其視為一個(gè)標(biāo)識(shí)符,基于這個(gè)加密貨幣標(biāo)識(shí)符 Uniswap 將能夠?yàn)槟峁﹥r(jià)格。

provider(web3 provider)是一個(gè)運(yùn)行 geth 或 parity 節(jié)點(diǎn)的網(wǎng)站,它與以太坊網(wǎng)絡(luò)交互。要獲得provider,您可以使用 Infura。如果您使用 Infura,必須注冊(cè)然后創(chuàng)建一個(gè)新項(xiàng)目,在設(shè)置選項(xiàng)卡上您可以看到提供商 URL:

利用 Python 監(jiān)控 Uniswap 加密貨幣價(jià)格的方法

要獲得以 eth 表示的 Superfarm 幣價(jià)格:

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

10 ** 18代表Superfarm 幣的數(shù)量,它必須是一個(gè)整數(shù)值,如果我們選擇小數(shù)量值將是0(由于近似),所以我們需要一個(gè)大數(shù)量。我們將獲得 10 ** 18個(gè) Superfarm 幣的 eth 價(jià)格。

如果我們想以美元計(jì)算 1 個(gè) Superfarm 幣的價(jià)格,我們可以使用 Dai 穩(wěn)定幣(1 Dai ~= 1 美元)。我們可以請(qǐng)求相同數(shù)量的 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

這是監(jiān)控 Superfarm 價(jià)格和自前一個(gè)值以來的變化的函數(shù):

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',      )

如您所見,我還添加了一個(gè)應(yīng)用程序圖標(biāo),為了能夠使用應(yīng)用程序圖標(biāo),我還必須將 .png 圖片轉(zhuǎn)換為 .ico 格式,安裝 dbus-python 庫(如果您使用的是 Windows,則不需要)。

!pip install  dbus-python

現(xiàn)在讓我們把它們放在一起:

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 秒調(diào)用一次 get_sup_price_in_dollars() 函數(shù)來檢查價(jià)格是否發(fā)生變化,如果變化大于 0.05 美元,將推送通知,您可以更改變化的最小值以獲得通知,或者您 可以設(shè)置要通知的最低價(jià)格目標(biāo)。

結(jié)果如下:

利用 Python 監(jiān)控 Uniswap 加密貨幣價(jià)格的方法

(在 ubuntu 20.04 上)

利用 Python 監(jiān)控 Uniswap 加密貨幣價(jià)格的方法

(在 windows 10 上)

這對(duì)于實(shí)時(shí)價(jià)格通知非常有幫助,這種方法的另一優(yōu)點(diǎn)是速度,與必須使用 Coingecko 相比,您將獲得數(shù)分鐘的時(shí)間,如果您使用 Uniswap 網(wǎng)絡(luò)界面,時(shí)間將更快。

在這里你可以看到我一開始所說的規(guī)律:

利用 Python 監(jiān)控 Uniswap 加密貨幣價(jià)格的方法

“利用 Python 監(jiān)控 Uniswap 加密貨幣價(jià)格的方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI