commit;
This commit is contained in:
		
							parent
							
								
									8203b5dd74
								
							
						
					
					
						commit
						f6682be833
					
				|  | @ -14,4 +14,5 @@ reports/ | ||||||
| .idea | .idea | ||||||
| .vscode | .vscode | ||||||
| *.swp | *.swp | ||||||
| *.swo  | *.swo | ||||||
|  | *.log | ||||||
							
								
								
									
										440
									
								
								data.sql
								
								
								
								
							
							
						
						
									
										440
									
								
								data.sql
								
								
								
								
							|  | @ -11,130 +11,12 @@ | ||||||
|  Target Server Version : 90200 (9.2.0) |  Target Server Version : 90200 (9.2.0) | ||||||
|  File Encoding         : 65001 |  File Encoding         : 65001 | ||||||
| 
 | 
 | ||||||
|  Date: 26/06/2025 11:41:15 |  Date: 28/09/2025 14:05:57 | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| SET NAMES utf8mb4; | SET NAMES utf8mb4; | ||||||
| SET FOREIGN_KEY_CHECKS = 0; | SET FOREIGN_KEY_CHECKS = 0; | ||||||
| 
 | 
 | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for eastmoney_rzrq_data |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `eastmoney_rzrq_data`; |  | ||||||
| CREATE TABLE `eastmoney_rzrq_data`  ( |  | ||||||
|   `trade_date` date NOT NULL, |  | ||||||
|   `index_value` decimal(10, 4) NULL DEFAULT NULL COMMENT '指数', |  | ||||||
|   `change_percent` decimal(10, 4) NULL DEFAULT NULL COMMENT '涨跌幅', |  | ||||||
|   `float_market_value` decimal(20, 2) NULL DEFAULT NULL COMMENT '流通市值', |  | ||||||
|   `change_percent_3d` decimal(10, 4) NULL DEFAULT NULL COMMENT '3日涨跌幅', |  | ||||||
|   `change_percent_5d` decimal(10, 4) NULL DEFAULT NULL COMMENT '5日涨跌幅', |  | ||||||
|   `change_percent_10d` decimal(10, 4) NULL DEFAULT NULL COMMENT '10日涨跌幅', |  | ||||||
|   `financing_balance` decimal(20, 2) NULL DEFAULT NULL COMMENT '融资余额', |  | ||||||
|   `financing_balance_ratio` decimal(10, 4) NULL DEFAULT NULL COMMENT '融资余额占比', |  | ||||||
|   `financing_buy_amount` decimal(20, 2) NULL DEFAULT NULL COMMENT '融资买入额', |  | ||||||
|   `financing_buy_amount_3d` decimal(20, 2) NULL DEFAULT NULL COMMENT '3日融资买入额', |  | ||||||
|   `financing_buy_amount_5d` decimal(20, 2) NULL DEFAULT NULL COMMENT '5日融资买入额', |  | ||||||
|   `financing_buy_amount_10d` decimal(20, 2) NULL DEFAULT NULL COMMENT '10日融资买入额', |  | ||||||
|   `financing_repay_amount` decimal(20, 2) NULL DEFAULT NULL COMMENT '融资偿还额', |  | ||||||
|   `financing_repay_amount_3d` decimal(20, 2) NULL DEFAULT NULL COMMENT '3日融资偿还额', |  | ||||||
|   `financing_repay_amount_5d` decimal(20, 2) NULL DEFAULT NULL COMMENT '5日融资偿还额', |  | ||||||
|   `financing_repay_amount_10d` decimal(20, 2) NULL DEFAULT NULL COMMENT '10日融资偿还额', |  | ||||||
|   `financing_net_amount` decimal(20, 2) NULL DEFAULT NULL COMMENT '融资净额', |  | ||||||
|   `financing_net_amount_3d` decimal(20, 2) NULL DEFAULT NULL COMMENT '3日融资净额', |  | ||||||
|   `financing_net_amount_5d` decimal(20, 2) NULL DEFAULT NULL COMMENT '5日融资净额', |  | ||||||
|   `financing_net_amount_10d` decimal(20, 2) NULL DEFAULT NULL COMMENT '10日融资净额', |  | ||||||
|   `securities_balance` decimal(20, 2) NULL DEFAULT NULL COMMENT '融券余额', |  | ||||||
|   `securities_volume` decimal(20, 2) NULL DEFAULT NULL COMMENT '融券余量', |  | ||||||
|   `securities_repay_volume` decimal(20, 2) NULL DEFAULT NULL COMMENT '融券偿还量', |  | ||||||
|   `securities_repay_volume_3d` decimal(20, 2) NULL DEFAULT NULL COMMENT '3日融券偿还量', |  | ||||||
|   `securities_repay_volume_5d` decimal(20, 2) NULL DEFAULT NULL COMMENT '5日融券偿还量', |  | ||||||
|   `securities_repay_volume_10d` decimal(20, 2) NULL DEFAULT NULL COMMENT '10日融券偿还量', |  | ||||||
|   `securities_sell_volume` decimal(20, 2) NULL DEFAULT NULL COMMENT '融券卖出量', |  | ||||||
|   `securities_sell_volume_3d` decimal(20, 2) NULL DEFAULT NULL COMMENT '3日融券卖出量', |  | ||||||
|   `securities_sell_volume_5d` decimal(20, 2) NULL DEFAULT NULL COMMENT '5日融券卖出量', |  | ||||||
|   `securities_sell_volume_10d` decimal(20, 2) NULL DEFAULT NULL COMMENT '10日融券卖出量', |  | ||||||
|   `securities_net_volume` decimal(20, 2) NULL DEFAULT NULL COMMENT '融券净量', |  | ||||||
|   `securities_net_volume_3d` decimal(20, 2) NULL DEFAULT NULL COMMENT '3日融券净量', |  | ||||||
|   `securities_net_volume_5d` decimal(20, 2) NULL DEFAULT NULL COMMENT '5日融券净量', |  | ||||||
|   `securities_net_volume_10d` decimal(20, 2) NULL DEFAULT NULL COMMENT '10日融券净量', |  | ||||||
|   `total_rzrq_balance` decimal(20, 2) NULL DEFAULT NULL COMMENT '融资融券余额', |  | ||||||
|   `total_rzrq_balance_cz` decimal(20, 2) NULL DEFAULT NULL COMMENT '融资融券余额差值', |  | ||||||
|   `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, |  | ||||||
|   `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |  | ||||||
|   PRIMARY KEY (`trade_date`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '东方财富融资融券数据表' ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for fear_greed_index |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `fear_greed_index`; |  | ||||||
| CREATE TABLE `fear_greed_index`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT, |  | ||||||
|   `index_value` decimal(5, 2) NOT NULL COMMENT '恐贪指数值(0-100)', |  | ||||||
|   `trading_date` date NOT NULL COMMENT '交易日期', |  | ||||||
|   `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE, |  | ||||||
|   UNIQUE INDEX `uk_trading_date`(`trading_date` ASC) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 1003 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '市场恐贪指数数据' ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for follow_stock |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `follow_stock`; |  | ||||||
| CREATE TABLE `follow_stock`  ( |  | ||||||
|   `id` bigint NOT NULL AUTO_INCREMENT, |  | ||||||
|   `stock_code` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '股票代码', |  | ||||||
|   `stock_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '股票名称', |  | ||||||
|   `add_time` datetime NULL DEFAULT NULL COMMENT '添加时间', |  | ||||||
|   `status` tinyint NULL DEFAULT 1 COMMENT '状态', |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE, |  | ||||||
|   UNIQUE INDEX `uk_stock_code`(`stock_code` ASC) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 22 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '关注的股票' ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for fund_cang |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `fund_cang`; |  | ||||||
| CREATE TABLE `fund_cang`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT, |  | ||||||
|   `fund_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `fund_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `company_money` decimal(20, 2) NULL DEFAULT NULL, |  | ||||||
|   `company_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `company_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `fund_data` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 1874595 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for fundamental_analysis |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `fundamental_analysis`; |  | ||||||
| CREATE TABLE `fundamental_analysis`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT, |  | ||||||
|   `stock_code` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '股票代码', |  | ||||||
|   `stock_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '股票名称', |  | ||||||
|   `dimension` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '分析维度', |  | ||||||
|   `ai_response` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'AI分析结果', |  | ||||||
|   `reasoning_process` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '推理过程', |  | ||||||
|   `references` json NULL COMMENT '参考资料', |  | ||||||
|   `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |  | ||||||
|   `extra_info` json NULL COMMENT '扩展信息', |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE, |  | ||||||
|   INDEX `idx_stock_dimension`(`stock_code` ASC, `dimension` ASC) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 12104 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '基本面分析结果表' ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_category_industry |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_category_industry`; |  | ||||||
| CREATE TABLE `gp_category_industry`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT COMMENT 'id', |  | ||||||
|   `category_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '分类名称', |  | ||||||
|   `belong_industry` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '所属行业', |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 52 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- | -- ---------------------------- | ||||||
| -- Table structure for gp_code_all | -- Table structure for gp_code_all | ||||||
| -- ---------------------------- | -- ---------------------------- | ||||||
|  | @ -151,58 +33,6 @@ CREATE TABLE `gp_code_all`  ( | ||||||
|   PRIMARY KEY (`id`) USING BTREE |   PRIMARY KEY (`id`) USING BTREE | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 6686 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '所有个股代码-爬取指数用' ROW_FORMAT = Dynamic; | ) ENGINE = InnoDB AUTO_INCREMENT = 6686 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '所有个股代码-爬取指数用' ROW_FORMAT = Dynamic; | ||||||
| 
 | 
 | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_code_hk |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_code_hk`; |  | ||||||
| CREATE TABLE `gp_code_hk`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT, |  | ||||||
|   `gp_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `gp_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `gp_code_two` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `gp_code_three` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `market_cap` decimal(20, 2) NULL DEFAULT NULL, |  | ||||||
|   `mark1` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `mark2` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 2956 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '所有指数代码-爬取数据使用' ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_code_zs |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_code_zs`; |  | ||||||
| CREATE TABLE `gp_code_zs`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT, |  | ||||||
|   `gp_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `gp_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `gp_code_two` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `gp_code_three` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `market_cap` decimal(20, 2) NULL DEFAULT NULL, |  | ||||||
|   `mark1` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `mark2` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 6686 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '所有指数代码-爬取数据使用' ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_data |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_data`; |  | ||||||
| CREATE TABLE `gp_data`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT, |  | ||||||
|   `pg_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `xiangsidu` decimal(10, 2) NULL DEFAULT NULL COMMENT '控制相似度为多少的时候进行回测 和下面的数字是关联的', |  | ||||||
|   `ii` int NULL DEFAULT NULL COMMENT '相似度的条数', |  | ||||||
|   `raye_ga_hc` decimal(10, 2) NULL DEFAULT NULL COMMENT '回测涨跌幅大于多少的数据', |  | ||||||
|   `huice_function_num` int NULL DEFAULT NULL COMMENT '回测判断胜率方法 0是代表相差1%或者同涨同跌都算胜 1是代表相差1%算胜  2是代表同涨同跌算胜', |  | ||||||
|   `yes_yuce` int NULL DEFAULT NULL, |  | ||||||
|   `no_yuce` int NULL DEFAULT NULL, |  | ||||||
|   `yes_yuce_twoday` int NULL DEFAULT NULL, |  | ||||||
|   `no_yuce_twoday` int NULL DEFAULT NULL, |  | ||||||
|   `yes_yuce_fiveday` int NULL DEFAULT NULL, |  | ||||||
|   `no_yuce_fiveday` int NULL DEFAULT NULL, |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 42690 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- | -- ---------------------------- | ||||||
| -- Table structure for gp_day_data | -- Table structure for gp_day_data | ||||||
| -- ---------------------------- | -- ---------------------------- | ||||||
|  | @ -224,26 +54,12 @@ CREATE TABLE `gp_day_data`  ( | ||||||
|   `pe` decimal(10, 2) NULL DEFAULT NULL COMMENT '当前PE', |   `pe` decimal(10, 2) NULL DEFAULT NULL COMMENT '当前PE', | ||||||
|   `ps` decimal(10, 2) NULL DEFAULT NULL COMMENT '当前PS', |   `ps` decimal(10, 2) NULL DEFAULT NULL COMMENT '当前PS', | ||||||
|   `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |   `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, | ||||||
|  |   `pre_close` decimal(10, 2) NULL DEFAULT NULL, | ||||||
|   PRIMARY KEY (`id`) USING BTREE, |   PRIMARY KEY (`id`) USING BTREE, | ||||||
|   INDEX `idx_symbol`(`symbol` ASC) USING BTREE, |   INDEX `idx_symbol`(`symbol` ASC) USING BTREE, | ||||||
|   INDEX `idx_timestamp`(`timestamp` ASC) USING BTREE, |   INDEX `idx_timestamp`(`timestamp` ASC) USING BTREE, | ||||||
|   INDEX `idx_symbol_time`(`symbol` ASC, `timestamp` ASC) USING BTREE |   INDEX `idx_symbol_time`(`symbol` ASC, `timestamp` ASC) USING BTREE | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 28356293 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic; | ) ENGINE = InnoDB AUTO_INCREMENT = 36167913 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic; | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_ex_rights_log |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_ex_rights_log`; |  | ||||||
| CREATE TABLE `gp_ex_rights_log`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT, |  | ||||||
|   `stock_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '股票代码', |  | ||||||
|   `change_date` date NULL DEFAULT NULL COMMENT '除权变动日期', |  | ||||||
|   `before_price` decimal(10, 3) NULL DEFAULT NULL COMMENT '变动前收盘价(数据库中的价格)', |  | ||||||
|   `after_price` decimal(10, 3) NULL DEFAULT NULL COMMENT '变动后收盘价(API获取的价格)', |  | ||||||
|   `update_time` datetime NULL DEFAULT NULL COMMENT '脚本执行的更新时间', |  | ||||||
|   `optimization_flag` int NULL DEFAULT NULL COMMENT '波段优化标志,1为已经完成优化', |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 285 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '股票除权日志表' ROW_FORMAT = DYNAMIC; |  | ||||||
| 
 | 
 | ||||||
| -- ---------------------------- | -- ---------------------------- | ||||||
| -- Table structure for gp_gnbk | -- Table structure for gp_gnbk | ||||||
|  | @ -255,263 +71,21 @@ CREATE TABLE `gp_gnbk`  ( | ||||||
|   `bk_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |   `bk_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, | ||||||
|   `gp_code` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |   `gp_code` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, | ||||||
|   `gp_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL |   `gp_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL | ||||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '概念板块' ROW_FORMAT = Dynamic; | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_gnbk_all |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_gnbk_all`; |  | ||||||
| CREATE TABLE `gp_gnbk_all`  ( |  | ||||||
|   `id` bigint NULL DEFAULT NULL, |  | ||||||
|   `bk_code` bigint NULL DEFAULT NULL, |  | ||||||
|   `bk_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `gp_code` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `gp_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL |  | ||||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_gnbk_gn |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_gnbk_gn`; |  | ||||||
| CREATE TABLE `gp_gnbk_gn`  ( |  | ||||||
|   `id` bigint NULL DEFAULT NULL, |  | ||||||
|   `bk_code` bigint NULL DEFAULT NULL, |  | ||||||
|   `bk_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `gp_code` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `gp_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL |  | ||||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; |  | ||||||
| 
 | 
 | ||||||
| -- ---------------------------- | -- ---------------------------- | ||||||
| -- Table structure for gp_hybk | -- Table structure for gp_hybk | ||||||
| -- ---------------------------- | -- ---------------------------- | ||||||
| DROP TABLE IF EXISTS `gp_hybk`; | DROP TABLE IF EXISTS `gp_hybk`; | ||||||
| CREATE TABLE `gp_hybk`  ( | CREATE TABLE `gp_hybk`  ( | ||||||
|   `id` bigint NULL DEFAULT NULL, |   `id` bigint NOT NULL AUTO_INCREMENT, | ||||||
|   `bk_code` bigint NULL DEFAULT NULL, |   `bk_code` bigint NULL DEFAULT NULL, | ||||||
|   `bk_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |   `bk_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, | ||||||
|   `gp_code` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |   `gp_code` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, | ||||||
|   `gp_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |   `gp_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, | ||||||
|   `Unnamed: 5` double NULL DEFAULT NULL, |   `Unnamed: 5` double NULL DEFAULT NULL, | ||||||
|   `Unnamed: 6` double NULL DEFAULT NULL |   `Unnamed: 6` double NULL DEFAULT NULL, | ||||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_main_business |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_main_business`; |  | ||||||
| CREATE TABLE `gp_main_business`  ( |  | ||||||
|   `stock_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '股票代码', |  | ||||||
|   `stock_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '股票简称', |  | ||||||
|   `report_date` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '报告期(YYYYMMDD)', |  | ||||||
|   `product_rank` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '项目排名(1-5)', |  | ||||||
|   `product_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '项目名称', |  | ||||||
|   `revenue` decimal(20, 2) NULL DEFAULT NULL COMMENT '项目收入', |  | ||||||
|   `cost` decimal(20, 2) NULL DEFAULT NULL COMMENT '项目成本', |  | ||||||
|   `profit` decimal(20, 2) NULL DEFAULT NULL COMMENT '项目毛利', |  | ||||||
|   `profit_margin` decimal(10, 4) NULL DEFAULT NULL COMMENT '项目毛利率', |  | ||||||
|   PRIMARY KEY (`stock_code`, `report_date`, `product_rank`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_min_data |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_min_data`; |  | ||||||
| CREATE TABLE `gp_min_data`  ( |  | ||||||
|   `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', |  | ||||||
|   `symbol` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '个股代码', |  | ||||||
|   `timestamp` timestamp NULL DEFAULT NULL COMMENT '时间戳', |  | ||||||
|   `volume` bigint NULL DEFAULT NULL COMMENT '数量', |  | ||||||
|   `open` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '开始价', |  | ||||||
|   `high` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '最高价', |  | ||||||
|   `low` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '最低价', |  | ||||||
|   `close` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '结束价', |  | ||||||
|   `chg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '变化数值', |  | ||||||
|   `percent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '变化百分比', |  | ||||||
|   `turnoverrate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, |  | ||||||
|   `amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '成交金额', |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE |   PRIMARY KEY (`id`) USING BTREE | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 61116588 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic; | ) ENGINE = InnoDB AUTO_INCREMENT = 8331 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '行业板块' ROW_FORMAT = Dynamic; | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_product_category |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_product_category`; |  | ||||||
| CREATE TABLE `gp_product_category`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT, |  | ||||||
|   `category_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, |  | ||||||
|   `product_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, |  | ||||||
|   `stock_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, |  | ||||||
|   `stock_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, |  | ||||||
|   `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE, |  | ||||||
|   INDEX `idx_stock_code`(`stock_code` ASC) USING BTREE, |  | ||||||
|   INDEX `idx_product_name`(`product_name` ASC) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 35869 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_zygc |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_zygc`; |  | ||||||
| CREATE TABLE `gp_zygc`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT, |  | ||||||
|   `gp_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '股票名称', |  | ||||||
|   `gp_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '股票代码', |  | ||||||
|   `zygc_xmmc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '主营构成(按行业)-项目名称', |  | ||||||
|   `zygc_xmsr` decimal(20, 0) NULL DEFAULT NULL COMMENT '主营构成(按行业)-项目收入', |  | ||||||
|   `zygc_xmmlr` decimal(10, 2) NULL DEFAULT NULL COMMENT '主营构成(按行业)-项目毛利率', |  | ||||||
|   `belong_time` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '所属财报期', |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 12774 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '个股的主营构成' ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for gp_zyyw |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `gp_zyyw`; |  | ||||||
| CREATE TABLE `gp_zyyw`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT, |  | ||||||
|   `gp_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '股票名称', |  | ||||||
|   `gp_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '股票代码', |  | ||||||
|   `zyyw_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '主营业务名称', |  | ||||||
|   `zyyw_zb` decimal(10, 2) NULL DEFAULT NULL COMMENT '主营业务占比', |  | ||||||
|   `belong_time` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '所属财报期', |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 25280 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '上市公司主营业务占比' ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for hk_hot_stocks |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `hk_hot_stocks`; |  | ||||||
| CREATE TABLE `hk_hot_stocks`  ( |  | ||||||
|   `id` int NOT NULL AUTO_INCREMENT, |  | ||||||
|   `symbol` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, |  | ||||||
|   `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, |  | ||||||
|   `value` int NULL DEFAULT NULL, |  | ||||||
|   `increment` int NULL DEFAULT NULL, |  | ||||||
|   `rank_change` int NULL DEFAULT NULL, |  | ||||||
|   `percent` float NULL DEFAULT NULL, |  | ||||||
|   `current` float NULL DEFAULT NULL, |  | ||||||
|   `chg` float NULL DEFAULT NULL, |  | ||||||
|   `exchange` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, |  | ||||||
|   `stock_type` int NULL DEFAULT NULL, |  | ||||||
|   `add_time` datetime NULL DEFAULT NULL, |  | ||||||
|   `status` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, |  | ||||||
|   PRIMARY KEY (`id`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB AUTO_INCREMENT = 53981 CHARACTER SET = sjis COLLATE = sjis_japanese_ci ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for limitup_analysis_stock_changes |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `limitup_analysis_stock_changes`; |  | ||||||
| CREATE TABLE `limitup_analysis_stock_changes`  ( |  | ||||||
|   `symbol` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `net_profit_cagr` double NULL DEFAULT NULL, |  | ||||||
|   `north_net_inflow` double NULL DEFAULT NULL, |  | ||||||
|   `ps` double NULL DEFAULT NULL, |  | ||||||
|   `type` bigint NULL DEFAULT NULL, |  | ||||||
|   `percent` double NULL DEFAULT NULL, |  | ||||||
|   `has_follow` tinyint(1) NULL DEFAULT NULL, |  | ||||||
|   `tick_size` double NULL DEFAULT NULL, |  | ||||||
|   `pb_ttm` double NULL DEFAULT NULL, |  | ||||||
|   `float_shares` bigint NULL DEFAULT NULL, |  | ||||||
|   `current` double NULL DEFAULT NULL, |  | ||||||
|   `amplitude` double NULL DEFAULT NULL, |  | ||||||
|   `pcf` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `current_year_percent` double NULL DEFAULT NULL, |  | ||||||
|   `float_market_capital` double NULL DEFAULT NULL, |  | ||||||
|   `north_net_inflow_time` double NULL DEFAULT NULL, |  | ||||||
|   `market_capital` double NULL DEFAULT NULL, |  | ||||||
|   `dividend_yield` double NULL DEFAULT NULL, |  | ||||||
|   `lot_size` bigint NULL DEFAULT NULL, |  | ||||||
|   `roe_ttm` double NULL DEFAULT NULL, |  | ||||||
|   `total_percent` double NULL DEFAULT NULL, |  | ||||||
|   `percent5m` double NULL DEFAULT NULL, |  | ||||||
|   `income_cagr` double NULL DEFAULT NULL, |  | ||||||
|   `amount` double NULL DEFAULT NULL, |  | ||||||
|   `chg` double NULL DEFAULT NULL, |  | ||||||
|   `issue_date_ts` bigint NULL DEFAULT NULL, |  | ||||||
|   `eps` double NULL DEFAULT NULL, |  | ||||||
|   `main_net_inflows` double NULL DEFAULT NULL, |  | ||||||
|   `volume` bigint NULL DEFAULT NULL, |  | ||||||
|   `volume_ratio` double NULL DEFAULT NULL, |  | ||||||
|   `pb` double NULL DEFAULT NULL, |  | ||||||
|   `followers` bigint NULL DEFAULT NULL, |  | ||||||
|   `turnover_rate` double NULL DEFAULT NULL, |  | ||||||
|   `mapping_quote_current` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `first_percent` double NULL DEFAULT NULL, |  | ||||||
|   `name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `pe_ttm` double NULL DEFAULT NULL, |  | ||||||
|   `dual_counter_mapping_symbol` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `total_shares` bigint NULL DEFAULT NULL, |  | ||||||
|   `limitup_days` bigint NULL DEFAULT NULL, |  | ||||||
|   `id` bigint NULL DEFAULT NULL |  | ||||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for rzrq_data |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `rzrq_data`; |  | ||||||
| CREATE TABLE `rzrq_data`  ( |  | ||||||
|   `trade_date` date NOT NULL COMMENT '交易日期', |  | ||||||
|   `sh_financing_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '上海融资余额(亿元)', |  | ||||||
|   `sz_financing_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '深圳融资余额(亿元)', |  | ||||||
|   `bj_financing_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '北京融资余额(亿元)', |  | ||||||
|   `total_financing_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '融资余额合计(亿元)', |  | ||||||
|   `sh_financing_buy` decimal(12, 2) NULL DEFAULT NULL COMMENT '上海融资买入额(亿元)', |  | ||||||
|   `sz_financing_buy` decimal(12, 2) NULL DEFAULT NULL COMMENT '深圳融资买入额(亿元)', |  | ||||||
|   `bj_financing_buy` decimal(12, 2) NULL DEFAULT NULL COMMENT '北京融资买入额(亿元)', |  | ||||||
|   `total_financing_buy` decimal(12, 2) NULL DEFAULT NULL COMMENT '融资买入额合计(亿元)', |  | ||||||
|   `sh_securities_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '上海融券余量余额(亿元)', |  | ||||||
|   `sz_securities_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '深圳融券余量余额(亿元)', |  | ||||||
|   `bj_securities_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '北京融券余量余额(亿元)', |  | ||||||
|   `total_securities_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '融券余量余额合计(亿元)', |  | ||||||
|   `sh_rzrq_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '上海融资融券余额(亿元)', |  | ||||||
|   `sz_rzrq_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '深圳融资融券余额(亿元)', |  | ||||||
|   `bj_rzrq_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '北京融资融券余额(亿元)', |  | ||||||
|   `total_rzrq_balance` decimal(12, 2) NULL DEFAULT NULL COMMENT '融资融券余额合计(亿元)', |  | ||||||
|   `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, |  | ||||||
|   `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |  | ||||||
|   PRIMARY KEY (`trade_date`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '融资融券数据表' ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for stock_price_changes |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `stock_price_changes`; |  | ||||||
| CREATE TABLE `stock_price_changes`  ( |  | ||||||
|   `symbol` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `current` double NULL DEFAULT NULL, |  | ||||||
|   `percent` double NULL DEFAULT NULL, |  | ||||||
|   `time_mark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, |  | ||||||
|   `add_time` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL |  | ||||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; |  | ||||||
| 
 |  | ||||||
| -- ---------------------------- |  | ||||||
| -- Table structure for stock_price_data |  | ||||||
| -- ---------------------------- |  | ||||||
| DROP TABLE IF EXISTS `stock_price_data`; |  | ||||||
| CREATE TABLE `stock_price_data`  ( |  | ||||||
|   `stock_code` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '股票代码', |  | ||||||
|   `stock_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '股票名称', |  | ||||||
|   `latest_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '最新价', |  | ||||||
|   `change_percent` decimal(10, 2) NULL DEFAULT NULL COMMENT '涨跌幅', |  | ||||||
|   `change_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '涨跌额', |  | ||||||
|   `volume` bigint NULL DEFAULT NULL COMMENT '成交量(手)', |  | ||||||
|   `amount` decimal(20, 2) NULL DEFAULT NULL COMMENT '成交额', |  | ||||||
|   `amplitude` decimal(10, 2) NULL DEFAULT NULL COMMENT '振幅', |  | ||||||
|   `turnover_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '换手率', |  | ||||||
|   `pe_ratio` decimal(10, 2) NULL DEFAULT NULL COMMENT '市盈率', |  | ||||||
|   `high_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '最高价', |  | ||||||
|   `low_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '最低价', |  | ||||||
|   `open_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '开盘价', |  | ||||||
|   `pre_close` decimal(10, 2) NULL DEFAULT NULL COMMENT '昨收价', |  | ||||||
|   `total_market_value` decimal(20, 2) NULL DEFAULT NULL COMMENT '总市值', |  | ||||||
|   `float_market_value` decimal(20, 2) NULL DEFAULT NULL COMMENT '流通市值', |  | ||||||
|   `pb_ratio` decimal(10, 2) NULL DEFAULT NULL COMMENT '市净率', |  | ||||||
|   `list_date` date NULL DEFAULT NULL COMMENT '上市日期', |  | ||||||
|   `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |  | ||||||
|   `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |  | ||||||
|   PRIMARY KEY (`stock_code`) USING BTREE |  | ||||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '实时股价数据表' ROW_FORMAT = Dynamic; |  | ||||||
| 
 | 
 | ||||||
| SET FOREIGN_KEY_CHECKS = 1; | SET FOREIGN_KEY_CHECKS = 1; | ||||||
|  |  | ||||||
|  | @ -19,4 +19,6 @@ pandas==2.2.3 | ||||||
| apscheduler==3.11.0 | apscheduler==3.11.0 | ||||||
| pymongo==4.13.0 | pymongo==4.13.0 | ||||||
| scikit-learn==1.6.1 | scikit-learn==1.6.1 | ||||||
| dbutils==3.1.2 | dbutils==3.1.2 | ||||||
|  | pyyaml==6.0.3 | ||||||
|  | xtquant==250516.1.1 | ||||||
|  | @ -1,11 +1,11 @@ | ||||||
| # QMT交易配置 | # QMT交易配置 | ||||||
| qmt_config: | qmt_config: | ||||||
|   # 客户端路径 |   # 客户端路径 | ||||||
|   client_path: "D:\\SoftwareCenter\\中金财富QMT个人版模拟交易端38421\\userdata_mini" |   client_path: "D:\\SoftwareCenter\\中金财富QMT个人版交易端\\userdata_mini" | ||||||
|    |    | ||||||
|   # 账户配置 |   # 账户配置 | ||||||
|   account: |   account: | ||||||
|     account_id: "10839603"  # 资金账号 |     account_id: "79355243"  # 资金账号 | ||||||
|     account_type: "STOCK"   # 账号类型:STOCK(股票) CREDIT(信用) FUTURE(期货) |     account_type: "STOCK"   # 账号类型:STOCK(股票) CREDIT(信用) FUTURE(期货) | ||||||
| 
 | 
 | ||||||
| # 数据库配置 | # 数据库配置 | ||||||
|  |  | ||||||
|  | @ -124,7 +124,7 @@ class DatabaseManager: | ||||||
|                     'buy_amount': float(buy_amount), |                     'buy_amount': float(buy_amount), | ||||||
|                     'trading_version': int(tver or 0) |                     'trading_version': int(tver or 0) | ||||||
|                 } |                 } | ||||||
|             self.logger.info(f"加载买入计划: {len(buy_plans)}个") |             # self.logger.info(f"加载买入计划: {len(buy_plans)}个") | ||||||
|             return buy_plans |             return buy_plans | ||||||
|         except Exception as e: |         except Exception as e: | ||||||
|             self.logger.error(f"获取买入计划失败: {str(e)}") |             self.logger.error(f"获取买入计划失败: {str(e)}") | ||||||
|  | @ -154,7 +154,7 @@ class DatabaseManager: | ||||||
|                     'sell_quantity': sell_quantity, |                     'sell_quantity': sell_quantity, | ||||||
|                     'trading_version': int(tver or 0) |                     'trading_version': int(tver or 0) | ||||||
|                 } |                 } | ||||||
|             self.logger.info(f"加载卖出计划: {len(sell_plans)}个") |             # self.logger.info(f"加载卖出计划: {len(sell_plans)}个") | ||||||
|             return sell_plans |             return sell_plans | ||||||
|         except Exception as e: |         except Exception as e: | ||||||
|             self.logger.error(f"获取卖出计划失败: {str(e)}") |             self.logger.error(f"获取卖出计划失败: {str(e)}") | ||||||
|  |  | ||||||
|  | @ -10,7 +10,9 @@ from xtquant.xttype import StockAccount | ||||||
| 
 | 
 | ||||||
| # 导入自定义模块 | # 导入自定义模块 | ||||||
| from config_loader import get_qmt_config, get_logging_config, get_strategy_config | from config_loader import get_qmt_config, get_logging_config, get_strategy_config | ||||||
| from strategy import load_initial_positions, create_buy_strategy_callback, create_sell_strategy_callback, start_account_funds_monitor, start_reconciliation_monitor, start_position_snapshot_monitor | from strategy import load_initial_positions, create_buy_strategy_callback, create_sell_strategy_callback, \ | ||||||
|  |     start_account_funds_monitor, start_reconciliation_monitor, start_position_snapshot_monitor, \ | ||||||
|  |     refresh_positions_snapshot | ||||||
| from redis_state_manager import RedisStateManager | from redis_state_manager import RedisStateManager | ||||||
| from database_manager import DatabaseManager, close_pool | from database_manager import DatabaseManager, close_pool | ||||||
| from trader_callback import MyXtQuantTraderCallback | from trader_callback import MyXtQuantTraderCallback | ||||||
|  | @ -97,7 +99,7 @@ if __name__ == '__main__': | ||||||
|     sell_plans = rsm.get_all_sell_plans() |     sell_plans = rsm.get_all_sell_plans() | ||||||
|     logger.info(f"买入计划数量(Redis): {len(buy_plans)}") |     logger.info(f"买入计划数量(Redis): {len(buy_plans)}") | ||||||
|     logger.info(f"卖出计划数量(Redis): {len(sell_plans)}") |     logger.info(f"卖出计划数量(Redis): {len(sell_plans)}") | ||||||
|     logger.info(f"每只股票买入金额: {buy_amount}元") |     # logger.info(f"每只股票买入金额: {buy_amount}元") | ||||||
|     logger.info("="*50) |     logger.info("="*50) | ||||||
|      |      | ||||||
|     # 显示买入计划 |     # 显示买入计划 | ||||||
|  | @ -183,7 +185,6 @@ if __name__ == '__main__': | ||||||
| 
 | 
 | ||||||
|     # 启动每10分钟持仓快照覆盖更新线程(只更新DB,不叠加) |     # 启动每10分钟持仓快照覆盖更新线程(只更新DB,不叠加) | ||||||
|     start_position_snapshot_monitor(xt_trader, acc, logger, interval_seconds=600) |     start_position_snapshot_monitor(xt_trader, acc, logger, interval_seconds=600) | ||||||
| 
 |  | ||||||
|     # 下载股票数据 |     # 下载股票数据 | ||||||
|     xtdata.download_sector_data() |     xtdata.download_sector_data() | ||||||
| 
 | 
 | ||||||
|  | @ -194,26 +195,32 @@ if __name__ == '__main__': | ||||||
|     sell_strategy_callback = create_sell_strategy_callback(xt_trader, acc, logger) |     sell_strategy_callback = create_sell_strategy_callback(xt_trader, acc, logger) | ||||||
| 
 | 
 | ||||||
|     # 订阅买卖计划中的股票行情(基于Redis) |     # 订阅买卖计划中的股票行情(基于Redis) | ||||||
|  |     subscription_ids = {}  # 统一管理所有订阅ID | ||||||
|  |      | ||||||
|     if buy_plans: |     if buy_plans: | ||||||
|         buy_code_list = list(buy_plans.keys()) |         buy_code_list = list(buy_plans.keys()) | ||||||
|         logger.info(f"开始订阅 {len(buy_code_list)} 只买入股票的行情...") |         logger.info(f"开始订阅 {len(buy_code_list)} 只买入股票的行情...") | ||||||
|         for code in buy_code_list: |         for code in buy_code_list: | ||||||
|             xtdata.subscribe_quote(code, '1m', callback=buy_strategy_callback) |             sub_id = xtdata.subscribe_quote(code, '1d', callback=buy_strategy_callback) | ||||||
|             logger.info(f"已订阅买入 {code} ({buy_plans[code].get('stock_name','')}) 行情") |             subscription_ids[code] = sub_id | ||||||
|  |             logger.info(f"已订阅买入 {code} ({buy_plans[code].get('stock_name','')}) 行情,订阅ID: {sub_id}") | ||||||
|     if sell_plans: |     if sell_plans: | ||||||
|         sell_code_list = list(sell_plans.keys()) |         sell_code_list = list(sell_plans.keys()) | ||||||
|         logger.info(f"开始订阅 {len(sell_code_list)} 只卖出股票的行情...") |         logger.info(f"开始订阅 {len(sell_code_list)} 只卖出股票的行情...") | ||||||
|         for code in sell_code_list: |         for code in sell_code_list: | ||||||
|             xtdata.subscribe_quote(code, '1m', callback=sell_strategy_callback) |             sub_id = xtdata.subscribe_quote(code, '1d', callback=sell_strategy_callback) | ||||||
|             logger.info(f"已订阅卖出 {code} ({sell_plans[code].get('stock_name','')}) 行情") |             subscription_ids[code] = sub_id | ||||||
|  |             logger.info(f"已订阅卖出 {code} ({sell_plans[code].get('stock_name','')}) 行情,订阅ID: {sub_id}") | ||||||
| 
 | 
 | ||||||
|     # 计划同步线程:每60秒从MySQL同步到Redis,并直接更新订阅(不再分线程管理订阅) |     # 计划同步线程:每60秒从MySQL同步到Redis,并直接更新订阅(不再分线程管理订阅) | ||||||
|     import threading, time |     import threading, time | ||||||
|     def plan_sync_worker(): |     def plan_sync_worker(): | ||||||
|         interval = 60  # 固定60秒同步一次 |         interval = 60  # 固定60秒同步一次 | ||||||
|         # 当前已订阅集合 |         # 当前已订阅集合 | ||||||
|         subscribed_buy = set(buy_plans.keys()) |         subscribed_codes = set(subscription_ids.keys()) | ||||||
|         subscribed_sell = set(sell_plans.keys()) |         # 存储订阅ID的字典,初始化为初始订阅ID | ||||||
|  |         current_subscription_ids = subscription_ids.copy() | ||||||
|  |          | ||||||
|         while True: |         while True: | ||||||
|             try: |             try: | ||||||
|                 time.sleep(interval) |                 time.sleep(interval) | ||||||
|  | @ -262,25 +269,28 @@ if __name__ == '__main__': | ||||||
|                 for code in del_sell: |                 for code in del_sell: | ||||||
|                     rsm.del_sell_plan(code) |                     rsm.del_sell_plan(code) | ||||||
|                 # 直接同步订阅(差分) |                 # 直接同步订阅(差分) | ||||||
|                 new_buy_sub = latest_buy_codes |                 new_codes = latest_buy_codes | latest_sell_codes | ||||||
|                 new_sell_sub = latest_sell_codes |                  | ||||||
|                 # 买入订阅差分 |                 # 新增订阅 | ||||||
|                 for code in new_buy_sub - subscribed_buy: |                 for code in new_codes - subscribed_codes: | ||||||
|                     xtdata.subscribe_quote(code, '1m', callback=buy_strategy_callback) |                     # 判断是买入还是卖出计划 | ||||||
|                     logger.info(f"[订阅新增-买入] {code}") |                     if code in latest_buy_codes: | ||||||
|                 for code in subscribed_buy - new_buy_sub: |                         sub_id = xtdata.subscribe_quote(code, '1d', callback=buy_strategy_callback) | ||||||
|                     xtdata.unsubscribe_quote(code) |                         logger.info(f"[订阅新增-买入] {code},订阅ID: {sub_id}") | ||||||
|                     logger.info(f"[取消订阅-买入] {code}") |                     else: | ||||||
|                 # 卖出订阅差分 |                         sub_id = xtdata.subscribe_quote(code, '1d', callback=sell_strategy_callback) | ||||||
|                 for code in new_sell_sub - subscribed_sell: |                         logger.info(f"[订阅新增-卖出] {code},订阅ID: {sub_id}") | ||||||
|                     xtdata.subscribe_quote(code, '1m', callback=sell_strategy_callback) |                     current_subscription_ids[code] = sub_id | ||||||
|                     logger.info(f"[订阅新增-卖出] {code}") |                  | ||||||
|                 for code in subscribed_sell - new_sell_sub: |                 # 取消订阅 | ||||||
|                     xtdata.unsubscribe_quote(code) |                 for code in subscribed_codes - new_codes: | ||||||
|                     logger.info(f"[取消订阅-卖出] {code}") |                     if code in current_subscription_ids: | ||||||
|                 subscribed_buy = new_buy_sub |                         xtdata.unsubscribe_quote(current_subscription_ids[code]) | ||||||
|                 subscribed_sell = new_sell_sub |                         del current_subscription_ids[code] | ||||||
|                 logger.info("计划同步与订阅更新完成") |                         logger.info(f"[取消订阅] {code}") | ||||||
|  |                  | ||||||
|  |                 subscribed_codes = new_codes | ||||||
|  |                 # logger.info("计划同步与订阅更新完成") | ||||||
|             except Exception as e: |             except Exception as e: | ||||||
|                 logger.warning(f"计划同步线程异常: {str(e)}") |                 logger.warning(f"计划同步线程异常: {str(e)}") | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -273,7 +273,7 @@ def create_buy_strategy_callback(xt_trader, acc, buy_amount, logger): | ||||||
|                                 xtconstant.STOCK_BUY, |                                 xtconstant.STOCK_BUY, | ||||||
|                                 buy_volume, |                                 buy_volume, | ||||||
|                                 xtconstant.FIX_PRICE, |                                 xtconstant.FIX_PRICE, | ||||||
|                                 target_price, |                                 current_price, | ||||||
|                                 'auto_buy_strategy', |                                 'auto_buy_strategy', | ||||||
|                                 order_id |                                 order_id | ||||||
|                             ) |                             ) | ||||||
|  | @ -282,6 +282,7 @@ def create_buy_strategy_callback(xt_trader, acc, buy_amount, logger): | ||||||
|                             add_pending_order(stock_code, order_id, buy_volume, current_price, target_price, 'buy', logger) |                             add_pending_order(stock_code, order_id, buy_volume, current_price, target_price, 'buy', logger) | ||||||
|                              |                              | ||||||
|                             logger.info(f"已提交买入订单: {stock_code} {buy_volume}股,价格{target_price},订单ID: {order_id}") |                             logger.info(f"已提交买入订单: {stock_code} {buy_volume}股,价格{target_price},订单ID: {order_id}") | ||||||
|  |                             update_account_funds_periodically(xt_trader, acc, logger) | ||||||
|                         else: |                         else: | ||||||
|                             logger.warning(f"买入数量计算为0,跳过 {stock_code}") |                             logger.warning(f"买入数量计算为0,跳过 {stock_code}") | ||||||
|                     else: |                     else: | ||||||
|  | @ -375,6 +376,7 @@ def create_sell_strategy_callback(xt_trader, acc, logger): | ||||||
|                             add_pending_order(stock_code, order_id, sell_volume, current_price, target_price, 'sell', logger) |                             add_pending_order(stock_code, order_id, sell_volume, current_price, target_price, 'sell', logger) | ||||||
|                              |                              | ||||||
|                             logger.info(f"已提交卖出订单: {stock_code} {sell_volume}股,价格{target_price},订单ID: {order_id}") |                             logger.info(f"已提交卖出订单: {stock_code} {sell_volume}股,价格{target_price},订单ID: {order_id}") | ||||||
|  |                             update_account_funds_periodically(xt_trader, acc, logger) | ||||||
|                         else: |                         else: | ||||||
|                             logger.warning(f"卖出数量为0,跳过 {stock_code}") |                             logger.warning(f"卖出数量为0,跳过 {stock_code}") | ||||||
|                     else: |                     else: | ||||||
|  | @ -544,32 +546,46 @@ def refresh_positions_snapshot(xt_trader, acc, logger): | ||||||
|             try: |             try: | ||||||
|                 code = pos.stock_code |                 code = pos.stock_code | ||||||
|                 # 获取持仓基本信息 |                 # 获取持仓基本信息 | ||||||
|                 total_qty = int(getattr(pos, 'm_nVolume', 0) or 0) |                 total_qty = int(getattr(pos, 'volume', 0))  # 使用 'volume' 或 'm_nVolume' | ||||||
|                 available_qty = int(getattr(pos, 'm_nCanUseVolume', 0) or 0) |                 available_qty = int(getattr(pos, 'can_use_volume', 0))  # 使用 'can_use_volume' 或 'm_nCanUseVolume' | ||||||
|                 frozen_qty = max(0, total_qty - available_qty)  # 冻结数量 = 总数量 - 可用数量 | 
 | ||||||
|                  |                 # 直接使用API返回的冻结数量字段,这比自己计算更准确 | ||||||
|                 # 获取价格和市值信息 |                 frozen_qty = int(getattr(pos, 'frozen_volume', 0))  # 使用 'frozen_volume' 或 'm_nFrozenVolume' | ||||||
|                 cost_price = float(getattr(pos, 'm_dOpenPrice', 0.0) or 0.0) | 
 | ||||||
|                 market_price = float(getattr(pos, 'm_dLastPrice', 0.0) or 0.0) |                 # 如果总持仓为0,则没有处理的必要,直接跳过 | ||||||
|                 market_value = float(getattr(pos, 'm_dInstrumentValue', 0.0) or 0.0) |                 if total_qty == 0: | ||||||
|                  |                     continue | ||||||
|                 # 获取盈亏信息 | 
 | ||||||
|                 profit_loss = float(getattr(pos, 'm_dPositionProfit', 0.0) or 0.0) |                 # 2. 获取价格和市值信息 | ||||||
|                 position_cost = float(getattr(pos, 'm_dPositionCost', 0.0) or 0.0) |                 cost_price = float(getattr(pos, 'avg_price', 0.0))  # 使用 'avg_price' 或 'm_dAvgPrice' | ||||||
|                  |                 market_value = float(getattr(pos, 'market_value', 0.0))  # 使用 'market_value' 或 'm_dMarketValue' | ||||||
|                 # 计算盈亏比例 | 
 | ||||||
|  |                 # 3. 根据现有字段计算缺失的信息 | ||||||
|  | 
 | ||||||
|  |                 # 计算市价 (Market Price) | ||||||
|  |                 # 正如您所说,通过 市值 / 总数量 来计算,并处理总数量为0的情况 | ||||||
|  |                 market_price = market_value / total_qty if total_qty > 0 else 0.0 | ||||||
|  | 
 | ||||||
|  |                 # 计算持仓成本 (Position Cost) | ||||||
|  |                 position_cost = cost_price * total_qty | ||||||
|  | 
 | ||||||
|  |                 # 计算持仓盈亏 (Profit/Loss) | ||||||
|  |                 # 盈亏 = 总市值 - 总成本 | ||||||
|  |                 profit_loss = market_value - position_cost | ||||||
|  | 
 | ||||||
|  |                 # 计算盈亏比例 (Profit/Loss Ratio) | ||||||
|                 if position_cost > 0: |                 if position_cost > 0: | ||||||
|                     profit_loss_ratio = (profit_loss / position_cost) * 100 |                     profit_loss_ratio = (profit_loss / position_cost) * 100 | ||||||
|                 else: |                 else: | ||||||
|                     profit_loss_ratio = 0.0 |                     profit_loss_ratio = 0.0  # 如果成本为0,则盈亏比例也为0 | ||||||
|                  |                  | ||||||
|                 if total_qty > 0: |                 # if total_qty > 0: | ||||||
|                     dbm.upsert_position_snapshot( |                 dbm.upsert_position_snapshot( | ||||||
|                         code, total_qty, available_qty, frozen_qty,  |                     code, total_qty, available_qty, frozen_qty, | ||||||
|                         cost_price, market_price, market_value,  |                     cost_price, market_price, market_value, | ||||||
|                         profit_loss, profit_loss_ratio |                     profit_loss, profit_loss_ratio | ||||||
|                     ) |                 ) | ||||||
|                     valid_codes.append(code) |                 valid_codes.append(code) | ||||||
|             except Exception as e: |             except Exception as e: | ||||||
|                 logger.warning(f"处理持仓记录失败 {getattr(pos, 'stock_code', 'unknown')}: {e}") |                 logger.warning(f"处理持仓记录失败 {getattr(pos, 'stock_code', 'unknown')}: {e}") | ||||||
|                 continue |                 continue | ||||||
|  |  | ||||||
|  | @ -295,3 +295,6 @@ if __name__ == '__main__': | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ XUEQIU_HEADERS = { | ||||||
|     'Accept-Encoding': 'gzip, deflate, br, zstd', |     'Accept-Encoding': 'gzip, deflate, br, zstd', | ||||||
|     'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', |     'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', | ||||||
|     'Client-Version': 'v2.44.75', |     'Client-Version': 'v2.44.75', | ||||||
|     'Cookie': 'cookiesu=811743062689927; device_id=33fa3c7fca4a65f8f4354e10ed6b7470; smidV2=20250327160437f244626e8b47ca2a7992f30f389e4e790074ae48656a22f10; HMACCOUNT=8B64A2E3C307C8C0; s=c611ttmqlj; xq_is_login=1; u=8493411634; bid=4065a77ca57a69c83405d6e591ab5449_m8r2nhs8; __utma=1.434320573.1747189698.1747189698.1747189698.1; __utmc=1; __utmz=1.1747189698.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); snbim_minify=true; _c_WBKFRo=dsWgHR8i8KGPbIyhFlN51PHOzVuuNytvUAFppfkD; _nb_ioWEgULi=; aliyungf_tc=00c6b999835b16cea9e4a6aab36cca373a0976bf55ee74770d11f421f7119ad8; Hm_lvt_1db88642e346389874251b5a1eded6e3=1757464900; xq_a_token=0c9cfffc3d713428b4759d3c4e11fff91b618525; xqat=0c9cfffc3d713428b4759d3c4e11fff91b618525; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOjg0OTM0MTE2MzQsImlzcyI6InVjIiwiZXhwIjoxNzYxNTYzMTU1LCJjdG0iOjE3NTg5NzExNTUyODksImNpZCI6ImQ5ZDBuNEFadXAifQ.KotT161D0bQF-m3HNgQFTknHqUpMUR_KWY7BAjiLKOaQocVghM85sCKUretUK5OpMDXMzGPhzxTWMs4VhGxKUHxHSu3inrbCw7rgGDtK0Lnr_6OXHkEMwDadN37V3AYbxKWaX609pACLK1q2cvRmGg94wAgj9KEqu76gdV4w4tRv4LupUJQgYb6M0GEVe7ejLs2_CdV5PV7j0PSjTtpjaeZWkc9YhW32vOyA6gg3fU9S4BQg7qgciYLI8AxiU-GYgFLyFSK2S7nvAngz8TEhNoQcClKrD4NeqqSj2nA5bh5_5FM8AbdbKGw6K8eIO0wkxCV2iUWBDMz-h160cX0GLw; xq_r_token=e586d0abb8de83a22a5d66be2f908954a50005b2; .thumbcache_f24b8bbe5a5934237bbc0eda20c1b6e7=nGvY6/KwbtfD3HgPBzY+S0khnrVCqr4mPyfsZ27X+GjYcRWS61PMogABu5uvj/LAd4TJsSFQiYwdEepZMxwg3A%3D%3D; ssxmod_itna=1-iqmxyQG=KWqGqwD4qeqY5Lor=G2zDuDBP01DpxYK0CDmxjKideDUDtTxR3R27rQA04D7777mqqeCQ_4D/A0ieDZDGKQDqx0or0KBiBUPehSmRxdW9gTBThssUUo8vG8FV4x9WCL5ZG9emiTjxIx_D0aDmKDUx4x_BAYDeWFDCeDQxirDD4DAmPDFxibDimAb4DdkK8EvUOpIDGrDlKDRchok4GWDiPD76gDl6gpbDDCDiyjKV3Dixiaz3eDBomc41iI4xi3kb8_c8b5Yq4EWi2ID7v3DlPqjdnIKy/M4E3Eps/9=agju40ODG6CofPchOBoFO3o6=rlwIlqrDKpY4Kleiix57xhx_eQDrWD57IpDx54_xmmZ7hpY21Bb0nQi/AO4b3mDrnNDt0=a0q345Bi5Drhl54nmeYnAD_mmD_GWq7h1iGq7YzGxA8DqBD=4nz7xNImYnb47xxD; ssxmod_itna2=1-iqmxyQG=KWqGqwD4qeqY5Lor=G2zDuDBP01DpxYK0CDmxjKideDUDtTxR3R27rQA04D7777mqqeCQ4DW_QRiAwxKA07vi3WDj4pxkh3pfaDlxTMHwkxxRl_UFFyKFmUR1v7kCiqQHALxyxuseYn8Q79bLg08eBKxkZwGFEy8ZxTGW7YkIrrzM=5YCx_Gem5Qg2HvQz9AhR0FvxfOG7AQwzoPjSpGmtApnKdwC4uUuzI6eDo2Bedxmf8L2fgms1KnurZO0K=m0ifvg8yDYb=qs=GimaBFojOsWf01ibDy6ZP5DLpur3mS//PdQPR0PqEEqiKseLxQQ3iKiC3ijQ5zKLELcAULPdKD6Q86ejjQKAk6K3leiePYGxdGpYpDbO3YPKa_x4RPTxTif5T3mOIGa8TCY44Y4hWn1AQq7G1nDQ7GQ7D5BDxzWw8bz3D; is_overseas=0; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1759979780', |     'Cookie': 'cookiesu=811743062689927; device_id=33fa3c7fca4a65f8f4354e10ed6b7470; smidV2=20250327160437f244626e8b47ca2a7992f30f389e4e790074ae48656a22f10; HMACCOUNT=8B64A2E3C307C8C0; s=c611ttmqlj; xq_is_login=1; u=8493411634; bid=4065a77ca57a69c83405d6e591ab5449_m8r2nhs8; __utma=1.434320573.1747189698.1747189698.1747189698.1; __utmc=1; __utmz=1.1747189698.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); snbim_minify=true; _c_WBKFRo=dsWgHR8i8KGPbIyhFlN51PHOzVuuNytvUAFppfkD; _nb_ioWEgULi=; aliyungf_tc=00c6b999835b16cea9e4a6aab36cca373a0976bf55ee74770d11f421f7119ad8; Hm_lvt_1db88642e346389874251b5a1eded6e3=1760079937; .thumbcache_f24b8bbe5a5934237bbc0eda20c1b6e7=cL1C7SjsshX5JK0Re7ihF6dZxxNiOAPyX1snDwPjwIcOT4loJZk0lvOmuGrSePCN89PG5UQYB5CVV6XtcSAIMw%3D%3D; xq_a_token=716a8b0d84aecdccf652cf125bfe9733d3a66c6e; xqat=716a8b0d84aecdccf652cf125bfe9733d3a66c6e; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOjg0OTM0MTE2MzQsImlzcyI6InVjIiwiZXhwIjoxNzYyOTEyMjgyLCJjdG0iOjE3NjAzMjAyODI0MzEsImNpZCI6ImQ5ZDBuNEFadXAifQ.cFoUZrJkZMr55bCXCQpoPsTfLpyU6Es3ieEgNLwCsSd_ty3jysDF8eVjaZCXo9u0qcl15kK2tb1KYaA2_cqpFOhhfBBE6WvHIaMtzp8EWW5LhCuCfX0cGgsqua9hsE6HLCIxAM7ZUzYvR_bm-tRJWkVUrKFyyoTLn6NVSyub8eya2y9Dpd0B3n-FbDUbuRs6QIVNOVnE8OlGsBXHUOdMTo2s1-PGzZ3Qaw-LwBR3hkCBLZzeIkpGllESWATfNQ0xgOtRXwG-HO189JqmdEtEEpXiu1aXvvOerNuCxJpY-1QHS7UNYrUy6u36bz6xKVzcXnfrTn_aannNoTGDuMldEg; xq_r_token=eec2f02f63dc672682f60584946e2e697f19d846; acw_tc=b65cfd2717603418882762100e56b805ecd396f75d259a0af2bbedda624afd; is_overseas=0; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1760342262; ssxmod_itna=1-iqmxyQG=KWqGqwD4qeqY5Lor=G2zDuDBP01DpxYK0CDmxjKideDUDtTxR3RpDDq7x4/K07np1DBw4qrDnqD80DQeDvexkGwzMFnw2b33N7hRtdeSEjvFpvTVc4RnEXGF=MSnVriUCrKexGLDY=DCqe4exrrDYYfDBYD74G_DDeDih3Dj4GmDGYtOeDFfCuNq6R5=xDwDB=DmLqTfeDEDG3D0fRxFLv3wW4DGqDS8=BWxD3Df4uzDDXz_UvqIj5DbEbN5laTS77ilm43feDMWxGX7BCsqK1cMhWNxHCLrS2FkPGuDG6Ogj0tQqQO3i2YLo44QDmmirjP4BDr0DpD43BDd0dimGxY_4BD3liiDxe4eqiD3nqdBDwn010bm2R6jpxjAMEX/aEVPirDr7eIgnv6lpz7GAOGT9bzlwGmDT/0Y_x=FRY0b47xxD; ssxmod_itna2=1-iqmxyQG=KWqGqwD4qeqY5Lor=G2zDuDBP01DpxYK0CDmxjKideDUDtTxR3RpDDq7x4/K07nPrDGbWNrdkSmoT3Mnld744WYBD8yz4D', | ||||||
|     'Referer': 'https://weibo.com/u/7735765253', |     'Referer': 'https://weibo.com/u/7735765253', | ||||||
|     'Sec-Ch-Ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"', |     'Sec-Ch-Ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"', | ||||||
|     'Sec-Ch-Ua-Mobile': '?0', |     'Sec-Ch-Ua-Mobile': '?0', | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue