OpenSource Crypto Library
Project description
YN Exchange
Documentation
Description:
This Python library provides functionalities to get cryptoCurrency prices and perform conversions between Iranian Toman (IRT) and USD, for all supported cryptocurrencies.
Key Features:
-
Real-time cryptoCurrency price data retrieval .
-
Support for multiple exchanges .
-
Perform conversions between USD, IRT, and supported cryptocurrencies.
-
Get the current price of metals ( Gold , Copper , Silver and ... ) .
-
Get the current price of natural resources ( oil , gas and ... ) .
-
Generate cryptoCurrency tables (requires
kaleidolibrary for table rendering). -
Asynchronous data fetching .
-
Customizable data formats .
-
Save data to cache .
-
Smart calculator
Installation:
- Install the library using pip:
pip install YnExchangePY
Dependencies
- Required:
kaleidolibrary for generating crypto tables ( Images )
pip install kaleido
Usage ( Normal Version )
Crypto Section :
- Get Crypto Price :
# Import to your project :
from YN_Exchange import Exchange
# "Cache" Argument It is set to "False" by default
# "Cache_Duration" it is set to per second
ExchangeOBJ = Exchange.CryptoManager(Cache = True , Cache_Duration = 300) # Make object of CryptoManager
# "Currency" Argument supported Currency is : USD , IRT ( Default : USD )
# "Grouping" It is set to "False" by default
# Grouping ( False ) Output : 96000
# Grouping ( True ) Output : 96,000
BTC_Price = ExchangeOBJ.GetCryptoPrice(CryptoName = "BTC",Currency = "USD",Grouping = True) # Get crypto price
If the Cache is active, the information is received and displayed from the Cache until the Cache_Duration expires, and after the Cache expires, the information is received from the server again and stored in the Cache.
- Generate Crypto Charts :
Examples :
Example usage :
# Import to your project :
from YN_Exchange import Exchange
# "Cache" Argument It is set to "False" by default
# "Cache_Duration" it is set to per second
# Cache not active for charts
ExchangeOBJ = Exchange.CryptoManager(Cache = True , Cache_Duration = 300) # Make object of CryptoManager
# Generate chart
# For save chart as image definitely install kaleido
# You can edit argument for edit your chart for example, if you set the histogram argument to "False", the histograms will be removed from the chart.
ExchangeOBJ.GenerateCryptoChart(CryptoSymbol = "TON/USDT)
You can edit argument for edit your chart for example, if you set the histogram argument to "False", the histograms will be removed from the chart.
For save chart as image definitely install kaleido ( Click )
Charts Argument :
-
ImageSave : bool = True -
HTML_Save : bool = False -
Json_Save : bool = False -
ChartTemplate : str = "Professional" -
Exchange : str = "binance" -
CryptoSymbol : str = "BTC/USDT" -
Limit : int = 100 -
Timeframe = '1d' -
IchimokuLine : bool = True -
IchimokuCloud : bool = True -
Candlesticks : bool = True -
Chikou : bool = True -
Tenkan : bool = True -
Kijun : bool = True -
MACD_Line : bool = True -
SignalLine : bool = True -
Histogram : bool = True
You can customize your charts with arguments
Metal Section :
- Get Price :
# Import to your project :
from YN_Exchange import Exchange
# "Cache" Argument It is set to "False" by default
# "Cache_Duration" it is set to per second
MetalsOBJ = Exchange.MetalManager(Cache = True , Cache_Duration = 300) # Make object of MetalManager
GoldPrice = MetalsOBJ.GetGoldPrice(Carat=24,Grouping=True)
You will see the rest of the functions of this class
Functionality :
-
GetPlatinumPrice(Grouping : bool = "False")Ounce per USD -
GetSilverPrice(Grouping : bool = "False")Ounce per USD -
GetPalladiumPrice(Grouping : bool = "False")Ounce per USD -
GetTinPrice(Grouping : bool = "False")Tonne per USD -
GetZincPrice(Grouping : bool = "False")Tonne per USD -
GetNickelPrice(Grouping : bool = "False")Tonne per USD -
GetLeadPrice(Grouping : bool = "False")Tonne per USD -
GetCopperPrice(Grouping : bool = "False")Pound per USD -
GetAluminiumPrice(Grouping : bool = "False")Tonne per USD -
GetGoldPrice(Grouping : bool = "False",carat : int = 18,weight : str = "gram")Weight : [kilo,gram,ounce] and Only IRT Price
Natural Resources Section :
- Get Price :
# Import to your project :
from YN_Exchange import Exchange
# "Cache" Argument It is set to "False" by default
# "Cache_Duration" it is set to per second
NaturalOBJ = Exchange.NaturalResourcesManager(Cache = True , Cache_Duration = 300) # Make object of NaturalResourcesManager
BrentOil = NaturalOBJ.GetBrentOil(Grouping = True)
OilWTI = NaturalOBJ.GetCrudeOilWTI(Grouping = True)
NaturalGas = NaturalOBJ.GetNaturalGas(Grouping = True)
Functionality :
-
GetCrudeOilWTIBarrel per USD -
GetBrentOilBarrel per USD -
GetNaturalGasMmbtu per USD
Calculator Section :
You can use this functions in Calculator() class
- Example usage code :
# Import to your project :
from YN_Exchange import Exchange
CalculatorOBJ = Exchange.Calculator() # Make object of Calculator
Result = CalculatorOBJ.CryptoValue2Currency(CryptoName="BTC",Currency="USD",Grouping = True)
Functionality :
-
CryptoValue2Currency(Value: int, CryptoName: str = "BTC", Currency: str = "USD", Grouping: bool = False) -
Currency2CryptoValue(Value: int, CryptoName: str = "BTC", Currency: str = "USD", Grouping: bool = False) -
CryptoValue2CryptoValue(CryptoValue: int, CryptoName1: str = "BTC", CryptoName2: str = "ETH", Grouping: bool = False) -
CryptoValue2GoldWeight(GoldCarat: int = 18, GoldWeight: str = "gram", CryptoName: str = "BTC") -
GoldWeight2CryptoValue(GoldCarat: int = 18, GoldWeight: str = "gram", GoldValue: int = 1, CryptoName: str = "BTC") -
GoldWeight2Currency(GoldCarat: int = 18, GoldWeight: str = "gram", GoldValue: int = 1, Currency: str = "USD") -
Currency2GoldWeight(GoldCarat: int = 18, GoldWeight: str = "gram", CurrencyValue : int = 5000000)
Exchanges API Section :
A class to receive digital currency information from APIs of world's most prestigious exchanges
- Example usage code :
# Import to your project :
from YN_Exchange import Exchange
ExchangeOBJ = Exchange.ExchangeAPI(Exchange = "binance") # Make object of ExchangeAPI
BTC = ExchangeOBJ.GetCryptoData(CryptoSymbol = "BTC/USDT")
- Output
{'symbol': 'BTC/USDT', 'timestamp': 1736598300337, 'datetime': '2025-01-11T12:25:00.337Z', 'high': 95836.0, 'low': 92206.02, 'bid': 94613.99, 'bidVolume': 5.67459, 'ask': 94614.0, 'askVolume': 0.35323, 'vwap': 94125.84165815, 'open': 94805.6, 'close': 94614.0, 'last': 94614.0, 'previousClose': 94805.6, 'change': -191.6, 'percentage': -0.202, 'average': 94709.8, 'baseVolume': 25125.20063, 'quoteVolume': 2364930656.128506, 'markPrice': None, 'indexPrice': None, 'info': {'symbol': 'BTCUSDT', 'priceChange': '-191.60000000', 'priceChangePercent': '-0.202', 'weightedAvgPrice': '94125.84165815', 'prevClosePrice': '94805.60000000', 'lastPrice': '94614.00000000', 'lastQty': '0.03192000', 'bidPrice': '94613.99000000', 'bidQty': '5.67459000', 'askPrice': '94614.00000000', 'askQty': '0.35323000', 'openPrice': '94805.60000000', 'highPrice': '95836.00000000', 'lowPrice': '92206.02000000', 'volume': '25125.20063000', 'quoteVolume': '2364930656.12850630', 'openTime': '1736511900337', 'closeTime': '1736598300337', 'firstId': '4392795366', 'lastId': '4396948127', 'count': '4152762'}}
Cache Section :
All the classes in the library have the "clear_cache" function, which you can use to clear the cache of that class.
Caches are saved as json files on your computer
Usage ( Async Version ) :
For usage Async version you must import AsyncExchange module
And for usage you can use asyncio.run() function
- Example Usage :
# Import to your project :
from YN_Exchange import AsyncExchange
import asyncio
# The use of all async functions is the same as the main functions :
ExchangeOBJ = AsyncExchange.AsyncCryptoManager(Cache = True , Cache_Duration = 300)
CryptoPrice = asyncio.run(ExchangeOBJ.GetCryptoPrice(CryptoName = "BTC",Currency = "USD",Grouping = True))
To use functions, you can easily use them by adding the word "async" to the first of the main functions.
Donation
- TON , USDT Wallet ( Tonkeeper ) :
UQCZgyJ4XB7c1GMnLgefqcc-zOA98hyOlMLZpO0EsCNxBq-e
- BTC Wallet :
bc1qpgzy8hpklpp0zwan5ha4lfzavvtjf286w0tlzc
- ETH Wallet :
0xE95FAEc8B847F18B3bC5dc1bB8256fb376d2e459
- TRX Wallet :
TG8MpYtysGngjK7tPdCATLqLJKwm5vbfYi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ynexchangepy-6.0.2.tar.gz.
File metadata
- Download URL: ynexchangepy-6.0.2.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
800670c299d1fee8f12103ef3f31a343bd34d3264b31c643526bdef48e015e29
|
|
| MD5 |
851ae4f3f684e270a0e3e9e906341383
|
|
| BLAKE2b-256 |
cc415e694a03341816cb8edfb948eee376ffa4352a17d3ce27e9d1359aa7dcea
|
File details
Details for the file ynexchangepy-6.0.2-py3-none-any.whl.
File metadata
- Download URL: ynexchangepy-6.0.2-py3-none-any.whl
- Upload date:
- Size: 16.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42b2772d5a114f9c24ac0dac5515f2d76f23707105c6a0488384b8c966659bfa
|
|
| MD5 |
aac731d6e14f326bc689f34a8442ab80
|
|
| BLAKE2b-256 |
dafd096498febce30446a46f78bfe7ac97ede66a55b22d4cc905d15214e1143d
|