Python配置同花顺全数据接口教程详解
程序员文章站
2022-03-01 17:55:14
目录一、ifindpy 模块二、相关代码总结前往:http://quantapi.10jqka.com.cn/?page=home如果是windows,根据不同用户,可以选择不同的下载。一、ifind...
前往:http://quantapi.10jqka.com.cn/?page=home
如果是windows,根据不同用户,可以选择不同的下载。
一、ifindpy 模块
下载完成后,会出现一个datainterface_free_windows_20210812.7z
的文件,解压到任意文件夹中。打开该文件夹进入bin文件夹后,再打开tool文件夹,双击运行supercommand.exe
,并使用ifind账号免费登录。
选择python,确定。同时添加路径。
选上。然后重启电脑,相关环境变量设置生效。
现在就可以在python环境中调用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) # 此变量用于控制最大并发数 dllock = lock() #此变量用来控制实时行情推送中落数据到本地的锁 # 登录函数 def thslogindemo(): # 输入用户的帐号和密码 thslogin = ths_ifindlogin("数据接口_账号","数据接口_密码") print(thslogin) if thslogin != 0: print('登录失败') else: print('登录成功') def datepool_basicdata_demo(): # 通过数据池的板块成分函数和基础数据函数,提取沪深300的全部股票在2020-11-16日的日不复权收盘价 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(): # 通过数据池的板块成分函数和实时行情函数,提取上证50的全部股票的最新价数据,并将其导出为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(): # 演示如何通过不消耗流量的自然语言语句调用常用数据 print('输出资金流向数据') 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('输出股性评分数据') 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): # 本函数为实时行情订阅新启线程的任务函数 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(): # 本函数为通过高频序列函数,演示如何使用多线程加速数据提取的示例,本例中通过将所有a股分100组,最大线程数量sem进行提取 # 用户可以根据自身场景进行修改 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(): # 本脚本为数据接口通用场景的实例,可以通过取消注释下列示例函数来观察效果 # 登录函数 thslogindemo() # 通过数据池的板块成分函数和基础数据函数,提取沪深300的全部股票在2020-11-16日的日不复权收盘价 # datepool_basicdata_demo() #通过数据池的板块成分函数和实时行情函数,提取上证50的全部股票的最新价数据,并将其导出为csv文件 # datapool_realtime_demo() # 演示如何通过不消耗流量的自然语言语句调用常用数据 # iwencai_demo() # 本函数为通过高频序列函数,演示如何使用多线程加速数据提取的示例,本例中通过将所有a股分100组,最大线程数量sem进行提取 # multithread_demo() # 本函数演示如何使用公告函数提取满足条件的公告,并下载其pdf # reportdownload() if __name__ == '__main__': main()
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!