
    fi               	       *   d Z ddlmZ ddlZddlZddlmZmZm	Z	 ddl
mZ ddedej        fd	Zddedej        fdZdej        fdZ	 	 	 ddedededej        fdZedk    r0 e            Z ee            eddd          Z ee           dS dS )uz   
Date: 2024/3/1 23:00
Desc: 新浪财经-期货的主力合约数据
https://finance.sina.com.cn/futuremarket/index.shtml
    )StringION) zh_subscribe_exchange_symbol_urlzh_match_main_contract_urlzh_match_main_contract_payload)demjsondcesymbolreturnc                 ,   t          j        t                    }d|_        |j        }t          j        ||                    d          |                    d          dz                      }| dk    r5|d                             d           t          j
        |d                   S | dk    r5|d                             d           t          j
        |d                   S | d	k    r5|d	                             d
           t          j
        |d	                   S | dk    r5|d                             d           t          j
        |d                   S | dk    r5|d                             d           t          j
        |d                   S dS )u  
    订阅指定交易所品种的代码
    https://finance.sina.com.cn/futuremarket/index.shtml
    :param symbol: choice of {"dce", "czce", "shfe", "cffex", "gfex"}
    :type symbol: str
    :return: 订阅指定交易所品种的代码
    :rtype: pandas.DataFrame
    gb2312{z};   czceu   郑州商品交易所r   u   大连商品交易所shfeu   上海期货交易所cffexu   中国金融期货交易所gfexu   广州期货交易所N)requestsgetr   encodingtextr   decodefindremovepd	DataFrame)r	   r	data_text	data_jsons       X/usr/local/lib/python3.11/dist-packages/akshare/futures_derivative/futures_index_sina.pyzh_subscribe_exchange_symbolr       s    	566AAJI)..%%	t(<(<q(@@A I &  !8999|If-...% 7888|Ie,---&  !8999|If-...'!!"?@@@|Ig.///&  !8999|If-...     r   c                    g }t          |           j        dddf                                         }|D ]}t          j        d|i           t          j        t          t                    }t          j	        |j
                  }t          j        |          }	 ||d         j                            d          |d         j                            d          j        dddf         j                            d	          z           j        d
ddf         }|                    |           #  Y xY wt          j        |          }|S )u0  
    指定交易所的所有可以提供数据的合约
    https://finance.sina.com.cn/futuremarket/index.shtml
    :param symbol: choice of {"dce", "czce", "shfe", "cffex", "gfex"}
    :type symbol: str
    :return: 指定交易所的所有可以提供数据的合约
    :rtype: pandas.DataFrame
    Nr   node)paramsnameu   连续r	   z
([\w])(\d)0r      )r    iloctolistr   updater   r   r   r   r   r   r   r   strcontainsextractappend)	r	   subscribe_listexchange_symbol_listitemresr   data_dfmain_contracttemp_dfs	            r   match_main_contractr6   6   sH    N7??DQQQTJQQSS$  &-vtn===l&/M
 
 
 N38,,	,y))	##,,X66(#WW]++aaad XXc]]	# 1bqb5M !!-0000	Hl>**GNs   BD..D2c                      t          j                    } dD ]&}t          j        | t          |          g          } '|                     dd           | S )u   
    新浪主力连续合约品种一览表
    https://finance.sina.com.cn/futuremarket/index.shtml
    :return: 新浪主力连续合约品种一览表
    :rtype: pandas.DataFrame
    )r   r   r   r   r   )r	   T)inplacedrop)r   r   concatr6   reset_index)r5   r1   s     r   futures_display_main_sinar<   Y   s`     lnnG8 I I)W&9&F&F&FGHH4000Nr!   V01990010122220101
start_dateend_datec                 h   d}|dd         dz   |dd         z   dz   |dd         z   }d|  | d|  d| }t          j        |          }|j        }||                    d	          d
z   |                    d          d
z            }t          j        t          |                    }g d|_        t          j	        |d         d          j
        j        |d<   |                    dgd           t          j	        |j                  |_        |||         }|                    d           t          j	        |d         d          j
        j        |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   |S )u  
    新浪财经-期货-主力连续日数据
    https://vip.stock.finance.sina.com.cn/quotes_service/view/qihuohangqing.html#titlePos_1
    :param symbol: 通过 ak.futures_display_main_sina() 函数获取 symbol
    :type symbol: str
    :param start_date: 开始时间
    :type start_date: str
    :param end_date: 结束时间
    :type end_date: str
    :return: 主力连续日数据
    :rtype: pandas.DataFrame
    20210817N   _   z@https://stock2.finance.sina.com.cn/futures/api/jsonp.php/var%20_z.=/InnerFuturesNewService.getDailyKLine?symbol=z&_=z([r   z]))   日期	   开盘价	   最高价	   最低价	   收盘价	   成交量	   持仓量   动态结算价rG   coerce)errorsT)keysr8   )r8   rH   rI   rJ   rK   rL   rM   rN   )r   r   r   r   rfindr   	read_jsonr   columnsto_datetimedtdate	set_indexindexr;   
to_numeric)	r	   r@   rA   
trade_dateurlr   r   r   r5   s	            r   futures_main_sinar]   g   sh   " JBQB#%
1Q37#=
122NJ gV  gU_  g  g  PV  g  g  [e  g  gCSAI)....2Y__T5J5JQ5NNOIl8I..//G	 	 	GO wx'8JJJMRGHH:t444N7=11GMj)*G%%%wx'8JJJMRGH=)=hOOOGK=)=hOOOGK=)=hOOOGK=)=hOOOGK=)=hOOOGK=)=hOOOGK!#w7H/IRZ![![![GNr!   __main__CF02024012420240301)r	   r@   rA   )r   )r   )r=   r>   r?   )__doc__ior   pandasr   r   akshare.futures.consr   r   r   akshare.utilsr   r+   r   r    r6   r<   r]   __name__futures_display_main_sina_dfprintfutures_main_sina_hist r!   r   <module>rl      s                       
 " ! ! ! ! !/ / / / / / /@             F2<      / /// / \	/ / / /d z#<#<#>#> 	E
&'''..j   
E
 !!!!! r!   