mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-09 14:00:55 +08:00
Support Point-in-time Data Operation (#343)
* add period ops class * black format * add pit data read * fix bug in period ops * update ops runnable * update PIT test example * black format * update PIT test * update tets_PIT * update code format * add check_feature_exist * black format * optimize the PIT Algorithm * fix bug * update example * update test_PIT name * add pit collector * black format * fix bugs * fix try * fix bug & add dump_pit.py * Successfully run and understand PIT * Add some docs and remove a bug * mv crypto collector * black format * Run succesfully after merging master * Pass test and fix code * remove useless PIT code * fix PYlint * Rename Co-authored-by: Young <afe.young@gmail.com>
This commit is contained in:
@@ -13,7 +13,7 @@ from dateutil.tz import tzlocal
|
||||
CUR_DIR = Path(__file__).resolve().parent
|
||||
sys.path.append(str(CUR_DIR.parent.parent))
|
||||
from data_collector.base import BaseCollector, BaseNormalize, BaseRun
|
||||
from data_collector.utils import get_cg_crypto_symbols
|
||||
from data_collector.utils import get_cg_crypto_symbols, deco_retry
|
||||
|
||||
from pycoingecko import CoinGeckoAPI
|
||||
from time import mktime
|
||||
@@ -21,6 +21,40 @@ from datetime import datetime as dt
|
||||
import time
|
||||
|
||||
|
||||
_CG_CRYPTO_SYMBOLS = None
|
||||
|
||||
|
||||
def get_cg_crypto_symbols(qlib_data_path: [str, Path] = None) -> list:
|
||||
"""get crypto symbols in coingecko
|
||||
|
||||
Returns
|
||||
-------
|
||||
crypto symbols in given exchanges list of coingecko
|
||||
"""
|
||||
global _CG_CRYPTO_SYMBOLS
|
||||
|
||||
@deco_retry
|
||||
def _get_coingecko():
|
||||
try:
|
||||
cg = CoinGeckoAPI()
|
||||
resp = pd.DataFrame(cg.get_coins_markets(vs_currency="usd"))
|
||||
except:
|
||||
raise ValueError("request error")
|
||||
try:
|
||||
_symbols = resp["id"].to_list()
|
||||
except Exception as e:
|
||||
logger.warning(f"request error: {e}")
|
||||
raise
|
||||
return _symbols
|
||||
|
||||
if _CG_CRYPTO_SYMBOLS is None:
|
||||
_all_symbols = _get_coingecko()
|
||||
|
||||
_CG_CRYPTO_SYMBOLS = sorted(set(_all_symbols))
|
||||
|
||||
return _CG_CRYPTO_SYMBOLS
|
||||
|
||||
|
||||
class CryptoCollector(BaseCollector):
|
||||
def __init__(
|
||||
self,
|
||||
|
||||
Reference in New Issue
Block a user