DEV Community

Cover image for Create a bitcoin price watcher
codesharedot
codesharedot

Posted on

Create a bitcoin price watcher

You can create your own cryptocurrency price ticket. This is an excellent exercise for learning how to use APIs from Python.

A free API is the coinmarketcap API. You can request price information directly from a script. To make the request we use the requests module.

#!/usr/bin/python3
import requests

bitcoin_api_url = 'https://api.coinmarketcap.com/v1/ticker/bitcoin/'
response = requests.get(bitcoin_api_url)
response_json = response.json()
print(response_json)

That outputs the current price and more information to your terminal if you run the script.

[{'id': 'bitcoin', 'name': 'Bitcoin', 'symbol': 'BTC', 'rank': '1', 'price_usd': '10681.1782936', 'price_btc': '1.0', '24h_volume_usd': '21114044526.6', 'market_cap_usd': '191336753303', 'available_supply': '17913450.0', 'total_supply': '17913450.0', 'max_supply': '21000000.0', 'percent_change_1h': '0.11', 'percent_change_24h': '7.82', 'percent_change_7d': '5.02', 'last_updated': '1567522779'}]

You can get the current price like this:

for coin in response.json():                                        
    print(coin.get("price_usd", "U$S Price not provided"))          

That outputs $10616.5048903 which needs rounding. This is a string, but you can convert it like this:

btc_price = float(("{0:.2f}").format(float(price)))             
print("$ " + str(btc_price))   

There's probably a nicer way to do this, but this does the job.

Conversion

conversion

Big chance you use another currency if you don't live in the US. You can use the module forex_python to convert the rate.

Load the module:

from forex_python.converter import CurrencyRates

Then you can get the conversion rate of USD to another currency like this:

c = CurrencyRates()                                                 
rate = c.get_rate('USD', 'EUR')                                     
print(rate)          

Then convert the btc price to euro:

btc_price_eur = float(("{0:.2f}").format(float(price)*rate))    
print("\u20ac " + str(btc_price_eur))  

What is this "\u20ac " you ask? This is how you can print the euro symbol. It's the unicode font code.

You can find a list of unicode currency symbols here:
unicode currency symbols.

Notifications

If you are trading, you want to get notifications instead of watching the price 24/7. You can use the os module with notify-send app (Linux) to get notifications.

if btc_price_eur > 9000:                                        
   os.system("notify-send trade btc")                           

You can do this on your phone too, or email. To keep watching the price, you can put the whole code in a loop and keep it running in the background. Happy coding! :)

Read more:

Discussion (1)

Collapse
vikramchandra profile image
Vikram Sharma

Coinmarketcap api is an awesome tool. I have used it in few projects myself. I am a Rails guy but learning Python as I am considering a switch to Data Science. I also wrote an intro tutorial on coin marketcap api.