utils

utils

LogDirError

class finfactory.utils.utils.LogDirError

Bases: Exception

TokenError

class finfactory.utils.utils.TokenError

Bases: Exception

gen_py_logger

finfactory.utils.utils.gen_py_logger(pypath, logdir=None, config=None)

根据Python文件路径生成对应的日志文件路径

check_trade_date

finfactory.utils.utils.check_trade_date(df, ascending=True, nature=False)

检查df中的交易日所在列并补全

check_date_loss

finfactory.utils.utils.check_date_loss(df, date_col=None, only_workday=True, del_weekend=True, return_loss_data=False, market='SSE')

检查df中日期列缺失情况

check_daily_data_is_new

finfactory.utils.utils.check_daily_data_is_new(df_path, date_col='date', only_trade_day=True, only_workday=True, only_inweek=True, market='SSE', return_data=False)
检查日频数据是否为最新值
注:若date_col列不存在,则默认将索引作为日期

check_month_loss

finfactory.utils.utils.check_month_loss(df, month_col='month', return_loss_data=False)
月度数据缺失检查
注:month_col格式须如:’202206’

check_quarter_loss

finfactory.utils.utils.check_quarter_loss(df, quarter_col='quarter', return_loss_data=False)
季度数据缺失检查
注:quarter_col格式须如:’2022Q2’

check_minute_loss

finfactory.utils.utils.check_minute_loss(df, freq='1min', time_col=None, only_workday=True, del_weekend=True)

检查df中的时间列缺失情况

get_tushare_api

finfactory.utils.utils.get_tushare_api(token=None, logger=None)

根据token获取tushare API接口

parms_check_ts_daily

finfactory.utils.utils.parms_check_ts_daily(save_path_df, time_col='date', default_last_date='19891231', start_lag=1, **kwargs)

tushare更新日线数据之前,根据存档路径save_path获取起止日期等变量

get_gm_api

finfactory.utils.utils.get_gm_api(token=None, logger=None)

根据token获取掘金API接口

utils_crypto

get_ccxt_market

finfactory.utils.utils_crypto.get_ccxt_market(mkt='binance')

check_loss

finfactory.utils.utils_crypto.check_loss(df, freq, tcol='time', return_loss_data=True)
检查数字货币日频行情缺失情况
freq为频率,如’1d’, ‘5min’等

get_klines_ccxt

finfactory.utils.utils_crypto.get_klines_ccxt(symbol, start_time, freq='1d', n=None, mkt=None, logger=None)
ccxt获取K线数据
freq如’1d’, ‘1m’等

Examples

>>> symbol, mkt = 'BTC/USDT', 'binance'
>>> start_time = '2022-11-23 08:00:00'
>>> freq = '1d'
>>> df = get_klines_ccxt(symbol, start_time, freq=freq, mkt=mkt)
>>> freq = '30m'
>>> df1 = get_klines_ccxt(symbol, start_time, freq=freq, mkt=mkt)

merge_minute_candle

finfactory.utils.utils_crypto.merge_minute_candle(data, new_freq=30, cols_sum=None, tstart=True, time_trans=False)
用一分钟K线合成更低频分钟K线
new_freq指定合成的频率,必须能被240整除
data中必须包含[‘time’, ‘open’, ‘close’, ‘high’, ‘low’]
cols_sum为求和字段,如可指定成交量’volume’
tstart设置time列是否为K先开始时间,默认视为开始时间
若data中的time列格式不为’%Y-%m-%d %H:%M:%S’格式,应将time_trans设置为True
注:只适用于数字货币交易时间,即全天24小时

Examples

>>> from finfactory.load_his_data import load_ccxt_minute
>>> df1m = load_ccxt_minute('eth', 'eth_usdt', '1')
>>> df1m = df1m[df1m['time'] >= '2022-08-24 11:09:00']
>>> c1 = merge_minute_candle(df1m, cols_sum=['volume'],
                             tstart=True)
>>> c2 = merge_minute_candle(df1m, cols_sum=['volume'],
                             tstart=False)
>>> import datetime
>>> tdelta = datetime.timedelta(seconds=60)
>>> df1m['time'] = pd.to_datetime(df1m['time']) + tdelta
>>> c3 = merge_minute_candle(df1m, cols_sum=['volume'],
                             time_trans=True)