
    i4                     b    d Z 	 	 	 ddlZddlZddlZddlZddlZddl	Z	ddl
Z
 G d d          ZdS )zonedata.k(stockcode, period)    Nc                   f    e Zd ZddZd Zd ZddZd Zd	 Zd
 Z	d Z
d Zd Zd Zd Zd Zd ZdS )Onedatar   c                 &    || _         g d| _        d S )N)1530dailyweeklymonthly)kdatasource
periodlist)selfr   s     !E:\tools\ai\k\oneclass\onedata.py__init__zOnedata.__init__   s    &AAA    c                      d S N r   r   r   statuszOnedata.status   s    r   c                 Z    | j         dk    r|                                 }|ddg         }	 |S )Nr   	stockcode	stockname)r   hqr   dfs     r   	stocklistzOnedata.stocklist   s:     QB[-.B" 	r   	300027.SZr	   c                 8   g d}g d}| j         dk    r|d d         }||v r|                     ||          S ||v r|                     ||          S |dk    rd|                     |d          \  }}}|                     |d          }|                     |d          }	|                     |d	          }
||	|
|||fS | j         d
k    r||v r|                     ||          S ||v r|                     ||          S |dk    r|                     |d          }|                     |d          }|                     |d          }|                     |d          }|                     |d          }	|                     |d	          }
||	|
|||fS | j        dk    rd S d S )N)r	   r
   r   )r   r   r   r      allr	   r   r   r      r
   r      )r   _Onedata__K_DWM_Onedata__K_OFT_Onedata__web_K_DWM_Onedata__web_K_OFTsource)r   r   period	periodDWM	periodOFTdfddfwdfmdfodffdfts              r   kz	Onedata.k9   s    100	"NN	QmI""||If555""||If555u}} LL7;;CLL3//LL3//LL4003s3s3..Q""''	&999""''	&999u}}$$Yw77$$Yx88$$Yy99$$Ys33$$Ys33$$Yt443s3s3..;>>D >r   c                      t          j                    }|g d         }g d|_        |                    dddd          }|d                              fd          |d<   |S )N)u   代码u   名称u	   最新价u	   涨跌额u	   涨跌幅)r   r   cvalpctr   r   T)axisby	ascendingignore_indexc                 .                         |           S r   )_Onedata__format_code)xr   s    r   <lambda>zOnedata.hq.<locals>.<lambda>d   s    8J8J18M8M r   )akstock_zh_a_spot_emcolumnssort_valuesmapr   s   ` r   r   z
Onedata.hq\   st      ""EEEF<<<
>>qK$D>QQ[/--.M.M.M.MNN;	r   c                 (    t          j                    S r   )r>   r?   )r   s    r   bsinfozOnedata.bsinfog   s    $&&&r   c                    t          j        ||ddd          }|g d         }g d|_        t          j        |d                   |d<   |                    dgd	           |d
                             d                               d          |d
<   |dk    r|d
                             d          	                                                    d          }|d                             d          
                                                    d          }|d                             d                                                              d          }|d                             d                                                              d          }|d                             d                                                              d          }t          j        |||||gd          }	|	                    dd          }	|d
                             d          	                                                    d          }
|d                             d          
                                                    d          }|d                             d                                                              d          }|d                             d                                                              d          }|d                             d                                                              d          }t          j        |||||
gd          }|                    dd          }|||	fS |S )N2006010120230118qfq)symbolr(   
start_dateend_dateadjust)u   日期   开盘   收盘   最高   最低	   成交量dateopenclosehighlowvolrS   TinplacerX   c                     | dz  S Ni  r   r<   s    r   r=   z!Onedata.__K_DWM.<locals>.<lambda>s   
    AH r      r	   Mr"   rT   rU   rV   rW   r!   )r6   r   any)r6   howzW-FRI)r>   stock_zh_a_histr@   pdto_datetime	set_indexrB   roundresamplesumfirstlastmaxminconcatdropna)r   r   r(   r   mvolmopenmclosemhighmlowdf_mwvolwopenwclosewhighwlowdf_ws                   r   __K_DWMzOnedata.__K_DWMk   s     	&Zbluz{{{HHHI===
