mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-12 04:13:06 +00:00
Integrate live feeds from Pyth (#2178)
* added dependency * added pyth models * dependencies * docs * some improvements to this pyth command (#2433) * some improvements to this pyth command * minor improv * dependencies * tests Co-authored-by: DidierRLopes <dro.lopes@campus.fct.unl.pt>; COlin
This commit is contained in:
1
i18n/en.yml
vendored
1
i18n/en.yml
vendored
@@ -489,6 +489,7 @@ en:
|
||||
stocks/pred/mc: Monte-Carlo simulations
|
||||
crypto/load: load a specific cryptocurrency for analysis
|
||||
crypto/find: find coins
|
||||
crypto/price: real-time price and interval of confidence
|
||||
crypto/_symbol: Coin
|
||||
crypto/_interval: Interval (min)
|
||||
crypto/_source: Source
|
||||
|
||||
@@ -8,7 +8,7 @@ import os
|
||||
from typing import List
|
||||
from prompt_toolkit.completion import NestedCompleter
|
||||
|
||||
from openbb_terminal.cryptocurrency import cryptocurrency_helpers
|
||||
from openbb_terminal.cryptocurrency import cryptocurrency_helpers, pyth_model, pyth_view
|
||||
from openbb_terminal import feature_flags as obbff
|
||||
from openbb_terminal.cryptocurrency.cryptocurrency_helpers import (
|
||||
FIND_KEYS,
|
||||
@@ -56,6 +56,7 @@ class CryptoController(CryptoBaseController):
|
||||
"find",
|
||||
"prt",
|
||||
"resources",
|
||||
"price",
|
||||
]
|
||||
CHOICES_MENUS = [
|
||||
"ta",
|
||||
@@ -94,6 +95,7 @@ class CryptoController(CryptoBaseController):
|
||||
}
|
||||
choices["load"]["--vs"] = {c: {} for c in ["usd", "eur"]}
|
||||
choices["find"]["-k"] = {c: {} for c in FIND_KEYS}
|
||||
choices["price"] = {c: {} for c in pyth_model.ASSETS.keys()}
|
||||
choices["headlines"] = {c: {} for c in finbrain_crypto_view.COINS}
|
||||
# choices["prt"]["--vs"] = {c: {} for c in coingecko_coin_ids} # list is huge. makes typing buggy
|
||||
|
||||
@@ -107,6 +109,7 @@ class CryptoController(CryptoBaseController):
|
||||
mt = MenuText("crypto/")
|
||||
mt.add_cmd("load")
|
||||
mt.add_cmd("find")
|
||||
mt.add_cmd("price", "Pyth")
|
||||
mt.add_raw("\n")
|
||||
mt.add_param(
|
||||
"_symbol", f"{self.symbol.upper()}/{self.vs.upper()}" if self.symbol else ""
|
||||
@@ -199,6 +202,38 @@ class CryptoController(CryptoBaseController):
|
||||
"No coin selected. Use 'load' to load the coin you want to look at.\n"
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_price(self, other_args):
|
||||
"""Process price command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="price",
|
||||
description="""Display price and interval of confidence in real-time. [Source: Pyth]""",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-s",
|
||||
"--symbol",
|
||||
required="-h" not in other_args,
|
||||
type=str,
|
||||
dest="symbol",
|
||||
help="Symbol of coin to load data for, ~100 symbols are available",
|
||||
)
|
||||
if other_args and "-" not in other_args[0][0]:
|
||||
other_args.insert(0, "-s")
|
||||
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
|
||||
if ns_parser:
|
||||
|
||||
if ns_parser.symbol in pyth_model.ASSETS.keys():
|
||||
console.print(
|
||||
"[param]If it takes too long, you can use 'Ctrl + C' to cancel.\n[/param]"
|
||||
)
|
||||
pyth_view.display_price(ns_parser.symbol)
|
||||
else:
|
||||
console.print("[red]The symbol selected does not exist.[/red]\n")
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_candle(self, other_args):
|
||||
"""Process candle command"""
|
||||
|
||||
113
openbb_terminal/cryptocurrency/pyth_model.py
Normal file
113
openbb_terminal/cryptocurrency/pyth_model.py
Normal file
@@ -0,0 +1,113 @@
|
||||
import logging
|
||||
|
||||
from pythclient.pythaccounts import PythPriceAccount, PythPriceStatus
|
||||
from pythclient.solana import (
|
||||
SolanaClient,
|
||||
SolanaPublicKey,
|
||||
SOLANA_DEVNET_HTTP_ENDPOINT,
|
||||
SOLANA_DEVNET_WS_ENDPOINT,
|
||||
)
|
||||
|
||||
from openbb_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
ASSETS = {
|
||||
"AAVE-USD": {"feedID": "FT7Cup6ZiFDF14uhFD3kYS3URMCf2RZ4iwfNEVUgndHW"},
|
||||
"ADA-USD": {"feedID": "8oGTURNmSQkrBS1AQ5NjB2p8qY34UVmMA9ojrw8vnHus"},
|
||||
"ALGO-USD": {"feedID": "c1A946dY5NHuVda77C8XXtXytyR3wK1SCP3eA9VRfC3"},
|
||||
"ANC-USD": {"feedID": "5Si2Pdm7B87ojYvkegg7ct8Y446RHJyEjeREAyZEZcAV"},
|
||||
"APE-USD": {"feedID": "EfnLcrwxCgwALc5vXr4cwPZMVcmotZAuqmHa8afG8zJe"},
|
||||
"ATLAS-USD": {"feedID": "Dzs6SE1cssUqBpWCKzE4jeS5PrmRK1Fp2Kw1WMaDCiVR"},
|
||||
"ATOM-USD": {"feedID": "7YAze8qFUMkBnyLVdKT4TFUUFui99EwS5gfRArMcrvFk"},
|
||||
"AUST-UST": {"feedID": "9g8mGLKcDiKSrWahbjKGtpGCcrLkC5kbwmpFFGRs6euf"},
|
||||
"AVAX-USD": {"feedID": "FVb5h1VmHPfVb1RfqZckchq18GxRv4iKt8T4eVTQAqdz"},
|
||||
"BCH-USD": {"feedID": "4EQrNZYk5KR1RnjyzbaaRbHsv8VqZWzSUtvx58wLsZbj"},
|
||||
"BETH-USD": {"feedID": "HyShqBUTtwAaCas9Dnib3ut6GmEDk9hTdKsrNfRffX8E"},
|
||||
"BNB-USD": {"feedID": "GwzBgrXb4PG59zjce24SF2b9JXbLEjJJTBkmytuEZj1b"},
|
||||
"BRZ-USD": {"feedID": "5g4XtpqLynP6YUSQwncw6CrdAEoy5a7QNDevgAgLsfyC"},
|
||||
"BTC-USD": {"feedID": "HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J"},
|
||||
"BUSD-USD": {"feedID": "TRrB75VTpiojCy99S5BHmYkjARgtfBqZKk5JbeouUkV"},
|
||||
"C98-USD": {"feedID": "Dxp7vob2NTGhmodyWyeEkqtNEpSfvSMoGKMYjmaY6pg1"},
|
||||
"COPE-USD": {"feedID": "BAXDJUXtz6P5ARhHH1aPwgv4WENzHwzyhmLYK4daFwiM"},
|
||||
"CUSD-USD": {"feedID": "DDwzo3aAjgYk8Vn8D3Zbxo62rTmBVdJv1WjaKQseiHKk"},
|
||||
"DOGE-USD": {"feedID": "4L6YhY8VvUgmqG5MvJkUJATtzB2rFqdrJwQCmFLv4Jzy"},
|
||||
"DOT-USD": {"feedID": "4dqq5VBpN4EwYb7wyywjjfknvMKu7m78j9mKZRXTj462"},
|
||||
"ETH-USD": {"feedID": "EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw"},
|
||||
"FIDA-USD": {"feedID": "7teETxN9Y8VK6uJxsctHEwST75mKLLwPH1jaFdvTQCpD"},
|
||||
"FTM-USD": {"feedID": "BTwrLU4so1oJMViWA3BTzh8YmFwiLZ6CL4U3JryG7Q5S"},
|
||||
"FTT-USD": {"feedID": "6vivTRs5ZPeeXbjo7dfburfaYDWoXjBtdtuYgQRuGfu"},
|
||||
"GMT-USD": {"feedID": "EZy99wkoqohyyNxT1QCwW3epQtMQ1Dfqx4sXKqkHiSox"},
|
||||
"GOFX-USD": {"feedID": "A9r7BHsXJQ2w9B7cdJV8BkfRoBWkxRichVGm72vVS1s5"},
|
||||
"HXRO-USD": {"feedID": "6VrSw4Vxg5zs9shfdCxLqfUy2qSD3NCS9AsdBQUgbjnt"},
|
||||
"INJ-USD": {"feedID": "44uRsNnT35kjkscSu59MxRr9CfkLZWf6gny8bWqUbVxE"},
|
||||
"JET-USD": {"feedID": "3JnVPNY878pRH6TQ9f4wuwfNqGh6okyshmqmKsyvewMs"},
|
||||
"LTC-USD": {"feedID": "BLArYBCUYhdWiY8PCUTpvFE21iaJq85dvxLk9bYMobcU"},
|
||||
"LUNA-USD": {"feedID": "7xzCBiE2d9UwV9CYLV9vrbJPipJzMEaycPBoZg2LjhUf"},
|
||||
"LUNC-USD": {"feedID": "8PugCXTAHLM9kfLSQWe2njE5pzAgUdpPk3Nx5zSm7BD3"},
|
||||
"MATIC-USD": {"feedID": "FBirwuDFuRAu4iSGc7RGxN5koHB7EJM1wbCmyPuQoGur"},
|
||||
"MER-USD": {"feedID": "6Z3ejn8DCWQFBuAcw29d3A5jgahEpmycn7YDMX7yRNrn"},
|
||||
"MIR-USD": {"feedID": "4BDvhA5emySfqyyTHPHofTJqRw1cwDabK1yiEshetPv9"},
|
||||
"MNGO-USD": {"feedID": "DCNw5mwZgjfTcoNsSZWUiXqU61ushNvr3JRQJRi1Nf95"},
|
||||
"MSOL-USD": {"feedID": "9a6RNx3tCu1TSs6TBSfV2XRXEPEZXQ6WB7jRojZRvyeZ"},
|
||||
"NEAR-USD": {"feedID": "3gnSbT7bhoTdGkFVZc1dW1PvjreWzpUNUD5ppXwv1N59"},
|
||||
"ONE-USD": {"feedID": "BScN1mER6QJ2nFKpnP4PcqffQp97NXAvzAbVPjLKyRaF"},
|
||||
"ORCA-USD": {"feedID": "A1WttWF7X3Rg6ZRpB2YQUFHCRh1kiXV8sKKLV3S9neJV"},
|
||||
"PAI-USD": {"feedID": "8EjmYPrH9oHxLqk2oFG1qwY6ert7M9cv5WpXyWHxKiMb"},
|
||||
"PORT-USD": {"feedID": "33ugpDWbC2mLrYSQvu1BHfykR8bt3MVc4S3YuuXMVRH3"},
|
||||
"RAY-USD": {"feedID": "EhgAdTrgxi4ZoVZLQx1n93vULucPpiFi2BQtz9RJr1y6"},
|
||||
"SBR-USD": {"feedID": "4WSN3XDSTfBX9A1YXGg8HJ7n2GtWMDNbtz1ab6aGGXfG"},
|
||||
"SCNSOL-USD": {"feedID": "HoDAYYYhFvCNQNFPui51H8qvpcdz6KuVtq77ZGtHND2T"},
|
||||
"SLND-USD": {"feedID": "FtwKARNAnZK2Nx1W4KVXzbyDzuRJqmApHRBtQpZ49HDv"},
|
||||
"SNY-USD": {"feedID": "DEmEX28EgrdQEBwNXdfMsDoJWZXCHRS5pbgmJiTkjCRH"},
|
||||
"SOL-USD": {"feedID": "J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix"},
|
||||
"SRM-USD": {"feedID": "992moaMQKs32GKZ9dxi8keyM2bUmbrwBZpK4p2K6X5Vs"},
|
||||
"STEP-USD": {"feedID": "DKjdYzkPEZLBsfRzUaCjze5jjgCYu5kFCB19wVa9sy6j"},
|
||||
"STSOL-USD": {"feedID": "2LwhbcswZekofMNRtDRMukZJNSRUiKYMFbqtBwqjDfke"},
|
||||
"TUSD-USD": {"feedID": "2sbXow64dSbktGM6gG9FpszwVu7GNhr6Qi2WHRCP9ULn"},
|
||||
"USDC-USD": {"feedID": "5SSkXsEKQepHHAewytPVwdej4epN1nxgLVM84L4KXgy7"},
|
||||
"USDT-USD": {"feedID": "38xoQ4oeJCBrcVvca2cGk7iV1dAfrmTR1kmhSCJQ8Jto"},
|
||||
"USTC-USD": {"feedID": "AUKjh1oVPZyudi3nzYSsdZxSjq42afUCvsdbKFc5CbD"},
|
||||
"VAI-USD": {"feedID": "Gvm85Pbjq4Tv7qyaS4y9ZMqCdY3nynGDBFYAu7mjPoGM"},
|
||||
"XVS-USD": {"feedID": "8Y4jhVcQvQZWjMarM855NMkVuua78FS8Uwy58TjcnUWs"},
|
||||
"ZBC-USD": {"feedID": "7myonvBWD5zfh6qfScRP5E4anEue4Bqnu8XS8cdtJTQx"},
|
||||
}
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
async def get_price(symbol: str):
|
||||
"""Returns price and confidence interval from pyth live feed. [Source: Pyth]
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Symbol of the asset to get price and confidence interval from
|
||||
|
||||
Returns
|
||||
-------
|
||||
float
|
||||
Price of the asset
|
||||
float
|
||||
Confidence level
|
||||
float
|
||||
Previous price of the asset
|
||||
"""
|
||||
|
||||
account_key = SolanaPublicKey(ASSETS[symbol]["feedID"])
|
||||
solana_client = SolanaClient(
|
||||
endpoint=SOLANA_DEVNET_HTTP_ENDPOINT, ws_endpoint=SOLANA_DEVNET_WS_ENDPOINT
|
||||
)
|
||||
price: PythPriceAccount = PythPriceAccount(account_key, solana_client)
|
||||
|
||||
await price.update()
|
||||
|
||||
price_status = price.aggregate_price_status
|
||||
aggregate_price = -1
|
||||
confidence = -1
|
||||
if price_status == PythPriceStatus.TRADING:
|
||||
aggregate_price = price.aggregate_price
|
||||
previous_price = price.prev_price
|
||||
confidence = price.aggregate_price_confidence_interval
|
||||
|
||||
await solana_client.close()
|
||||
return aggregate_price, confidence, previous_price
|
||||
31
openbb_terminal/cryptocurrency/pyth_view.py
Normal file
31
openbb_terminal/cryptocurrency/pyth_view.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# pylint: disable= C0301
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from openbb_terminal.cryptocurrency.pyth_model import get_price
|
||||
from openbb_terminal.decorators import log_start_end
|
||||
from openbb_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_price(symbol: str) -> None:
|
||||
"""Displays live price from pyth live feed [Source: https://pyth.network/]
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Symbol of the asset to get price for
|
||||
"""
|
||||
try:
|
||||
while True:
|
||||
price, confidence, previous_price = asyncio.run(get_price(symbol))
|
||||
console.print(
|
||||
f"{symbol} = {'[red]' if previous_price >= price else '[green]'}"
|
||||
f"{price}{'[/red]' if previous_price >= price else '[/green]'} ± {confidence}",
|
||||
end="\r",
|
||||
)
|
||||
except KeyboardInterrupt:
|
||||
print(f"\n\nStopped watching {symbol} price and confidence interval\n")
|
||||
2535
poetry.lock
generated
vendored
2535
poetry.lock
generated
vendored
File diff suppressed because it is too large
Load Diff
3
pyproject.toml
vendored
3
pyproject.toml
vendored
@@ -96,6 +96,7 @@ jupyterlab-code-formatter = {version = "^1.4.10", optional = true}
|
||||
jupyterlab-lsp = {version = "^3.10.1", optional = true}
|
||||
jedi-language-server = {version = "^0.35.1", optional = true}
|
||||
charset-normalizer = "2.1.0"
|
||||
pythclient = "^0.1.2"
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
pytest = "^6.2.2"
|
||||
@@ -130,4 +131,4 @@ installer = ["pyinstaller"]
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=1.0.0"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
37
requirements-full.txt
vendored
37
requirements-full.txt
vendored
@@ -1,7 +1,7 @@
|
||||
absl-py==1.2.0; python_version >= "3.7"
|
||||
aiodns==3.0.0; python_version >= "3.5.2"
|
||||
aiohttp==3.8.1; python_version >= "3.6"
|
||||
aiosignal==1.2.0; python_version >= "3.6"
|
||||
aiodns==3.0.0; python_version >= "3.5.2" and python_full_version >= "3.7.0"
|
||||
aiohttp==3.8.2; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
aiosignal==1.2.0; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
alabaster==0.7.12; python_version >= "3.6"
|
||||
alpha-vantage==2.3.1
|
||||
ansiwrap==0.8.4; python_version >= "3.7"
|
||||
@@ -17,13 +17,15 @@ astropy==5.1; python_version >= "3.8"
|
||||
asttokens==2.0.8; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
astunparse==1.6.3; python_version >= "3.7"
|
||||
async-generator==1.10; python_version >= "3.7" and python_version < "4.0"
|
||||
async-timeout==4.0.2; python_version >= "3.6"
|
||||
async-timeout==4.0.2; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
atomicwrites==1.4.1; python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.4.0"
|
||||
attrs==21.4.0; python_full_version >= "3.7.0" and python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.5.0")
|
||||
attrs==21.4.0; python_full_version >= "3.7.0" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.5.0") and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.5.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7")
|
||||
babel==2.10.3; python_version >= "3.7"
|
||||
backcall==0.2.0; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
backoff==2.1.2; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
backports.zoneinfo==0.2.1; python_version < "3.9" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
bandit==1.7.4; python_version >= "3.7"
|
||||
base58==2.1.1; python_version >= "3.5" and python_full_version >= "3.7.0"
|
||||
beartype==0.7.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
beautifulsoup4==4.11.1; python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
black==22.8.0; python_full_version >= "3.6.2"
|
||||
@@ -31,7 +33,7 @@ bleach==5.0.1; python_version >= "3.7"
|
||||
bs4==0.0.1
|
||||
bt==0.2.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
|
||||
cachetools==5.2.0; python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7")
|
||||
ccxt==1.93.66
|
||||
ccxt==1.93.78
|
||||
certifi==2022.9.14; python_version >= "3.8" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
|
||||
cffi==1.15.1
|
||||
cfgv==3.3.1; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
@@ -64,7 +66,7 @@ entrypoints==0.4; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
et-xmlfile==1.1.0; python_version >= "3.6"
|
||||
exchange-calendars==4.2.3; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
executing==1.0.0; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
fastjsonschema==2.16.1; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
fastjsonschema==2.16.2; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
feedparser==6.0.10; python_version >= "3.6"
|
||||
ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
filelock==3.8.0; python_version >= "3.7"
|
||||
@@ -74,19 +76,19 @@ finviz==1.4.4
|
||||
finvizfinance==0.14.3; python_version >= "3.5"
|
||||
flake8==3.9.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
|
||||
flatbuffers==2.0.7; python_version >= "3.7"
|
||||
fonttools==4.37.2; python_version >= "3.7"
|
||||
fonttools==4.37.3; python_version >= "3.7"
|
||||
formulaic==0.3.4; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
fred==3.1
|
||||
fredapi==0.4.3
|
||||
frozendict==2.3.4; python_version >= "3.6"
|
||||
frozenlist==1.3.1; python_version >= "3.7"
|
||||
frozenlist==1.3.1; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
fundamentalanalysis==0.2.14
|
||||
future==0.18.2; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
gast==0.4.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
|
||||
gitdb==4.0.9; python_version >= "3.7"
|
||||
gitpython==3.1.27; python_version >= "3.7"
|
||||
google-auth-oauthlib==0.4.6; python_version >= "3.7"
|
||||
google-auth==2.11.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
google-auth==2.11.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
google-pasta==0.2.0; python_version >= "3.7"
|
||||
grpcio==1.49.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
h11==0.13.0; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
@@ -130,6 +132,7 @@ korean-lunar-calendar==0.3.1; python_version >= "3.8" and python_version < "4.0"
|
||||
lazy-object-proxy==1.7.1; python_version >= "3.6" and python_full_version >= "3.7.2"
|
||||
libclang==14.0.6; python_version >= "3.7"
|
||||
linearmodels==4.27; python_version >= "3.8"
|
||||
loguru==0.6.0; python_version >= "3.5" and python_full_version >= "3.7.0"
|
||||
lxml==4.9.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
markdown-it-py==1.1.0; python_version >= "3.6" and python_version < "4.0"
|
||||
markdown==3.4.1; python_version >= "3.7"
|
||||
@@ -142,7 +145,7 @@ mistune==0.8.4; python_version >= "3.7"
|
||||
mock==4.0.3; python_version >= "3.6"
|
||||
more-itertools==8.14.0; python_version >= "3.6"
|
||||
mplfinance==0.12.9b1
|
||||
multidict==6.0.2; python_version >= "3.7"
|
||||
multidict==5.2.0; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
multitasking==0.0.11
|
||||
mypy-extensions==0.4.3; python_version >= "3.8" and python_full_version >= "3.6.2"
|
||||
mypy==0.930; python_version >= "3.6"
|
||||
@@ -168,7 +171,7 @@ packaging==21.3; python_version >= "3.8"
|
||||
pandas-datareader==0.10.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
|
||||
pandas-market-calendars==3.2; python_full_version >= "3.7.0"
|
||||
pandas-ta==0.3.14b
|
||||
pandas==1.4.4; python_version >= "3.8"
|
||||
pandas==1.5.0; python_version >= "3.8"
|
||||
pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
|
||||
papermill==2.4.0; python_version >= "3.7"
|
||||
parso==0.8.3; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
@@ -197,13 +200,13 @@ py==1.11.0; python_full_version >= "3.7.0" and python_version >= "3.7" and imple
|
||||
pyally==1.1.2
|
||||
pyasn1-modules==0.2.8; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
pyasn1==0.4.8; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") or python_full_version >= "3.6.0" and python_version >= "3.7" and python_version < "4" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7")
|
||||
pycares==4.2.2; python_version >= "3.5.2"
|
||||
pycodestyle==2.7.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
|
||||
pycares==4.2.2; python_version >= "3.5.2" and python_full_version >= "3.7.0"
|
||||
pycodestyle==2.7.0; python_full_version >= "3.7.0"
|
||||
pycoingecko==2.3.0
|
||||
pycparser==2.21
|
||||
pyerfa==2.0.0.1; python_version >= "3.8"
|
||||
pyex==0.5.0
|
||||
pyflakes==2.3.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
|
||||
pyflakes==2.3.1; python_full_version >= "3.7.0"
|
||||
pygments==2.13.0; python_version >= "3.6"
|
||||
pyhdfe==0.1.0; python_version >= "3.8"
|
||||
pylint==2.15.2; python_full_version >= "3.7.2"
|
||||
@@ -222,6 +225,7 @@ pytest-cov==3.0.0; python_version >= "3.6"
|
||||
pytest-mock==3.8.2; python_version >= "3.7"
|
||||
pytest-recording==0.12.1; python_version >= "3.5"
|
||||
pytest==6.2.5; python_version >= "3.6"
|
||||
pythclient==0.1.2; python_full_version >= "3.7.0"
|
||||
python-binance==1.0.16
|
||||
python-coinmarketcap==0.2
|
||||
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "3.11" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5")
|
||||
@@ -329,10 +333,11 @@ websocket-client==1.4.1; python_version >= "3.8" and python_version < "4.0"
|
||||
websockets==10.3; python_version >= "3.7"
|
||||
werkzeug==2.2.2; python_version >= "3.7"
|
||||
widgetsnbextension==3.6.1
|
||||
win32-setctime==1.1.0; python_version >= "3.5" and python_full_version >= "3.7.0" and sys_platform == "win32"
|
||||
wrapt==1.14.1; python_full_version >= "3.7.2" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7") and python_version >= "3.8" and python_version < "3.11"
|
||||
wsproto==1.2.0; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
xlsxwriter==3.0.3; python_version >= "3.7"
|
||||
yarl==1.7.2; python_version >= "3.7"
|
||||
yarl==1.7.2; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
yfinance==0.1.74
|
||||
zipp==3.8.1; python_version < "3.10" and python_version >= "3.7"
|
||||
zope.interface==5.4.0; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5"
|
||||
|
||||
39
requirements.txt
vendored
39
requirements.txt
vendored
@@ -1,6 +1,6 @@
|
||||
aiodns==3.0.0; python_version >= "3.5.2"
|
||||
aiohttp==3.8.1; python_version >= "3.6"
|
||||
aiosignal==1.2.0; python_version >= "3.6"
|
||||
aiodns==3.0.0; python_version >= "3.5.2" and python_full_version >= "3.7.0"
|
||||
aiohttp==3.8.2; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
aiosignal==1.2.0; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
alpha-vantage==2.3.1
|
||||
ansiwrap==0.8.4; python_version >= "3.7"
|
||||
anyio==3.6.1; python_full_version >= "3.6.2" and python_version >= "3.7"
|
||||
@@ -13,23 +13,25 @@ astor==0.8.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" a
|
||||
astropy==5.1; python_version >= "3.8"
|
||||
asttokens==2.0.8; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
async-generator==1.10; python_version >= "3.7" and python_version < "4.0"
|
||||
async-timeout==4.0.2; python_version >= "3.6"
|
||||
attrs==21.4.0; python_full_version >= "3.7.0" and python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.5.0")
|
||||
async-timeout==4.0.2; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
attrs==21.4.0; python_version >= "3.7" and python_full_version >= "3.7.0" and (python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.5.0")
|
||||
babel==2.10.3; python_version >= "3.7"
|
||||
backcall==0.2.0; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
backoff==2.1.2; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
backports.zoneinfo==0.2.1; python_version < "3.9" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
base58==2.1.1; python_version >= "3.5" and python_full_version >= "3.7.0"
|
||||
beartype==0.7.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
beautifulsoup4==4.11.1; python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
black==22.8.0; python_full_version >= "3.6.2"
|
||||
bleach==5.0.1; python_version >= "3.7"
|
||||
bs4==0.0.1
|
||||
bt==0.2.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
|
||||
ccxt==1.93.66
|
||||
ccxt==1.93.78
|
||||
certifi==2022.9.14; python_version >= "3.8" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
|
||||
cffi==1.15.1
|
||||
charset-normalizer==2.1.0; python_full_version >= "3.6.0"
|
||||
click==8.1.3; python_version >= "3.7" and python_full_version >= "3.6.2"
|
||||
colorama==0.4.5; python_full_version >= "3.6.2" and python_full_version < "4.0.0" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows" and python_version >= "3.7") and platform_system == "Windows" and python_version >= "3.8" and sys_platform == "win32"
|
||||
colorama==0.4.5; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows" and python_version >= "3.7") and platform_system == "Windows" and python_version >= "3.8" and sys_platform == "win32"
|
||||
commonmark==0.9.1; python_full_version >= "3.6.2" and python_full_version < "4.0.0"
|
||||
convertdate==2.4.0; python_version >= "3.7" and python_version < "4"
|
||||
cryptography==38.0.1; python_version >= "3.6"
|
||||
@@ -51,19 +53,20 @@ entrypoints==0.4; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
et-xmlfile==1.1.0; python_version >= "3.6"
|
||||
exchange-calendars==4.2.3; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
executing==1.0.0; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
fastjsonschema==2.16.1; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
fastjsonschema==2.16.2; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
feedparser==6.0.10; python_version >= "3.6"
|
||||
ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
financedatabase==1.0.2
|
||||
finnhub-python==2.4.14
|
||||
finviz==1.4.4
|
||||
finvizfinance==0.14.3; python_version >= "3.5"
|
||||
fonttools==4.37.2; python_version >= "3.7"
|
||||
flake8==3.9.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
|
||||
fonttools==4.37.3; python_version >= "3.7"
|
||||
formulaic==0.3.4; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
fred==3.1
|
||||
fredapi==0.4.3
|
||||
frozendict==2.3.4; python_version >= "3.6"
|
||||
frozenlist==1.3.1; python_version >= "3.7"
|
||||
frozenlist==1.3.1; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
fundamentalanalysis==0.2.14
|
||||
future==0.18.2; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
gitdb==4.0.9; python_version >= "3.7"
|
||||
@@ -101,14 +104,16 @@ jupyterlab==3.4.7; python_version >= "3.7"
|
||||
kiwisolver==1.4.4; python_version >= "3.7"
|
||||
korean-lunar-calendar==0.3.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
linearmodels==4.27; python_version >= "3.8"
|
||||
loguru==0.6.0; python_version >= "3.5" and python_full_version >= "3.7.0"
|
||||
lxml==4.9.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
markupsafe==2.1.1; python_version >= "3.7"
|
||||
matplotlib-inline==0.1.6; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
matplotlib==3.5.3; python_version >= "3.7"
|
||||
mccabe==0.6.1; python_full_version >= "3.7.0"
|
||||
mistune==0.8.4; python_version >= "3.7"
|
||||
more-itertools==8.14.0; python_version >= "3.6"
|
||||
mplfinance==0.12.9b1
|
||||
multidict==6.0.2; python_version >= "3.7"
|
||||
multidict==5.2.0; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
multitasking==0.0.11
|
||||
mypy-extensions==0.4.3; python_version >= "3.8" and python_full_version >= "3.6.2"
|
||||
mypy==0.930; python_version >= "3.6"
|
||||
@@ -131,7 +136,7 @@ packaging==21.3; python_version >= "3.8"
|
||||
pandas-datareader==0.10.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
|
||||
pandas-market-calendars==3.2; python_full_version >= "3.7.0"
|
||||
pandas-ta==0.3.14b
|
||||
pandas==1.4.4; python_version >= "3.8"
|
||||
pandas==1.5.0; python_version >= "3.8"
|
||||
pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
|
||||
papermill==2.4.0; python_version >= "3.7"
|
||||
parso==0.8.3; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
@@ -155,11 +160,13 @@ ptyprocess==0.7.0; os_name != "nt" and python_version >= "3.8" and sys_platform
|
||||
pure-eval==0.2.2; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
py==1.11.0; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
pyally==1.1.2
|
||||
pycares==4.2.2; python_version >= "3.5.2"
|
||||
pycares==4.2.2; python_version >= "3.5.2" and python_full_version >= "3.7.0"
|
||||
pycodestyle==2.7.0; python_full_version >= "3.7.0"
|
||||
pycoingecko==2.3.0
|
||||
pycparser==2.21
|
||||
pyerfa==2.0.0.1; python_version >= "3.8"
|
||||
pyex==0.5.0
|
||||
pyflakes==2.3.1; python_full_version >= "3.7.0"
|
||||
pygments==2.13.0; python_version >= "3.6"
|
||||
pyhdfe==0.1.0; python_version >= "3.8"
|
||||
pyluach==2.0.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
@@ -173,6 +180,7 @@ pyportfolioopt==1.5.3; python_version >= "3.8" and python_version < "3.11"
|
||||
pyprind==2.11.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
pyrsistent==0.18.1; python_version >= "3.7"
|
||||
pysocks==1.7.1; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7"
|
||||
pythclient==0.1.2; python_full_version >= "3.7.0"
|
||||
python-binance==1.0.16
|
||||
python-coinmarketcap==0.2
|
||||
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "3.11" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5")
|
||||
@@ -233,7 +241,7 @@ tradingview-ta==3.2.10; python_version >= "3.6"
|
||||
traitlets==5.4.0; python_full_version >= "3.7.0" and python_version >= "3.8"
|
||||
trio-websocket==0.9.2; python_version >= "3.7" and python_version < "4.0"
|
||||
trio==0.21.0; python_version >= "3.7" and python_version < "4.0"
|
||||
typing-extensions==4.3.0; python_version < "3.10" and python_full_version >= "3.6.2" and python_version >= "3.7"
|
||||
typing-extensions==4.3.0; python_version < "3.10" and python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
tzdata==2022.2; platform_system == "Windows" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
tzlocal==4.2; python_version >= "3.6"
|
||||
ujson==5.5.0; python_version >= "3.7"
|
||||
@@ -249,10 +257,11 @@ webencodings==0.5.1; python_version >= "3.7" and python_full_version < "3.0.0" o
|
||||
websocket-client==1.4.1; python_version >= "3.8" and python_version < "4.0"
|
||||
websockets==10.3; python_version >= "3.7"
|
||||
widgetsnbextension==3.6.1
|
||||
win32-setctime==1.1.0; python_version >= "3.5" and python_full_version >= "3.7.0" and sys_platform == "win32"
|
||||
wrapt==1.14.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
wsproto==1.2.0; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
xlsxwriter==3.0.3; python_version >= "3.7"
|
||||
yarl==1.7.2; python_version >= "3.6"
|
||||
yarl==1.7.2; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
yfinance==0.1.74
|
||||
zipp==3.8.1; python_version < "3.10" and python_version >= "3.7"
|
||||
zope.interface==5.4.0; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
load load a specific cryptocurrency for analysis [YahooFinance, CoinGecko, CCXT]
|
||||
find find coins [CoinGecko, CoinPaprika, Binance, Coinbase, YahooFinance]
|
||||
price real-time price and interval of confidence
|
||||
|
||||
Coin:
|
||||
Source:
|
||||
|
||||
Reference in New Issue
Block a user