繁簡切換您正在訪問的是FX168財經網,本網站所提供的內容及信息均遵守中華人民共和國香港特別行政區當地法律法規。

FX168財經網>人物頻道>帖子

共享函數 | 常用數據獲取及計算系列

作者/fx16820000 2019-05-09 21:52 0 來源: FX168財經網人物頻道

對於常見但是獲取比較不太方便的數據我們將會寫成一系列共享函數方便大家直接複制使用。
本系列將持續更新,標題為 【共享函數】



包含的函數:


換手率
量比
股票股息率
所有商品指數,主力合約,品種代號等
期貨合約的基本信息(合約乘數、商品報價的計數單位、最小變動單位)

實時(分鍾級別)換手率¶

非實時的換手率數據可以直接通過 val uation 表拿到,傳送門:
https://www.joinquant.com/help/api/help?name=Stock#市值數據

def get_turnover_ratio(stocks,now_time):'''傳入股票池,時間,返回實時換手率'''if isinstance(stocks, str):stocks = [stocks]if isinstance(now_time, str):now_time =datetime.datetime.strptime(now_time,'%Y-%m-%d %H:%M:%S')data = get_price(stocks,fields='volume',end_date=now_time,start_date=now_time.date(),frequency ='1m' ).volume.sum()valuation_data = get_fundamentals(query(         #財務數據可以一天獲取一次,自行更改valuation.code,valuation.circulating_cap    ).filter(valuation.code.in_(stocks)),date=now_time).set_index('code')return data/valuation_data.iloc[:,0]/100get_turnover_ratio(['000001.XSHE','000002.XSHE'],datetime.datetime.now())
/opt/conda/lib/python3.6/site-packages/jqresearch/api.py:86: FutureWarning: 
Panel is deprecated and will be removed in a future version.
The recommended way to represent these types of 3-dimensional data are with a MultiIndex on a DataFrame, via the Panel.to_frame() method
Alternatively, you can use the xarray package http://xarray.pydata.org/en/stable/.
Pandas provides a `.to_xarray()` method to help automate this conversion.

  pre_factor_ref_date=_get_today())
000001.XSHE    0.844864
000002.XSHE    0.877389
dtype: float64
# 區間換手率from jqdata import *def shuttle_turnover_ratio(code_list,end_date,start_date=None,day=None):'''start_date和day 二選一 , 選取day參數時代表day個交易日的區間換手率'''if not day:day = len(get_trade_days(start_date,end_date))if isinstance(code_list,str):code_list=[code_list]q = query(valuation.turnover_ratio).filter(valuation.code.in_(code_list))data =  get_fundamentals_continuously(q,end_date=end_date,count=day).turnover_ratioreturn data.sum()shuttle_turnover_ratio(['000001.XSHE','000002.XSHE'],'2018-11-13',day=10)
code
000001.XSHE    7.0689
000002.XSHE    5.1873
dtype: float64

量比¶

import pandas as pddef get_v_ratio(security_list,time):'''計算某個時間點股票的量比,    輸入:股票池/股票,時間(datetime)    返回:截至當天某一時間點的量比'''if isinstance(security_list,str):security_list = [security_list]d = pd.Series()time2= time-datetime.timedelta(days=1)start_time = datetime.datetime(time.year,time.month,time.day,9,30)for security in security_list:ma5 = get_price(security,end_date=time2,frequency='5d',skip_paused=True,fields='volume',count=1,fq=None).volume/1200n_ma = get_price(security,end_date=time,start_date =start_time ,skip_paused=True,fields='volume',  frequency='1m').volume.mean()d[security]=float(n_ma/ma5)return dsecurity_list = ['600016.XSHG','601166.XSHG','000001.XSHE']time = datetime.datetime(2018,9,27,15,30)get_v_ratio(security_list,time)
600016.XSHG    0.810266
601166.XSHG    0.869788
000001.XSHE    0.740555
dtype: float64

股票股息率¶

股息率(DividendRatio)=公司派現合計/股票市值。其中,公司派現合計是指從年初到該報告期的派現合計累計(整個公司的派現合計)
指數股息率傳送門:  https://www.joinquant.com/post/16656

from jqdata import *def DividendRatio(security_list,end_date,count=1):'''查詢股息率(日更新)      輸入:股票池,截止日期,獲取數量    輸出:panel結構,單位:1'''trade_days = get_trade_days(end_date=end_date,count = count)security_list.sort()secu_list = [x[:6] for x in security_list]code_df = jy.run_query(query( jy.SecuMain.InnerCode,jy.SecuMain.SecuCode,#     jy.SecuMain.ChiName,jy.SecuMain.CompanyCode).filter(jy.SecuMain.SecuCode.in_(secu_list),jy.SecuMain.SecuCategory==1).order_by(jy.SecuMain.SecuCode))code_df['code'] = security_listdf = jy.run_query(query(#         jy.LC_DIndicesForValuation    #得到整表jy.LC_DIndicesForValuation.InnerCode,jy.LC_DIndicesForValuation.TradingDay, jy.LC_DIndicesForValuation.DividendRatio,).filter(jy.LC_DIndicesForValuation.InnerCode.in_(code_df.InnerCode),jy.LC_DIndicesForValuation.TradingDay.in_(trade_days)))f_df = df.merge(code_df,on='InnerCode').set_index(['TradingDay','code']).drop(['InnerCode','SecuCode'],axis=1)#     panel = f_df.to_panel()return f_df['DividendRatio'].unstack()securitys =['000001.XSHE','000002.XSHE']date='2019-02-22'DividendRatio(securitys,date,count=5)

.dataframe thead tr:only-child th {        text-align: right;    }    .dataframe thead th {        text-align: left;    }    .dataframe tbody tr th {        vertical-align: top;    }

code000001.XSHE000002.XSHE
TradingDay

2019-02-180.0119720.033088
2019-02-190.0120670.033296
2019-02-200.0119190.032573
2019-02-210.0119720.033395
2019-02-220.0117850.033370

獲取所有商品指數,主力合約,品種代號等¶

df = get_all_securities(types=['futures'])                        #獲取期貨合約,指定date可以過濾退市合約# dominant_and_idnex = df[df.end_date==datetime.date(2030,1,1)]   #商品指數和主力合約dominant_future = df[df.index.str.contains('9999')]               #所有品種的主力合約index_future = df[df.index.str.contains('8888')]                  #所有品種的指數代碼code_name = index_future.index.str.slice(start=0,stop=-9).tolist() #獲取各個品種代號,使用get_dominant_future時會用到

獲取期貨合約的基本信息(合約乘數、商品報價的計數單位、最小變動單位)¶

"""獲取期貨合約的基本信息(合約乘數、商品報價的計數單位、最小變動單位)本函數由丹陽同學提供數據來源:聚源數據Fut_ContractMain表,https://www.joinquant.com/help/data/data?name=jy#nodeId=23參考帖子:http://bbs.tb18.net/thread-80004-1-1.html輸入:合約代碼(例如:SC1901.XINE)返回:dict格式合約乘數、商品報價的計數單位、最小變動單位         {'ContractUnit': 1000, 'MinPoint': 0.1, 'PriceScale': 0.1}"""# lru緩存可以不要,加上後查詢相同的合約可以避免重複數據庫請求from fastcache import clru_cache as lru_cache@lru_cache(maxsize=128)def future_basic_info(future):from jqdata import jyfrom numpy import nanimport reif "9999" in future or "8888" in future:match = re.match(r"(?P<underlying_symbol>[A-Z]{1,})", future)if not match:raise ValueError("未知期貨標的:{}".format(future))else:future = get_dominant_future(match.groupdict()["underlying_symbol"])q = query(jy.Fut_ContractMain).filter(jy.Fut_ContractMain.ContractCode == future.split(".")[0])result = jy.run_query(query_object=q).to_dict("record")if result:result = result.pop()min_point = re.match("(?P<value>^[0-9]+([.]{1}[0-9]+){0,1})", result["LittlestChangeUnit"]).groupdict(nan)["value"]return {"ContractUnit": result["CMValue"],   "PriceScale": float(min_point)/float(result["CMValue"]),   "MinPoint": float(min_point)}else:return {"ContractUnit": nan,"PriceScale": nan,"MinPoint": nan}future_basic_info('CU9999.XSGE')
{'ContractUnit': 5, 'MinPoint': 10.0, 'PriceScale': 2.0}
 
分享到:
舉報財經168客戶端下載

全部回複

0/140

投稿 您想發表你的觀點和看法?

更多人氣分析師

  • 張亦巧

    人氣2208文章4145粉絲45

    暫無個人簡介信息

  • 張迎妤

    人氣1912文章3305粉絲34

    個人專注於行情技術分析,消息面解讀剖析,給予您第一時間方向...

  • 指導老師

    人氣1864文章4423粉絲52

    暫無個人簡介信息

  • 李冉晴

    人氣2320文章3821粉絲34

    李冉晴,專業現貸實盤分析師。

  • 梁孟梵

    人氣2184文章3177粉絲39

    qq:2294906466 了解群指導添加微信mfmacd

  • 王啟蒙現貨黃金

    人氣328文章3531粉絲8

    本人做分析師以來,並專注於貴金屬投資市場,尤其是在現貨黃金...

  • 金泰鉻J

    人氣2328文章3925粉絲51

    投資問答解咨詢金泰鉻V/信tgtg67即可獲取每日的實時資訊、行情...

  • 金算盤

    人氣2696文章7761粉絲125

    高級分析師,混過名校,廝殺於股市和期貨、證券市場多年,專注...

  • 金帝財神

    人氣4760文章8329粉絲119

    本文由資深分析師金帝財神微信:934295330,指導黃金,白銀,...

FX168財經

FX168財經學院

FX168財經

FX168北美