o
    iXP                     @   s  d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 g dZ
dd	 Zd
dddZdddddddZd(ddZddddddddg dddddddfddZd(ddZddddddddg dddddddfddZd)d d!Zd"d# Zed$kre Zed%d&d'Zee dS dS )*zl
pro init 
Created on 2018/07/01
@author: Jimmy Liu
@group : https://tushare.pro
@contact: jimmysoa@sina.cn
    )divisionN)client)upass)MA)openclosehighlow	pre_closec                 C   s   d|  S )Nz%.2f xr   r   G/opt/alphahud/venv/lib/python3.10/site-packages/tushare/pro/data_pro.py<lambda>       r   1DAY1WEEK1YEAR)DWYturnover_ratevolume_ratiopepe_ttm)torr   vrr   r   r       c                 C   B   | dks| du rt  } | dur| dkrtj| |d}|S tdu   
    初始化pro API,第一次可以通过ts.set_token('your token')来记录自己的token凭证，临时token可以通过本参数传入
    r   N)tokentimeoutzapi init error.r   	get_tokenr   DataApi	Exceptionr!   r"   pror   r   r   pro_api      r)   r   EF   c                 C   6  | dks| du r|durt d dS t| dkr!|  }n|dkr+|  n|  }d|vrdtj  }t|dd }|du rJdn|}|dksT|du rV|n|}|	d	d}|	d	d}|dkrn|   n|   } |  }|dur|nt
 }t|D ]}z|d
kr|dkr|j| ||||d}|	durt|	dkr|j| ||dg d }|d}|d}|j|ddd}| }d|	v rd|	vr|jddd}d|	v rd|	vr|jddd}|dkr|j| ||||d}|dkr|j| ||||d}d|v r*|j| |||||d}|d dd |d< |d d|d < |dur|j| ||ddd!g }|jd dkrGW  dS |jdd"d#j|dddd$d%}d|v rd|jdd"d&}|d! jd'd(|d!< tD ];}|d)kr|| |d!  ||< |d*kr|| |d!  t|d! d  ||< || t||< || t||< qp|
d"u r|jd!dd}d|vr|d |d   |d+< |d+ |d   d, |d-< |d- d.d t|d-< n |jdd gdd}n|d d|d < |d |d   |d+< |d+ |d   d, |d-< |d- d/d t|d-< n|d0kr^|dkr/|j| ||||d}|dkr>|j | ||||d}|dkrM|j!| ||||d}d|v r]|j| |||||d}n|d1kr|dkrs|j"| |||||d2}d|v r|j#| |||||d}n_|d3kr|dkr|j$| |||||d2}d|v r|j%| |||||d}n9|d4kr|dkr|j&| ||||d}n$|d5kr|dkr|j'| ||||d}d|v r|j| |||||d}|dkr|d6krd7}n|d8krd9}|j(|| ||||d:}|dur\t|dkr\|D ]K}t)|t*rZt+|d |t|d  |d;| < |d;|  t|d;| < t+|d< |t|d  |d=| < |d=|  t|d=| < q|jdd#}W n t,yz } z
t | W Y d}~qd}~ww |dur|dkrd>d? |-d@D }|| }|  S t.dA)Bu  
    BAR数据
    Parameters:
    ------------
    ts_code:证券代码，支持股票,ETF/LOF,期货/期权,港股,数字货币
    start_date:开始日期  YYYYMMDD
    end_date:结束日期 YYYYMMDD
    freq:支持1/5/15/30/60分钟,周/月/季/年
    asset:证券类型 E:股票和交易所基金，I:沪深指数,C:数字货币,FT:期货 FD:基金/O期权/H港股/CB可转债
    exchange:市场代码，用户数字货币行情
    adj:复权类型,None不复权,qfq:前复权,hfq:后复权
    ma:均线,支持自定义均线频度，如：ma5/ma10/ma20/ma60/maN
    offset:开始行数（分页功能，从第几行开始取数据）
    limit: 本次提取数据行数
    factors因子数据，目前支持以下两种：
        vr:量比,默认不返回，返回需指定：factor=['vr']
        tor:换手率，默认不返回，返回需指定：factor=['tor']
                    以上两种都需要：factor=['vr', 'tor']
    retry_count:网络重试次数

    Return
    ----------
    DataFrame
    code:代码
    open：开盘close/high/low/vol成交量/amount成交额/maN均价/vr量比/tor换手率

         期货(asset='FT')
    code/open/close/high/low/avg_price：均价  position：持仓量  vol：成交总量
    r   N+   提取复权行情必须输入ts_code参数r,   Cminr   
   -r+   r   ts_code
start_dateend_dateoffsetlimitr4   r5   r6   
trade_dater   r   r;   T
left_indexright_indexr   r   r      axisr   r   Mr4   r5   r6   freqr7   r8   
trade_timec                 S      |  dddd S Nr2   r   r      replacer   r   r   r   r   y       zpro_bar.<locals>.<lambda>r   r
   
