Package: unicorn-binance-local-depth-cache
UNICORN Binance Local Depth CacheDescription|Installation|How To|Documentation|Examples|Change Log|Wiki|Social|Notifications|Bugs|Contributing|Leave a review|Disclaimer|Commercial SupportA local Binance DepthCache Manager for Python that supports multiple depth caches in one instance in a easy, fast, flexible,
robust and fully-featured way.The organization of the DepthCache takes place in the same asyncio loop as the reception of the websocket data. The
full stack of the UBS modules (REST, WebSocket and DepthCache) can be downloaded and installed by PyPi and Anaconda
as a Python C extension for maximum performance.Part of 'UNICORN Binance Suite'.Get a UNICORN Binance Suite LicenseTo run modules of theUNICORN Binance Suiteyou need avalid license!Create a local depth_cachefor Binance with just 3 lines of code:import unicorn_binance_local_depth_cache

ubldc = unicorn_binance_local_depth_cache.BinanceLocalDepthCacheManager(exchange="binance.com")
ubldc.create_depth_cache("BTCUSDT")Get theasksandbidsdepth with:asks = ubldc.get_asks("BTCUSDT")
bids = ubldc.get_bids("BTCUSDT")Catch an exception, if thedepth_cache is out of syncwhile accessing its data:try:
    print(f"Top 10 asks: {ubldc.get_asks(market=market)[:10]}")
    print(f"Top 10 bids: {ubldc.get_bids(market=market)[:10]}")
except DepthCacheOutOfSync as error_msg:
    print(f"ERROR: {error_msg}")Stop and delete a depth_cache:ubldc.stop_depth_cache("BTCUSDT")Stop the full instance:ubldc.stop_manager()Discover more possibilities.DescriptionThe Python packageUNICORN Binance Local Depth Cacheprovides a local depth_cache for the Binance ExchangesBinance(+Testnet),Binance Futures(+Testnet) - more are coming soon.The algorithm of the depth_cache management was designed according to these instructions:Binance Spot: "How to manage a local order book correctly"Binance Futures: "How to manage a local order book correctly"Bycreate_depth_cache()the depth_cache is started and initialized, that means for each depth_cache you want to create a separate