^BvJ//6

fXt,,,uIMM"4"455;;A>>5	 7??i((--113399!<<Dj))#..4466<<Q??Ek**3//4466<<Q??Fj))#..2244::1==Ei((--113399!<<D)UFE4>QGGGD++1%+00Di((115577==a@@Dj))'2288::@@CCEk**73388::@@CCFj))'226688>>qAAEi((115577==a@@D9eVUD$?aHHHD;;A5;11Dd4<Ir   c                    d}|dd                                           |d d         z   }|dk    rd}|dk    rd}|dk    rd	}d
| d| d}|                     |          }t          j        dd|          }t	          j        |          }	|dk    s$|dk    s|dk    s|	d         |         d|z            }n|	d         |         |         }t          j        |          }
t          j	        |
g d          }|g d         
                    t          j                                      d          |g d<   |d         
                    t          j                                      t                    |d<   t          j        |d                   |d<   |                    dgd           |d                             d                               d          |d<   |S )Nr   r   r	   dayr
   weekr   monthz8http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param=,z,1990-12-01,,2000,qfqz	,{(.+?)}]]sz399001sz399006sh000001datarH   rR   r@   rT   rU   rV   rW   r"   rX   rS   TrY   c                     | dz  S r\   r   r]   s    r   r=   z%Onedata.__web_K_DWM.<locals>.<lambda>   r^   r   r_   )lower_Onedata__gethtmlresubjsonloadsnparrayrd   	DataFrameapply
to_numericrg   astypeintre   rf   rB   )r   r   r(   my_kurlstockcode	tmpperiodurloriginaltxtgoodtxtmy_jsonarraykr   s               r   __web_K_DWMzOnedata.__web_K_DWM   s    ~++--	"1"= 7??%	8&	9'	y,yyYbyyynnS))&c;77*W%%Z''<+C+C|U_G_G_6?<0yADD6?<0;D$\&*Y*Y*YZZZ/12R2R2R/S/Y/YZ\Zg/h/h/n/nop/q/q+++,uIOOBM2299#>>5	^BvJ//6

fXt,,,uIMM"4"455;;A>>5	 	r   c                    |dd                                           |d d         z   }|dk    rd}|dk    rd}|dk    rd}d	| d
| d}|                     |          }t          j        dd|          }|dd          }t	          j        |          }|d         |         |         }	t          j        |	          }
t          j	        |
g d          }|g d         
                    t          j                                      d          |g d<   |d         
                    t          j                                      t                    |d<   t          j        |d                   |d<   |                    dgd           |d                             d                               d          |d<   |                     ||           |S )Nr~   r   r   m1r   m5r   m30z5http://ifzq.gtimg.cn/appstock/app/kline/mkline?param=r   z$,,320&_var=m1_today&r=0.260880015116z	,{}(.+?)]r   	   r   rR   r   r   r"   rX   rS   TrY   c                     | dz  S r\   r   r]   s    r   r=   z%Onedata.__web_K_OFT.<locals>.<lambda>   r^   r   r_   )r   r   r   r   r   r   r   r   rd   r   r   r   rg   r   r   re   rf   rB   _Onedata__wash_K_div)r   r   r(   r   r   r   r   r   r   r   r   r   s               r   __web_K_OFTzOnedata.__web_K_OFT   s    ~++--	"1"=3;;dI3;;dI4<<eI F|  F  FV_  F  F  FnnS))&c;77!""+*W%%v|,Y7$\&*Y*Y*YZZZ/12R2R2R/S/Y/YM0 0 588 	+++,uIOOBM2299#>>5	^BvJ//6

