o
    iJ                      @   s  d Z ddlZddlZddlZddlZz
ddlmZmZ W n e	y-   ddl
mZmZ Y nw dddddd	d
dddddddddZddddddddddddddddddddddddddddd d!d!dd"Zd4d%d&Zd5d)d*Zd6d,d-Zd4d.d/Zd0d1 Zd2d3 ZdS )7us   
数字货币行情数据
Created on 2017年9月9日
@author: Jimmy Liu
@group : waditu
@contact: jimmysoa@sina.cn
    N)urlopenRequestz3http://api.huobi.com/staticmarket/ticker_%s_json.jsz?http://api.huobi.com/staticmarket/%s_kline_%s_json.js?length=%sz0http://api.huobi.com/staticmarket/depth_%s_%s.jsz3http://api.huobi.com/staticmarket/detail_%s_json.js)rtklinesnapshottickz4https://www.okcoin.cn/api/v1/ticker.do?symbol=%s_cnyzChttps://www.okcoin.cn/api/v1/kline.do?symbol=%s_cny&type=%s&size=%szBhttps://www.okcoin.cn/api/v1/depth.do?symbol=%s_cny&merge=&size=%sz4https://www.okcoin.cn/api/v1/trades.do?symbol=%s_cnyz3http://api.chbtc.com/data/v1/ticker?currency=%s_cnyzBhttp://api.chbtc.com/data/v1/kline?currency=%s_cny&type=%s&size=%szAhttp://api.chbtc.com/data/v1/depth?currency=%s_cny&size=%s&merge=z3http://api.chbtc.com/data/v1/trades?currency=%s_cny)hbokchbtc1001day2001week300 0011min0055min01515min03030min0601hour)DWM1MIN5MIN15MIN30MIN60MINr   btcc                 C   s   t t|  d | S )u  
    实时tick行情
    params:
    ---------------
    broker: hb:火币
            ok:okCoin
            chbtc:中国比特币
    code: hb:btc,ltc
        ----okcoin---
        btc_cny：比特币    ltc_cny：莱特币    eth_cny :以太坊     etc_cny :以太经典    bcc_cny :比特现金 
        ----chbtc----
        btc_cny:BTC/CNY
        ltc_cny :LTC/CNY
        eth_cny :以太币/CNY
        etc_cny :ETC币/CNY
        bts_cny :BTS币/CNY
        eos_cny :EOS币/CNY
        bcc_cny :BCC币/CNY
        qtum_cny :量子链/CNY
        hsr_cny :HSR币/CNY
    return:json
    ---------------
    hb:
    {
    "time":"1504713534",
    "ticker":{
        "symbol":"btccny",
        "open":26010.90,
        "last":28789.00,
        "low":26000.00,
        "high":28810.00,
        "vol":17426.2198,
        "buy":28750.000000,
        "sell":28789.000000
        }
    }
    ok:
    {
    "date":"1504713864",
    "ticker":{
        "buy":"28743.0",
        "high":"28886.99",
        "last":"28743.0",
        "low":"26040.0",
        "sell":"28745.0",
        "vol":"20767.734"
        }
    }
    chbtc: 
        {
         u'date': u'1504794151878',
         u'ticker': {
             u'sell': u'28859.56', 
             u'buy': u'28822.89', 
             u'last': u'28859.56', 
             u'vol': u'2702.71', 
             u'high': u'29132', 
             u'low': u'27929'
         }
        }

        
    r   )	_get_dataURL)brokercode r(   G/opt/alphahud/venv/lib/python3.10/site-packages/tushare/coins/market.py
coins_tickV   s   @r*   r   2000c                 C   s  z{t t|  d |t|   |  |f }|du r|W S | dkr%|d }tj|g dd}| dkrR|  dv rF|d	 d
d |d	< n|d	 dd |d	< n|d	 dd |d	< |  dv rp|d	 dd |d	< t|d	 |d	< |W S  t	y   t
t  Y dS w )u  
            获取各类k线数据
    params:
    broker:hb,ok,chbtc
    code:btc,ltc,eth,etc,bcc
    ktype:D,W,M,1min,5min,15min,30min,60min
    size:<2000
    return DataFrame: 日期时间，开盘价，最高价，最低价，收盘价，成交量
    r   Nr
   data)DATEOPENHIGHLOWCLOSEVOLcolumnsr   )r   r   r   r-   c                 S      | dd S )Nr      r(   xr(   r(   r)   <lambda>       zcoins_bar.<locals>.<lambda>c                 S   r5   )Nr      r(   r7   r(   r(   r)   r9      r:   c                 S      t | d S N  int2timer7   r(   r(   r)   r9      r:   c                 S   s   t | dd S )Nr   
   )strr7   r(   r(   r)   r9      s    )r$   r%   KTYPESstripupperpd	DataFrameapplyto_datetime	Exceptionprint	traceback	print_exc)r&   r'   ktypesizejsdfr(   r(   r)   	coins_bar   s&   
*rR   5c           	      C   s   zdt t|  d ||f }|du r|W S | dkr"|d }t|d }| dkr.tdt }| dkr:|d	 }t|}tj|d
 ddgd}tj|d ddgd}||d< ||d< ||d}t|}|W S  t	yt   t
t  Y dS w )u   
            获取实时快照数据
    params:
    broker:hb,ok,chbtc
    code:btc,ltc,eth,etc,bcc
    size:<150
    return Panel: asks,bids
    r   Nr   tsr>   r	   %Y-%m-%d %H:%M:%Sr
   	timestampaskspricevolr3   bidstime)rW   rZ   )r$   r%   r@   r[   strftime	localtimerF   rG   PanelrJ   rK   rL   rM   )	r&   r'   rO   rP   timestrrW   rZ   djspfr(   r(   r)   coins_snapshot   s,   	

rb   c                 C   s   t t|  d | }|du r|S | dkr,t|d }|g d }|d dd |d< | d	krFt|}|g d
 }|d dd |d< | dkr`t|}|g d }|d dd |d< g d|_|S )u%  
    获取实时交易数据
    params:
    -------------
    broker: hb,ok,chbtc
    code:btc,ltc,eth,etc,bcc
    
    return:
    ---------------
    DataFrame
    'tid':order id
    'datetime', date time 
    'price' : trade price
    'amount' : trade amount
    'type' : buy or sell
    r   Nr   trades)idrT   rX   amount	directionrT   c                 S   r<   r=   r?   r7   r(   r(   r)   r9      r:   zcoins_trade.<locals>.<lambda>r	   )tiddate_msrX   re   typerh   c                 S   r<   r=   r?   r7   r(   r(   r)   r9      r:   r
   )rg   daterX   re   ri   rj   c                 S   s   t | S )Nr?   r7   r(   r(   r)   r9      s    )rg   datetimerX   re   ri   )r$   r%   rF   rG   rH   r4   )r&   r'   rP   rQ   r(   r(   r)   coins_trade   s"   


rl   c                 C   sb   z t | }t|dd }t|dk rW d S t|d}|W S  ty0   tt	
  Y d S w )NrA   )timeout2   GBK)r   r   readlenjsonloadsdecoderJ   rK   rL   rM   )urlrequestlinesrP   r(   r(   r)   r$      s   r$   c                 C   s   t | }t d|}|S )NrU   )r[   r]   r\   )rV   valuedtr(   r(   r)   r@     s   
r@   )r   r#   )r   r#   r   r+   )r   r#   rS   )__doc__pandasrF   rL   r[   rr   urllib.requestr   r   ImportErrorurllib2r%   rC   r*   rR   rb   rl   r$   r@   r(   r(   r(   r)   <module>   s   
,
B
 
 $