adj_factorFdropleftr=   r>   how	ascendingbfillmethodhfqqfqchanged   pct_chgc                 S      t | S NFORMATr   r   r   r   r      r   c                 S   r]   r^   r_   r   r   r   r   r      r   IFTr4   r5   r6   exchanger7   r8   OCBFDddailywweekrd   symbolrD   	start_daer6   contract_typema%svolma_v_%sc                 S      g | ]}|  qS r   strip.0colr   r   r   
<listcomp>   rK   zpro_bar.<locals>.<listcomp>,ERROR.)/printlenru   lowerupperdatetimetodaydatestrrJ   r)   rangeri   daily_basic	set_indexmergereset_indexrO   weeklymonthlystk_minsmapshiftrM   shapesort_valuesfillna
PRICE_COLSfloatr`   astypeindex_dailyindex_weeklyindex_monthly	fut_dailyft_mins	opt_dailyopt_minscb_daily
fund_dailycoinbar
isinstanceintr   r&   splitIOErrorr4   apir5   r6   rD   assetrd   adjmafactors	adjfactorr7   r8   fieldsro   retry_countr   _datadsfctsrx   aef_listr   r   r   pro_bar*      (  





"


$

 


















((r   c                 C   r   r    r#   r'   r   r   r   r)      r*   c                 C   r-   )Bu  
    BAR数据
    Parameters:
    ------------
    ts_code:证券代码，支持股票,ETF/LOF,期货/期权,港股,数字货币
    start_date:开始日期  YYYYMMDD
    end_date:结束日期 YYYYMMDD
    freq:支持1/5/15/30/60分钟,周/月/季/年
    asset:证券类型 E:股票和交易所基金，I:沪深指数,C:数字货币,FT:期货 FD:基金/O期权/H港股/CB可转债
    exchange:市场代码，用户数字货币行情
    adj:复权类型,None不复权,qfq:前复权,hfq:后复权
    ma:均线,支持自定义均线频度，如：ma5/ma10/ma20/ma60/maN
    offset:开始行数（分页功能，从第几行开始取数据）
    limit: 本次提取数据行数
    factors因子数据，目前支持以下两种：
        vr:量比,默认不返回，返回需指定：factor=['vr']
        tor:换手率，默认不返回，返回需指定：factor=['tor']
                    以上两种都需要：factor=['vr', 'tor']
    retry_count:网络重试次数
    
    Return
    ----------
    DataFrame
    code:代码
    open：开盘close/high/low/vol成交量/amount成交额/maN均价/vr量比/tor换手率
    
         期货(asset='FT')
    code/open/close/high/low/avg_price：均价  position：持仓量  vol：成交总量
    r   Nr.   r,   r/   r0   r   r1   r2   r+   r   r3   r9   r:   r;   Tr<   r   r   r   r?   r@   r   r   rB   rC   rE   c                 S   rF   rG   rI   r   r   r   r   r   &  rK   zpro_bar_vip.<locals>.<lambda>r   rL   r
   rM   FrN   rP   rQ   rS   rU   rV   rX   rY   rZ   r[   r\   c                 S   r]   r^   r_   r   r   r   r   r   <  r   c                 S   r]   r^   r_   r   r   r   r   r   C  r   ra   rb   rc   re   rf   rg   rh   ri   rj   rk   rl   rp   rq   rr   c                 S   rs   r   rt   rv   r   r   r   ry   r  rK   zpro_bar_vip.<locals>.<listcomp>rz   r{   )/r|   r}   ru   r~   r   r   r   r   r   rJ   r)   r   	daily_vipdaily_basic_vipr   r   r   rO   
weekly_vipmonthly_vipstk_mins_vipr   r   adj_factor_vipr   r   r   r   r   r`   r   index_daily_vipindex_weekly_vipindex_monthly_vipfut_daily_vipft_mins_vipopt_daily_vipopt_mins_vipcb_daily_vipfund_daily_vipr   r   r   r   r&   r   r   r   r   r   r   pro_bar_vip   r   r   c                 C   s2   | dks| d u rt  } ddlm} || d}|S )Nr   r   )TsSubscribe)r!   )r   r$   tushare.subs.ts_subs.subscriber   )r!   r   appr   r   r   subsx  s
   
r   c                 C   s   ddl m} || |}|S )Nr   )InsightSubscribe)tushare.subs.ht_subs.subscriber   )usernamepasswordr   r   r   r   r   ht_subs  s   
r   __main__z	688539.SHrY   )r4   r   )r   r   )r   )__doc__
__future__r   r   tushare.pror   tushare.utilr   tushare.util.formular   r   r`   FREQS	FACT_LISTr)   r   r   r   r   __name__r(   dfr|   r   r   r   r   <module>   sl   

 
!
 
"	