获取所有股票历史行情数据
第一段 所有股票 周期:天 复权:不复权
# encoding:utf-8
import os
import sys
import pandas as qh_pd
import datetime
import time
import random
if __name__ == "__main__":print("本文件引用")qh_path = os.path.abspath(os.path.join(os.getcwd(), "..")) # 返回当前工作目录 先到达 QH_网络配置 的父文件夹路径sys.path.append(qh_path) # 添加自己指定的搜索路径
else:print("外文件引用")qh_path = os.path.abspath(os.path.join(os.getcwd(), "..")) # 返回当前工作目录 先到达 QH_网络配置 的父文件夹路径sys.path.append(qh_path) # 添加自己指定的搜索路径
#引入自己的文件模块
import QH001_Spider_Object.QH_DongFang_Object as Qh_Req_Obj # 东方财富
import QH001_Spider_Object.QH_SouHu_Home_Object as Qh_SHH_Obj # 搜狐交易日
import QH_Stock_Treasure_Box.qh_sqlite_orm_json as qh_db # 数据库
import QH_Stock_Treasure_Box.qh_Log as qh_log # 日志
import QH_Stock_Treasure_Box.qh_parameter_chuanru as qh_chcan # 传入参数
import QH_DF_Interface as qh_df_interface
import QH_IP_KDL as qh_ip_m #ipif __name__ == "__main__":qh_Log = qh_log.Qh_log_write(qh_path, "Qh_DF_His_D_Log")qh_Trading_day = Qh_SHH_Obj.QH_Get_Dangri_Date() # 同一个文件的函数 日期会自动传入qh_Log.qh_Log("获取交易日期-搜狐,交易日期:{}".format(qh_Trading_day))qh_all_stock_list_sql = qh_chcan.Qh_CX_Sql_DB(qh_path, qh_chaxun_id="QH_ChaXun_00005")qh_Log.qh_Log("获取所有股票代码,代码列表:{}".format(qh_all_stock_list_sql))qh_ip_list = qh_ip_m.Qh_Get_Ip(qh_path, qh_flag="B")qh_Log.qh_Log("获取所有HTTP代理IP,HTTP代理IP列表:{}".format(qh_ip_list))qh_wangzhan0 = "DF" # 网站代码qh_Log.qh_Log("网站代码:{}".format(qh_wangzhan0))qh_klt_dic = {"天": "D", "周": "W", "月": "M"}qh_Log.qh_Log("周期字典:{}".format(qh_klt_dic))qh_fqt_dic = {"不复权": "0", "前复权": "1", "后复权": "2"}qh_Log.qh_Log("是否复权字典:{}".format(qh_fqt_dic))qh_db_canshu = qh_chcan.Qh_InF_To_DB(qh_path, [], qh_spider_id="QH_Spider_00008", qh_canshu=True)qh_Log.qh_Log("获取所有数据库参数:{}".format(qh_db_canshu))qh_table_00 = qh_db_canshu['QH_Table'] # 需补充参数的组合表名qh_Log.qh_Log("需补充参数的组合表名:{}".format(qh_table_00))qh_sql0 = qh_chcan.Qh_CX_Sql_DB(qh_path, qh_chaxun_id="QH_ChaXun_00015", qh_sql0="", qh_ret_sql=True)qh_Log.qh_Log("获取需要补充参数的股票流记录SQL:{}".format(qh_sql0))#循环所有股票列表for qh_i, qh_row in enumerate(qh_all_stock_list_sql[1][1]):qh_code = qh_row[15] # 股票代码qh_zjs = qh_row[16] # 证交所qh_name = qh_row[17] # 股票名称# 组合股票代码if str(qh_zjs) == "0":qh_code = "SZ{}".format(qh_code)else:qh_code = "SH{}".format(qh_code)qh_Log.qh_Log("正在获取第{}支股票,股票代码:{},证交所:{},股票名称:{}".format(qh_i, qh_code, qh_zjs, qh_name))qh_klt = "天"qh_fqt = "不复权"qh_Log.qh_Log("周期:{},复权:{}".format(qh_klt, qh_fqt))qh_df_interface.Qh_Get_His_Flow(qh_code, qh_name, qh_Trading_day, qh_klt, qh_fqt,qh_wangzhan0, qh_klt_dic, qh_fqt_dic,qh_table_00, qh_sql0, qh_Log, qh_ip_list)
第二段 所有股票 所有周期:天/周/月 所有复权:不复权/前复权/后复权
# encoding:utf-8
import os
import sys
import pandas as qh_pd
import datetime
import time
import random
if __name__ == "__main__":print("本文件引用")qh_path = os.path.abspath(os.path.join(os.getcwd(), "..")) # 返回当前工作目录 先到达 QH_网络配置 的父文件夹路径sys.path.append(qh_path) # 添加自己指定的搜索路径
else:print("外文件引用")qh_path = os.path.abspath(os.path.join(os.getcwd(), "..")) # 返回当前工作目录 先到达 QH_网络配置 的父文件夹路径sys.path.append(qh_path) # 添加自己指定的搜索路径
#引入自己的文件模块
import QH001_Spider_Object.QH_DongFang_Object as Qh_Req_Obj # 东方财富
import QH001_Spider_Object.QH_SouHu_Home_Object as Qh_SHH_Obj # 搜狐交易日
import QH_Stock_Treasure_Box.qh_sqlite_orm_json as qh_db # 数据库
import QH_Stock_Treasure_Box.qh_Log as qh_log # 日志
import QH_Stock_Treasure_Box.qh_parameter_chuanru as qh_chcan # 传入参数
import QH_DF_Interface as qh_df_interface
import QH_IP_KDL as qh_ip_m #ipif __name__ == "__main__":qh_Log = qh_log.Qh_log_write(qh_path, "Qh_DF_His_DWM_Log")qh_Trading_day = Qh_SHH_Obj.QH_Get_Dangri_Date() # 同一个文件的函数 日期会自动传入qh_Log.qh_Log("获取交易日期-搜狐,交易日期:{}".format(qh_Trading_day))qh_all_stock_list_sql = qh_chcan.Qh_CX_Sql_DB(qh_path, qh_chaxun_id="QH_ChaXun_00005")qh_Log.qh_Log("获取所有股票代码,代码列表:{}".format(qh_all_stock_list_sql))qh_ip_list = qh_ip_m.Qh_Get_Ip(qh_path, qh_flag="B")qh_Log.qh_Log("获取所有HTTP代理IP,HTTP代理IP列表:{}".format(qh_ip_list))qh_wangzhan0 = "DF" # 网站代码qh_Log.qh_Log("网站代码:{}".format(qh_wangzhan0))qh_klt_dic = {"天": "D", "周": "W", "月": "M"}qh_Log.qh_Log("周期字典:{}".format(qh_klt_dic))qh_fqt_dic = {"不复权": "0", "前复权": "1", "后复权": "2"}qh_Log.qh_Log("是否复权字典:{}".format(qh_fqt_dic))qh_db_canshu = qh_chcan.Qh_InF_To_DB(qh_path, [], qh_spider_id="QH_Spider_00008", qh_canshu=True)qh_Log.qh_Log("获取所有数据库参数:{}".format(qh_db_canshu))qh_table_00 = qh_db_canshu['QH_Table'] # 需补充参数的组合表名qh_Log.qh_Log("需补充参数的组合表名:{}".format(qh_table_00))qh_sql0 = qh_chcan.Qh_CX_Sql_DB(qh_path, qh_chaxun_id="QH_ChaXun_00015", qh_sql0="", qh_ret_sql=True)qh_Log.qh_Log("获取需要补充参数的股票流记录SQL:{}".format(qh_sql0))# 循环所有股票列表for qh_i,qh_row in enumerate(qh_all_stock_list_sql[1][1]):qh_code = qh_row[15] # 股票代码qh_zjs = qh_row[16] # 证交所qh_name = qh_row[17] # 股票名称# 组合股票代码if str(qh_zjs) == "0":qh_code = "SZ{}".format(qh_code)else:qh_code = "SH{}".format(qh_code)qh_Log.qh_Log("正在获取第{}支股票,股票代码:{},证交所:{},股票名称:{}".format(qh_i,qh_code,qh_zjs,qh_name))for qh_key in qh_klt_dic:qh_klt = qh_key #周期for qh_key01 in qh_fqt_dic:qh_fqt = qh_key01 #复权qh_Log.qh_Log("周期:{},复权:{}".format(qh_klt, qh_fqt))qh_df_interface.Qh_Get_His_Flow(qh_code, qh_name, qh_Trading_day, qh_klt, qh_fqt,qh_wangzhan0, qh_klt_dic, qh_fqt_dic,qh_table_00, qh_sql0, qh_Log,qh_ip_list)
第三段:调用函数
def Qh_Get_His_Flow(qh_code,qh_name,qh_Trading_day, qh_klt, qh_fqt,qh_wangzhan0,qh_klt_dic,qh_fqt_dic,qh_table_00,qh_sql0,qh_Log,qh_ip_list=[]):"""获取所有历史交易数据函数 作者:阙辉:param qh_code: 股票代码 带证交所 SZ000001:param qh_name: 股票名称:param qh_Trading_day: 最近交易日期:param qh_klt: 周期:param qh_fqt: 复权:param qh_wangzhan0: 网站:param qh_klt_dic: 周期字典:param qh_fqt_dic: 复权字典:param qh_table_00: 需传参数的表名:param qh_sql0: 需传参数的SQL:param qh_ip_list: 代理IP:return:"""qh_flow_jilu = [] #初始化记录列表qh_wangzhan = qh_wangzhan0 + "_" + str(qh_klt_dic[qh_klt]) + "_" + str(qh_fqt_dic[qh_fqt]) #拼接网站id 关键代码,隔离了周期和复权qh_flow_jilu.append(qh_wangzhan) # qh_flow_jilu 0 网站qh_flow_jilu.append(qh_code) # qh_flow_jilu 1 股票代码qh_flow_jilu.append(qh_name) # qh_flow_jilu 2 股票名称qh_flow_jilu.append(qh_Trading_day) # qh_flow_jilu 3 交易日期# 爬取历史股票qh_type_gg = "QH_JY_HIS" # 获取历史数据类型 历史交易数据qh_flow_jilu.append(qh_type_gg) # #qh_flow_jilu 4 交易类型 历史交易qh_end_date = qh_Trading_day # 最近一个交易日期# 判断最近交易日期的历史数据是否爬取try:qh_sql = qh_sql0.format(qh_wangzhan, qh_code, qh_type_gg)qh_list_qq = qh_chcan.Qh_CX_Sql_DB(qh_path, qh_chaxun_id="QH_ChaXun_00015", qh_sql0=qh_sql, qh_ret_sql=False,qh_filed=False)qh_list_qq = qh_list_qq[1][1]if len(qh_list_qq) > 0:qh_list_qq = qh_list_qq[0] # 取第一行qh_pq_yy = qh_list_qq[8] # 爬取状态qh_zong_count = qh_list_qq[10] # 上一次总数量qh_stare_date = qh_list_qq[6] # 上一次爬取交易日期qh_Log.qh_Log("股票流有记录,记录为:爬取状态:{},上一次总数量:{},上一次爬取交易日期:{}".format(qh_pq_yy, qh_zong_count, qh_stare_date))else:qh_pq_yy = "N" # 爬取状态qh_zong_count = 0 # 总数量qh_stare_date = "1989-01-01" # 默认起始日期qh_Log.qh_Log("股票流无记录,默认记录为:爬取状态:{},上一次总数量:{},上一次爬取交易日期:{}".format(qh_pq_yy, qh_zong_count, qh_stare_date))except:qh_pq_yy = "N" # 爬取状态qh_zong_count = 0 # 总数量qh_stare_date = "1989-01-01" # 默认起始日期qh_Log.qh_Log("股票流表未创建,默认记录为:爬取状态:{},上一次总数量:{},上一次爬取交易日期:{}".format(qh_pq_yy, qh_zong_count, qh_stare_date))# 判断是否要请求数据if qh_pq_yy == "Y" and str(qh_end_date) == str(qh_stare_date):qh_Log.qh_Log("股票代码({})已爬取,最后交易日期{},阙辉!".format(qh_code, qh_end_date))else:# 随机从IP列表中获取一个代理IPif len(qh_ip_list) > 0:qh_ip_kk = random.choice(qh_ip_list)qh_htt = qh_ip_kk[1]qh_htt = "https"qh_ip = qh_ip_kk[0]qh_htt_ip = "{}\\:{}".format(qh_htt, qh_ip)qh_proxy = {qh_htt: qh_htt_ip}qh_Log.qh_Log("随机获取代理IP({}),阙辉!".format(qh_proxy))else:qh_proxy = {}qh_Log.qh_Log("不使用代理IP,阙辉!")# 请求数据qh_Log.qh_Log("开始请求({}),阙辉!".format(qh_code))qh_his_jiaoyi_list = Qh_DF_His_Flow_Interface01(qh_Trading_day, qh_code,qh_stare_date=qh_stare_date,qh_end_date=qh_end_date, qh_klt=qh_klt,qh_fqt=qh_fqt,qh_spider_id="QH_Spider_00008",qh_out="qh_list", qh_day_t=False,qh_proxy=qh_proxy)qh_his_jiaoyi_list_len = len(qh_his_jiaoyi_list) # 统计本次的数据量qh_new_table = qh_table_00.format(qh_code) # 生成表格名qh_Log.qh_Log("组合存储表格名({}),阙辉!".format(qh_new_table))# 存储数据 返回存储状态if qh_his_jiaoyi_list_len > 0:qh_Log.qh_Log("请求({})数据成功,本次共{}条,阙辉!".format(qh_code,qh_his_jiaoyi_list_len))qh_cc_star = qh_chcan.Qh_InF_To_DB(qh_path, qh_his_jiaoyi_list, qh_spider_id="QH_Spider_00008_D",qh_canshu=False, qh_new_table=qh_new_table)else:qh_cc_star = False#判断数据是否更新成功,更新成功则if qh_cc_star:qh_Log.qh_Log("存储({})数据成功,本次共{}条,阙辉!".format(qh_code, qh_his_jiaoyi_list_len))qh_flow_jilu.append("Y") # #qh_flow_jilu 5 是否成功 爬取状态qh_flow_jilu.append(qh_his_jiaoyi_list_len) # #qh_flow_jilu 6 本次数量qh_flow_jilu.append(qh_his_jiaoyi_list_len + int(qh_zong_count)) # #qh_flow_jilu 7 总数量qh_flow_jilu = qh_chcan.Qh_TC_List(qh_flow_jilu, 18) # 补充不满18的字段为空 #qh_flow_jilu 8以后为空的字段if qh_chcan.Qh_InF_To_DB(qh_path, [qh_flow_jilu], qh_spider_id="QH_Spider_99999"): # 更新数据存储状态qh_Log.qh_Log("更新股票记录流成功,股票记录流为:{},阙辉!".format(qh_flow_jilu))
获取所有股票历史行情数据相关推荐
- 股票历史数据-股票历史行情数据查询
股票历史数据-股票历史行情数据查询 共享一个股票历史行情数据查询的工具,股票历史行情数据查询的是从股票成立到最近一天的所有历史数据,亲测手机就能查询股票历史行情数据.下载股票历史行情数据 亲测获取步骤 ...
- 股票历史行情数据api_历史API
股票历史行情数据api Introduction 介绍 Access the History API 访问历史记录API Navigate the history 浏览历史 Add an entry ...
- 多线程爬虫获取A股历史行情数据!股票量化分析工具QTYX-V2.2.3
前言 股票数据的获取是从事股票分析的第一步. 数据获取的途径有很多,对大家来说除了数据的质量以外,获取的效率是第二敏感的点. 市面上有一些股票数据服务平台提供了Python接口来获取数据. 总的来说, ...
- 利用聚宽获取股票历史行情数据
1.背景 做量化交易的时候经常要用到股票的历史数据,例子中主要爬取每分钟'date','time''open','close','high','low','volume','money','avg'这 ...
- Python量化:获取历史行情数据并计算KDJ指标
KDJ指标又叫随机指标,是一种相当新颖.实用的技术分析指标,它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具. 随机指标KDJ一般是用于股票分析的统计 ...
- A股全市场股票历史行情低频日频EOD数据
A股市场全部历史日频数据每日盘后更新 数据源 本文中的日频数据源来自恒生,包括前后复权和无复权行情,数据分股票代码压缩,每日盘后更新上传网盘 共享网盘链接与详情 全A股票前复权历史行情数据: 链接:h ...
- A股全市场股票历史行情1分钟高频数据
A股全市场股票历史行情1分钟高频数据 百度共享网盘 链接: https://pan.baidu.com/s/1Ki9lBRNrv1_5ufgmNdrlVQ 提取码: fxb4 20210年 -2021 ...
- tushare获取沪深300指数历史_从Tushare获取历史行情数据
从Tushare获取历史行情数据,分为两种,一种是后复权(daily_hfq)数据,一种是不复权(daily)数据,获取到的数据存储在MongoDB数据库中,每个集合(collection)中,数据字 ...
- 股票实时行情数据大全
股票软件都提供自定义公式的功能,但因为常规股票软件都是点播数据,自定义公式对分时行情完全无效,要想更细腻的分析,只能找股票实时行情接口 一般来说,有如下3种版本 屌丝版 去门户财经频道采集数据,百度, ...
最新文章
- 使用 Flash Builder 的 Apple iOS 开发过程
- 山东大学微生物国家重点实验室刘双江组招聘(肠道微生物方向)
- 大数据会消灭律师这一职业吗?
- Py中enumerate方法【转载】
- VxWorks中信号量实现任务间通信与同步机制分析
- php gbk字符串 存utf8 html,php utf8 gbk 数组 互转(示例代码)
- 深入理解 RecyclerView 系列之:ItemDecoration
- 《Advanced .NET Debugging》 读书笔记 Listing 5-6: Pining的简单示例
- ruby web性能响应时间
- Lingo建模基础入门
- 基于javaweb的员工绩效考核系统
- 淘宝css代码生成器_Web开发人员的10个最佳CSS代码生成器
- UTM 投影坐标系条带号Zone与EPSG代号计算(Python 实现)
- java集合面试题总结
- 关于Postman导入json文件报:failed to import data format not recognized异常的处理
- 报错——xxx is not defined
- swoole php配置文件,EasySwoole分离配置文件
- Visual Studio Code 代理设置
- aix7.1重装6.1_优化AIX 6.1性能调整
- 99%的人误解BLM中的“战略”与“执行”的关系及错误认为BLM/BEM就是战略解码的全部!
热门文章
- 四种做动态数据可视化的方法
- 概率 插空法和捆绑法
- java拆分_Java 拆分 PDF 文档
- HashMap初始化长度设置大小
- crc生成多项式java_CRC 生成多项式
- win10电池图标不能调亮度_win10屏幕亮度无法调节?一招解决Win10电脑亮度调节失灵...
- android拍照保存到系统相册,调用系统相机拍照,并且保存到系统相册的一般套路...
- OpenCV——Python:像素调整、图片裁剪、形状与文字设置3
- 两个天才黑客:一人在牢狱之灾后退隐江湖,一人蜕变成阿里巴巴“守护神”!...
- 魔兽mdx文件导出为Ogre Mesh的小进展