thread is started. As soon as at least one depth update is received via websocket, a REST snapshot is downloaded and
the depth updates are applied to it, keeping it in sync in real-time. Once this is done, the state of the cache is set
to "synchronous".Data in the depth_cache can be accessed with'get_asks()'and'get_bids()'.
If the state of the depth_cache is not synchronous during access, the exception'DepthCacheOutOfSync'is thrown.The depth_cache will immediately start an automatic re-initialization if a gap in the UpdateID`s is detected (missing
update event) or if the websocket connection is interrupted. As soon as this happens the state of the depth_cache is set
to "out of sync" and when accessing the cache the exception'DepthCacheOutOfSync'is thrown.Why a local depth_cache?A local depth_cache is the fastest way to access the current order book depth at any time while transferring as little data as necessary. A REST snapshot takes a lot of time and the amount of data that is transferred is relatively large. Continuous full transmission of the order book via websocket is faster, but the amount of data is huge. A local depth_cache is initialized once with a REST snapshot and then handles Diff. Depth updates applied by the websocket connection. By transferring a small amount of data (only the changes), a local depth_cache is kept in sync in real time and also allows extremely fast (local) access to the data without exceeding theBinance request weight limits.What are the benefits of the UNICORN Binance Local Depth Cache?Always know if the cache is in sync! If the depth_cache is out of sync, the exception'DepthCacheOutOfSync'is thrown or ask withis_depth_cache_synchronized().If a depth cache is out of sync it gets refreshed automatically within a few seconds.100% Websocket auto-reconnect!Supported ExchangesExchangeExchange stringBinancebinance.comBinance Testnetbinance.com-testnetBinance USD-M Futuresbinance.com-futuresBinance USD-M Futures Testnetbinance.com-futures-testnetMore are coming ...-Create multiple depth caches within a single object instance.Each depth_cache is processed in a separate thread.Start or stop multiple caches with just one commandcreate_depth_cache()orstop_depth_cache().Control websocket out of sync detection withwebsocket_ping_interval,websocket_ping_timeoutandwebsocket_close_timeoutPowered byUNICORN Binance REST APIandUNICORN Binance WebSocket API.If you like the project, pleaseit onGitHub!Installation and UpgradeThe module requires Python 3.7 or above, as it depends on Pythons latest asyncio features for asynchronous/concurrent
processing.For the PyPy interpreter we offer packages only from Python version 3.9 and higher.Anaconda packages are available from Python version 3.8 and higher.The current dependencies are listedhere.If you run into errors during the installation take a lookhere.A Cython binary, PyPy or source code based CPython wheel of the latest version withpipfromPyPIOurCythonandPyPyWheels are available onPyPI,
these wheels offer significant advantages for Python developers:Performance Boost with Cython Wheels:Cython is a programming language that supplements Python with static typing and C-level performance. By compiling
Python code into C, Cython Wheels can significantly enhance the execution speed of Python code, especially in
computationally intensive tasks. This means faster runtimes and more efficient processing for users of our package.PyPy Wheels for Enhanced Efficiency:PyPy is an alternative Python interpreter known for its speed and efficiency. It uses Just-In-Time (JIT) compilation,
which can dramatically improve the performance of Python code. Our PyPy Wheels are tailored for compatibility with
PyPy, allowing users to leverage this speed advantage seamlessly.Both Cython and PyPy Wheels on PyPI make the installation process simpler and more straightforward. They ensure that
you get the optimized version of our package with minimal setup, allowing you to focus on development rather than
configuration.Installationpip install unicorn-binance-local-depth-cacheUpdatepip install unicorn-binance-local-depth-cache --upgradeA Conda Package of the latest version withcondafromAnacondaTheunicorn-binance-local-depth-cachepackage is available withCondathrough thelucitchannel.For optimal compatibility and performance, it is recommended to source the necessary dependencies from theconda-forgechannel.Installationconda config --add channels conda-forge
conda config --add channels lucit
conda install -c lucit unicorn-binance-local-depth-cacheUpdateconda update -c lucit unicorn-binance-local-depth-cacheFrom source of the latest release with PIP fromGitHubLinux, macOS, ...Run in bash:pip install https://github.com/LUCIT-Systems-and-Development/unicorn-binance-local-depth-cache/archive/$(curl -s https://api.github.com/repos/LUCIT-Systems-and-Development/unicorn-binance-local-depth-cache/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")').tar.gz --upgradeWindowsUse the below command with the version (such as 1.0.0) you determinedhere:pip install https://github.com/LUCIT-Systems-and-Development/unicorn-binance-local-depth-cache/archive/1.0.0.tar.gz --upgradeFrom the latest source (dev-stage) with PIP fromGitHubThis is not a release version and can not be considered to be stable!pip install https://github.com/LUCIT-Systems-and-Development/unicorn-binance-local-depth-cache/tarball/master --upgradeConda environment,Virtualenvor plainPythonDownload thelatest releaseor thecurrent master branchand use:./environment.yml./pyproject.toml./requirements.txt./setup.pyChange Loghttps://lucit-systems-and-development.github.io/unicorn-binance-local-depth-cache/changelog.htmlDocumentationGeneralModulesExamplesexample_depth_cache.pyexample_log_to_console.pyexample_refresh_interval.pyexample_shared_ubwa_instance.pyexample_update_interval.pyexample_version_of_this_package.pyHowtoHow to Obtain and Use a Unicorn Binance Suite License Key and Run the UBS Module According to Best PracticeProject Homepagehttps://github.com/LUCIT-Systems-and-Development/unicorn-binance-local-depth-cacheWikihttps://github.com/LUCIT-Systems-and-Development/unicorn-binance-local-depth-cache/wikiSocialDiscussionsGitterhttps://t.me/unicorndevshttps://dev.binance.visionhttps://community.binance.orgReceive NotificationsTo receive notifications on available updates you canthe repository onGitHub, write yourown scriptwith usingis_update_available().Follow us onTwitteror onFacebookfor general news about theunicorn-binance-suite!To receive news (like inspection windows/maintenance) about the Binance API`s subscribe to their telegram groups:https://t.me/binance_api_announcementshttps://t.me/binance_api_englishhttps://t.me/Binance_JEX_ENhttps://t.me/Binance_USAhttps://t.me/TRBinanceTRhttps://t.me/BinanceDEXchangehttps://t.me/BinanceExchangeHow to report Bugs or suggest Improvements?List of planned features- clickif you need one of them or suggest a new feature!Before you report a bug,try the latest release. If the issue still exists, provide the error trace, OS
and Python version and explain how to reproduce the error. A demo script is appreciated.If you dont find an issue related to your topic, please open a newissue!Report a security bug!ContributingUNICORN Binance Local Depth Cacheis an open
source project which welcomes contributions which can be anything from simple documentation fixes and reporting dead links to new features. To
contribute followthis guide.ContributorsWeopen source!You want to say Thank You?We hope you are enjoying using our libraries and that they are proving to be useful to you. If you have a moment, we would greatly appreciate it if you could leave us areview on Google. Thank you for your support!DisclaimerThis project is for informational purposes only. You should not construe this information or any other material as
legal, tax, investment, financial or other advice. Nothing contained herein constitutes a solicitation, recommendation,
endorsement or offer by us or any third party provider to buy or sell any securities or other financial instruments in
this or any other jurisdiction in which such solicitation or offer would be unlawful under the securities laws of such
jurisdiction.If you intend to use real money, use it at your own risk!Under no circumstances will we be responsible or liable for any claims, damages, losses, expenses, costs or liabilities
of any kind, including but not limited to direct or indirect damages for loss of profits.Commercial SupportDo you need a developer, operator or consultant?Contact usfor a non-binding initial consultation!