您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python如何配置同花順全數(shù)據(jù)接口,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
前往:http://quantapi.10jqka.com.cn/?page=home
如果是windows,根據(jù)不同用戶,可以選擇不同的下載。
下載完成后,會出現(xiàn)一個DataInterface_free_Windows_20210812.7z
的文件,解壓到任意文件夾中。打開該文件夾進入Bin文件夾后,再打開Tool文件夾,雙擊運行SuperCommand.exe
,并使用iFinD賬號免費登錄。
選擇python,確定。同時添加路徑。
選上。然后重啟電腦,相關(guān)環(huán)境變量設(shè)置生效。
現(xiàn)在就可以在python環(huán)境中調(diào)用iFinDPy了。
安裝iFinDPy后,即可。具體可以參考:http://quantapi.10jqka.com.cn/?page=sample。
# -*- coding: utf-8 -*- from iFinDPy import * from datetime import datetime import pandas as pd import time as _time import json from threading import Thread,Lock,Semaphore import requests sem = Semaphore(5) # 此變量用于控制最大并發(fā)數(shù) dllock = Lock() #此變量用來控制實時行情推送中落數(shù)據(jù)到本地的鎖 # 登錄函數(shù) def thslogindemo(): # 輸入用戶的帳號和密碼 thsLogin = THS_iFinDLogin("數(shù)據(jù)接口_賬號","數(shù)據(jù)接口_密碼") print(thsLogin) if thsLogin != 0: print('登錄失敗') else: print('登錄成功') def datepool_basicdata_demo(): # 通過數(shù)據(jù)池的板塊成分函數(shù)和基礎(chǔ)數(shù)據(jù)函數(shù),提取滬深300的全部股票在2020-11-16日的日不復(fù)權(quán)收盤價 data_hs300 = THS_DP('block', '2020-11-16;001005290', 'date:Y,thscode:Y,security_name:Y') if data_hs300.errorcode != 0: print('error:{}'.format(data_hs300.errmsg)) else: seccode_hs300_list = data_hs300.data['THSCODE'].tolist() data_result = THS_BD(seccode_hs300_list, 'ths_close_price_stock', '2020-11-16,100') if data_result.errorcode != 0: print('error:{}'.format(data_result.errmsg)) else: data_df = data_result.data print(data_df) def datapool_realtime_demo(): # 通過數(shù)據(jù)池的板塊成分函數(shù)和實時行情函數(shù),提取上證50的全部股票的最新價數(shù)據(jù),并將其導(dǎo)出為csv文件 today_str = datetime.today().strftime('%Y-%m-%d') print('today:{}'.format(today_str)) data_sz50 = THS_DP('block', '{};001005260'.format(today_str), 'date:Y,thscode:Y,security_name:Y') if data_sz50.errorcode != 0: print('error:{}'.format(data_sz50.errmsg)) else: seccode_sz50_list = data_sz50.data['THSCODE'].tolist() data_result = THS_RQ(seccode_sz50_list,'latest') if data_result.errorcode != 0: print('error:{}'.format(data_result.errmsg)) else: data_df = data_result.data print(data_df) data_df.to_csv('realtimedata_{}.csv'.format(today_str)) def iwencai_demo(): # 演示如何通過不消耗流量的自然語言語句調(diào)用常用數(shù)據(jù) print('輸出資金流向數(shù)據(jù)') data_wencai_zjlx = THS_WC('主力資金流向', 'stock') if data_wencai_zjlx.errorcode != 0: print('error:{}'.format(data_wencai_zjlx.errmsg)) else: print(data_wencai_zjlx.data) print('輸出股性評分數(shù)據(jù)') data_wencai_xny = THS_WC('股性評分', 'stock') if data_wencai_xny.errorcode != 0: print('error:{}'.format(data_wencai_xny.errmsg)) else: print(data_wencai_xny.data) def dlwork(tick_data): # 本函數(shù)為實時行情訂閱新啟線程的任務(wù)函數(shù) dllock.acquire() with open('dlwork.txt', 'a') as f: for stock_data in tick_data['tables']: if 'time' in stock_data: timestr = _time.strftime('%Y-%m-%d %H:%M:%S', _time.localtime(stock_data['time'][0])) print(timestr) f.write(timestr + str(stock_data) + '\n') else: pass dllock.release() def work(codestr,lock,indilist): sem.acquire() stockdata = THS_HF(codestr, ';'.join(indilist),'','2020-08-11 09:15:00', '2020-08-11 15:30:00','format:json') if stockdata.errorcode != 0: print('error:{}'.format(stockdata.errmsg)) sem.release() else: print(stockdata.data) lock.acquire() with open('test1.txt', 'a') as f: f.write(str(stockdata.data) + '\n') lock.release() sem.release() def multiThread_demo(): # 本函數(shù)為通過高頻序列函數(shù),演示如何使用多線程加速數(shù)據(jù)提取的示例,本例中通過將所有A股分100組,最大線程數(shù)量sem進行提取 # 用戶可以根據(jù)自身場景進行修改 today_str = datetime.today().strftime('%Y-%m-%d') print('today:{}'.format(today_str)) data_alla = THS_DP('block', '{};001005010'.format(today_str), 'date:Y,thscode:Y,security_name:Y') if data_alla.errorcode != 0: print('error:{}'.format(data_alla.errmsg)) else: stock_list = data_alla.data['THSCODE'].tolist() indi_list = ['close', 'high', 'low', 'volume'] lock = Lock() btime = datetime.now() l = [] for eachlist in [stock_list[i:i + int(len(stock_list) / 10)] for i in range(0, len(stock_list), int(len(stock_list) / 10))]: nowstr = ','.join(eachlist) p = Thread(target=work, args=(nowstr, lock, indi_list)) l.append(p) for p in l: p.start() for p in l: p.join() etime = datetime.now() print(etime-btime) pd.options.display.width = 320 pd.options.display.max_columns = None def reportDownload(): df = THS_ReportQuery('300033.SZ','beginrDate:2021-08-01;endrDate:2021-08-31;reportType:901','reportDate:Y,thscode:Y,secName:Y,ctime:Y,reportTitle:Y,pdfURL:Y,seq:Y').data print(df) for i in range(len(df)): pdfName = df.iloc[i,4]+str(df.iloc[i,6])+'.pdf' pdfURL = df.iloc[i,5] r = requests.get(pdfURL) with open(pdfName,'wb+') as f: f.write(r.content) def main(): # 本腳本為數(shù)據(jù)接口通用場景的實例,可以通過取消注釋下列示例函數(shù)來觀察效果 # 登錄函數(shù) thslogindemo() # 通過數(shù)據(jù)池的板塊成分函數(shù)和基礎(chǔ)數(shù)據(jù)函數(shù),提取滬深300的全部股票在2020-11-16日的日不復(fù)權(quán)收盤價 # datepool_basicdata_demo() #通過數(shù)據(jù)池的板塊成分函數(shù)和實時行情函數(shù),提取上證50的全部股票的最新價數(shù)據(jù),并將其導(dǎo)出為csv文件 # datapool_realtime_demo() # 演示如何通過不消耗流量的自然語言語句調(diào)用常用數(shù)據(jù) # iwencai_demo() # 本函數(shù)為通過高頻序列函數(shù),演示如何使用多線程加速數(shù)據(jù)提取的示例,本例中通過將所有A股分100組,最大線程數(shù)量sem進行提取 # multiThread_demo() # 本函數(shù)演示如何使用公告函數(shù)提取滿足條件的公告,并下載其pdf # reportDownload() if __name__ == '__main__': main()
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python如何配置同花順全數(shù)據(jù)接口”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。