fXt,,,uIMM"4"455;;A>>5	 	"Y'''	r   c                    |                      |          }|                                D ]\  }}|t          j        d          z
  }||j        d         k     r n|j        j        D ]}|dk    r|dk    ry|j        d ||fxx         |j        dz  z  cc<   |j        d ||fxx         |j	        |j
        dz  z  z  cc<   |j        d ||fxx         d|j        dz  z   |j
        dz  z   z  cc<   |S )Nr!   )minutesr   volumeamount
   )_Onedata__get_diviterrowsdatetime	timedeltaindexr@   valueslocbonuspricerationedpresent)r   kdatar   divpdkeyr4   rS   fields           r   __wash_K_divzOnedata.__wash_K_div   s9    ~~i(((( 	Y 	YHC+A6666Dek!n$$ee- Y YH$$():):IeteUl+++sy2~=+++IeteUl+++syCL2<M/NN+++Iftfem,,,CK"4D0Ds|VXGX0XX,,,	Y
 r   c                     t          j        d          }||d         |k             }t          j        |d                   |d<   |                    d          }|                    d          }|S )Nz./csv/divdata.csvcoderS   F)r8   )rd   read_csvre   rf   
sort_index)r   r   r   s      r   	__get_divzOnedata.__get_div   sh    011eFmy01uV}55f''  5 11r   c                    d}|dk     rC	 t          j        |d          j        }|S # t           j        j        $ r |dz  }Y nw xY w|dk     C|dk    rt          d| d| d           |dk    r|dk    rt          | d	| d
           dS dS dS )u    
        最多读取10次，每次等待3秒钟
        如果超过3次没有抓到K线数据，就把 i+url 输出到htmlerror.txt文件中
        每次程序开始运行的时候，清空 htmlerror.txt 文件
        r   r   r_   )timeoutr!   u	   尝试过u   次后，依然没有通过u   得到数据u
    次通过u    没有得到数据N)requestsgettext
exceptionsRequestExceptionprint)r   r   ihtmls       r   	__gethtmlzOnedata.__gethtml   s     "ff|C3338&7   Q	 "ff b55MaMMCMMMNNNq55QUUQ::#:::;;;;; 5UUs   ' AAc                 H   d}d}t          j        |dd|d          }|dd          }|g d         }g d|_        |d                             d	                               d
          |d<   t          j        |d                   |d<   |                    dgd           |S )N z2023-01-01 09:30:00z2024-01-16 15:00:00)rI   rJ   rK   r(   rL   i)u   时间rM   rN   rO   rP   rQ   rR   rX   c                     | dz  S r\   r   r]   s    r   r=   z!Onedata.__K_OFT.<locals>.<lambda>   r^   r   r_   rS   TrY   )r>   stock_zh_a_hist_min_emr@   rB   rg   rd   re   rf   )r   r   r(   
start_timeend_timer   s         r   __K_OFTzOnedata.__K_OFT   s     
&iDYdy  CI  RT  U  U  Udee9HHHI===
uIMM"4"455;;A>>5	^BvJ//6

fXt,,, 	r   c                     t          |          dk    r|S |dd         dk    r|dz   S |dd         dk    s|dd         dk    r|dz   S |dd         d	k    s|dd         d
k    r|dz   S d S )Nr   r   r!   6z.SH84z.BJ03z.SZ)len)r   scodes     r   __format_codezOnedata.__format_code  s    u::q==L1:s??;1Q3Z__ac
C;1Q3Z__ac
C; !0r   N)r   )r   r	   )__name__
__module____qualname__r   r   r   r1   r   rD   r#   r%   r&   r   r   r   r$   r;   r   r   r   r   r      s        B B B B    6! ! ! !F	 	 	' ' '  B  :  8  "  < < <&  "	 	 	 	 	r   r   )__doc__aksharer>   pandasrd   numpyr   r   r   r   r   r   r   r   r   <module>r      s    " "                                               w w w w w w w wr r   