{"id":102166,"date":"2026-09-08T09:33:27","date_gmt":"2026-09-08T01:33:27","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/102166.html"},"modified":"2026-09-08T09:33:27","modified_gmt":"2026-09-08T01:33:27","slug":"%e9%87%8f%e5%8c%96%e6%95%b0%e6%8d%ae%e5%bc%80%e5%8f%91%e5%ae%9e%e6%88%98%e7%b3%bb%e5%88%97%ef%bc%88%e7%ac%ac-16-%e7%af%87%ef%bc%89%ef%bc%9a%e8%82%a1%e4%b8%9c%e6%95%b0%e6%8d%ae%e5%88%86%e6%9e%90","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/102166.html","title":{"rendered":"\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217\uff08\u7b2c 16 \u7bc7\uff09\uff1a\u80a1\u4e1c\u6570\u636e\u5206\u6790\uff1a\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a"},"content":{"rendered":"<h2>\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217&#xff08;\u7b2c 16 \u7bc7&#xff09;&#xff1a;\u80a1\u4e1c\u6570\u636e\u5206\u6790&#xff1a;\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a<\/h2>\n<h3>\u524d\u8a00<\/h3>\n<p>\u7b2c 15 \u7bc7\u6211\u4eec\u7528\u8d22\u52a1\u4e3b\u8981\u6307\u6807\u63a5\u53e3\u505a\u4e86\u300c\u9ad8 ROE\u3001\u5408\u7406\u8d44\u4ea7\u8d1f\u503a\u7387\u300d\u7684\u81ea\u7814\u8d28\u91cf\u7b5b\u9009&#xff0c;\u5e76\u53cd\u590d\u5f3a\u8c03&#xff1a;\u63a5\u53e3\u8fd4\u56de\u7684 ROE\u3001\u6bdb\u5229\u7387\u3001\u8d44\u4ea7\u8d1f\u503a\u7387\u90fd\u53ea\u662f\u539f\u59cb\u88f8\u5b57\u6bb5&#xff0c;\u6ca1\u6709\u4efb\u4f55\u9884\u5236\u56e0\u5b50\u3002\u672c\u7bc7\u627f\u63a5\u7b2c 15 \u7bc7\u7ed3\u5c3e\u7684\u9884\u544a&#xff1a;<\/p>\n<p>\u7b2c 16 \u7bc7&#xff1a;\u80a1\u4e1c\u6570\u636e\u5b9e\u6218&#xff0c;\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u3002<\/p>\n<p>\u5982\u679c\u8bf4\u8d22\u52a1\u8d28\u91cf\u56de\u7b54\u7684\u662f\u300c\u516c\u53f8\u8d5a\u4e0d\u8d5a\u94b1\u3001\u7a33\u4e0d\u7a33\u300d&#xff0c;\u90a3\u80a1\u4e1c\u6570\u636e\u56de\u7b54\u7684\u5c31\u662f\u300c\u8c01\u5728\u6301\u6709\u3001\u7b79\u7801\u5728\u5f80\u54ea\u91cc\u8d70\u300d\u3002\u5fc5\u76c8\u63d0\u4f9b\u4e09\u4e2a\u540c\u5c5e hsstock\/financial\/ \u8def\u5f84\u7684\u80a1\u4e1c\u7c7b\u63a5\u53e3&#xff1a;topholder&#xff08;\u5341\u5927\u80a1\u4e1c&#xff09;\u3001flowholder&#xff08;\u5341\u5927\u6d41\u901a\u80a1\u4e1c&#xff09;\u3001hm&#xff08;\u80a1\u4e1c\u6237\u6570&#xff09;\u3002\u8fd9\u4e09\u4e2a\u63a5\u53e3\u90fd\u5e26 .SZ\/.SH \u540e\u7f00 &#043; ?st&#061;&amp;et&#061; \u65f6\u95f4\u533a\u95f4&#xff0c;\u8fd4\u56de\u7684\u5168\u90e8\u662f\u539f\u59cb\u88f8\u5b57\u6bb5\u2014\u2014\u80a1\u4e1c\u540d\u79f0\u3001\u6301\u80a1\u6570\u91cf\u3001\u6301\u80a1\u6bd4\u4f8b\u3001\u80a1\u4e1c\u603b\u6570\u7b49&#xff0c;\u6ca1\u6709\u4efb\u4f55\u300c\u7b79\u7801\u96c6\u4e2d\u5ea6\u56e0\u5b50\u300d\u3002<\/p>\n<p>\u672c\u7bc7\u628a\u8fd9\u4e09\u7c7b\u6570\u636e\u6e05\u6d17\u3001\u6309\u62a5\u544a\u671f\u5f52\u6863\u5165\u5e93&#xff0c;\u5e76\u5168\u90e8\u7528 Python \u81ea\u7814\u8ba1\u7b97\u4e24\u7c7b\u4fe1\u53f7&#xff1a;\u80a1\u4e1c\u6237\u6570\u73af\u6bd4\u589e\u51cf\u3001\u7b79\u7801\u96c6\u4e2d\/\u5206\u6563\u4fe1\u53f7\u7edf\u8ba1\u3002\u6240\u6709\u884d\u751f\u6307\u6807\u5747\u57fa\u4e8e\u63a5\u53e3\u539f\u59cb\u5b57\u6bb5\u8fd0\u7b97\u5f97\u5230&#xff0c;\u6587\u4e2d\u660e\u786e\u6807\u6ce8\u300c\u63a5\u53e3\u4ec5\u8fd4\u56de\u539f\u59cb\u88f8\u5b57\u6bb5&#xff0c;\u4ee5\u4e0b\u6307\u6807\u4e3a\u81ea\u7814\u300d\u3002<\/p>\n<p>\u8854\u63a5\u8bf4\u660e&#xff1a;\u672c\u7bc7\u7d27\u63a5\u7b2c 15 \u7bc7\u300c\u8d22\u52a1\u6307\u6807\u300d&#xff0c;\u662f\u5927\u7eb2\u7b2c\u4e09\u90e8\u5206&#xff08;\u57fa\u672c\u9762\u91cf\u5316\u4e13\u9898&#xff09;\u7684\u7b2c 4 \u7bc7&#xff1b;\u4ee3\u7801\u590d\u7528\u57fa\u7840\u4ee3\u7801\u5757\u4e0e\u7b2c 13\u300114\u300115 \u7bc7\u7684 fetch_stock_list()\u3001with_exchange_suffix() \u7ea6\u5b9a\u3002<\/p>\n<hr \/>\n<h3>\u4e00\u3001\u672c\u7bc7\u6d89\u53ca\u63a5\u53e3\u4e0e\u5b57\u6bb5\u89e3\u8bfb<\/h3>\n<p>\u4e09\u4e2a\u63a5\u53e3\u540c\u5c5e hsstock\/financial\/ \u8def\u5f84&#xff0c;\u7ed3\u6784\u4e00\u81f4&#xff0c;\u80a1\u7968\u4ee3\u7801\u5747\u9700\u5e26\u4ea4\u6613\u6240\u540e\u7f00&#xff08;\u5982 000001.SZ \/ 000001.SH&#xff09;&#xff0c;\u540e\u7f00\u7531\u300a\u80a1\u7968\u5217\u8868\u300b\u7684 jys \u5b57\u6bb5\u51b3\u5b9a\u3002st\/et \u683c\u5f0f\u5747\u4e3a YYYYMMDD&#xff08;\u5982 20240101&#xff09;&#xff0c;\u4e0d\u8bbe\u7f6e\u5219\u4e3a\u5168\u90e8\u6570\u636e\u3002<\/p>\n<h4>1.1 \u5341\u5927\u80a1\u4e1c financial\/topholder<\/h4>\n<ul>\n<li>\u63a5\u53e3\u5730\u5740&#xff1a;http:\/\/api.biyingapi.com\/hsstock\/financial\/topholder\/{\u80a1\u7968\u4ee3\u7801&#xff08;\u5982000001.SZ&#xff09;}\/{LICENCE}?st&#061;\u5f00\u59cb\u65f6\u95f4&amp;et&#061;\u7ed3\u675f\u65f6\u95f4<\/li>\n<li>\u63a5\u53e3\u8bf4\u660e&#xff1a;\u6839\u636e\u300a\u80a1\u7968\u5217\u8868\u300b\u5f97\u5230\u7684\u80a1\u7968\u4ee3\u7801\u83b7\u53d6\u516c\u53f8\u5341\u5927\u80a1\u4e1c\u3002<\/li>\n<li>\u6570\u636e\u66f4\u65b0&#xff1a;\u6bcf\u65e5 0 \u70b9<\/li>\n<li>\u8bf7\u6c42\u9891\u7387&#xff1a;1 \u5206\u949f 300 \u6b21 | \u5305\u5e74\u7248 1 \u5206\u949f 3 \u5343\u6b21 | \u767d\u91d1\u7248 1 \u5206\u949f 6 \u5343\u6b21<\/li>\n<li>\u8fd4\u56de\u683c\u5f0f&#xff1a;\u6807\u51c6 JSON \u6570\u7ec4 [{},&#8230;{}]<\/li>\n<\/ul>\n<h4>1.2 \u5341\u5927\u6d41\u901a\u80a1\u4e1c financial\/flowholder<\/h4>\n<ul>\n<li>\u63a5\u53e3\u5730\u5740&#xff1a;http:\/\/api.biyingapi.com\/hsstock\/financial\/flowholder\/{\u80a1\u7968\u4ee3\u7801&#xff08;\u5982000001.SZ&#xff09;}\/{LICENCE}?st&#061;\u5f00\u59cb\u65f6\u95f4&amp;et&#061;\u7ed3\u675f\u65f6\u95f4<\/li>\n<li>\u63a5\u53e3\u8bf4\u660e&#xff1a;\u6839\u636e\u300a\u80a1\u7968\u5217\u8868\u300b\u5f97\u5230\u7684\u80a1\u7968\u4ee3\u7801\u83b7\u53d6\u516c\u53f8\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3002<\/li>\n<li>\u6570\u636e\u66f4\u65b0&#xff1a;\u6bcf\u65e5 0 \u70b9<\/li>\n<li>\u8fd4\u56de\u683c\u5f0f&#xff1a;\u6807\u51c6 JSON \u6570\u7ec4<\/li>\n<\/ul>\n<h4>1.3 \u80a1\u4e1c\u6237\u6570 financial\/hm<\/h4>\n<ul>\n<li>\u63a5\u53e3\u5730\u5740&#xff1a;http:\/\/api.biyingapi.com\/hsstock\/financial\/hm\/{\u80a1\u7968\u4ee3\u7801&#xff08;\u5982000001.SZ&#xff09;}\/{LICENCE}?st&#061;\u5f00\u59cb\u65f6\u95f4&amp;et&#061;\u7ed3\u675f\u65f6\u95f4<\/li>\n<li>\u63a5\u53e3\u8bf4\u660e&#xff1a;\u6839\u636e\u300a\u80a1\u7968\u5217\u8868\u300b\u5f97\u5230\u7684\u80a1\u7968\u4ee3\u7801\u83b7\u53d6\u516c\u53f8\u80a1\u4e1c\u6570\u3002<\/li>\n<li>\u6570\u636e\u66f4\u65b0&#xff1a;\u6bcf\u65e5 0 \u70b9<\/li>\n<li>\u8fd4\u56de\u683c\u5f0f&#xff1a;\u6807\u51c6 JSON \u6570\u7ec4<\/li>\n<\/ul>\n<h4>1.4 \u5173\u952e\u8fd4\u56de\u5b57\u6bb5&#xff08;\u9010\u5b57\u53d6\u81ea\u5b98\u65b9 docx&#xff09;<\/h4>\n<p>topholder \/ flowholder \u5b57\u6bb5\u5b8c\u5168\u4e00\u81f4&#xff1a;<\/p>\n<table>\n<tr>\u5b57\u6bb5\u540d\u79f0\u6570\u636e\u7c7b\u578b\u5b57\u6bb5\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>ggrq<\/td>\n<td>string<\/td>\n<td>\u516c\u544a\u65e5\u671f<\/td>\n<\/tr>\n<tr>\n<td>jzrq<\/td>\n<td>string<\/td>\n<td>\u622a\u6b62\u65e5\u671f<\/td>\n<\/tr>\n<tr>\n<td>gdmc<\/td>\n<td>string<\/td>\n<td>\u80a1\u4e1c\u540d\u79f0<\/td>\n<\/tr>\n<tr>\n<td>gdlx<\/td>\n<td>string<\/td>\n<td>\u80a1\u4e1c\u7c7b\u578b<\/td>\n<\/tr>\n<tr>\n<td>cgsl<\/td>\n<td>string<\/td>\n<td>\u6301\u80a1\u6570\u91cf<\/td>\n<\/tr>\n<tr>\n<td>bdyy<\/td>\n<td>string<\/td>\n<td>\u53d8\u52a8\u539f\u56e0<\/td>\n<\/tr>\n<tr>\n<td>cgbl<\/td>\n<td>string<\/td>\n<td>\u6301\u80a1\u6bd4\u4f8b<\/td>\n<\/tr>\n<tr>\n<td>gfxz<\/td>\n<td>string<\/td>\n<td>\u80a1\u4efd\u6027\u8d28<\/td>\n<\/tr>\n<tr>\n<td>cgpm<\/td>\n<td>string<\/td>\n<td>\u6301\u80a1\u6392\u540d<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>hm \u80a1\u4e1c\u6237\u6570\u5b57\u6bb5&#xff1a;<\/p>\n<table>\n<tr>\u5b57\u6bb5\u540d\u79f0\u6570\u636e\u7c7b\u578b\u5b57\u6bb5\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>jzrq<\/td>\n<td>string<\/td>\n<td>\u622a\u6b62\u65e5\u671f<\/td>\n<\/tr>\n<tr>\n<td>gdzs<\/td>\n<td>string<\/td>\n<td>\u80a1\u4e1c\u603b\u6570<\/td>\n<\/tr>\n<tr>\n<td>agdhs<\/td>\n<td>string<\/td>\n<td>A\u80a1\u4e1c\u6237\u6570<\/td>\n<\/tr>\n<tr>\n<td>bgdhs<\/td>\n<td>string<\/td>\n<td>B\u80a1\u4e1c\u6237\u6570<\/td>\n<\/tr>\n<tr>\n<td>hgdhs<\/td>\n<td>string<\/td>\n<td>H\u80a1\u4e1c\u6237\u6570<\/td>\n<\/tr>\n<tr>\n<td>yltgdhs<\/td>\n<td>string<\/td>\n<td>\u5df2\u6d41\u901a\u80a1\u4e1c\u6237\u6570<\/td>\n<\/tr>\n<tr>\n<td>wltgdhs<\/td>\n<td>string<\/td>\n<td>\u672a\u6d41\u901a\u80a1\u4e1c\u6237\u6570<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u26a0\ufe0f \u4e09\u4e2a\u63a5\u53e3\u4e0d\u8fd4\u56de\u4efb\u4f55 chip_concentration&#xff08;\u7b79\u7801\u96c6\u4e2d\u5ea6&#xff09;\u3001holder_change_rate&#xff08;\u6237\u6570\u53d8\u5316\u7387&#xff09;\u4e4b\u7c7b\u7684\u9884\u5236\u6307\u6807\u3002\u80a1\u4e1c\u6237\u6570\u73af\u6bd4\u3001\u7b79\u7801\u4fe1\u53f7\u5fc5\u987b\u81ea\u5df1\u7b97\u3002<\/p>\n<hr \/>\n<h3>\u4e8c\u3001\u81ea\u7814\u884d\u751f\u6307\u6807&#xff08;\u63a5\u53e3\u4ec5\u8fd4\u56de\u539f\u59cb\u88f8\u5b57\u6bb5&#xff0c;\u4ee5\u4e0b\u6307\u6807\u4e3a\u81ea\u7814&#xff09;<\/h3>\n<p>\u63a5\u53e3\u4ec5\u8fd4\u56de\u539f\u59cb\u88f8\u5b57\u6bb5&#xff0c;\u4ee5\u4e0b\u6307\u6807\u4e3a\u81ea\u7814\u3002<\/p>\n<p>\u672c\u7bc7\u5728\u539f\u59cb\u5b57\u6bb5\u4e4b\u4e0a&#xff0c;\u7528\u4ee3\u7801\u81ea\u7814\u4ee5\u4e0b\u4e09\u7c7b\u6307\u6807&#xff0c;\u5168\u90e8\u4e0d\u4f9d\u8d56\u4efb\u4f55\u9884\u5236\u56e0\u5b50&#xff1a;<\/p>\n<li>\u524d\u5341\u5927\u80a1\u4e1c\u7d2f\u8ba1\u6301\u80a1\u6bd4\u4f8b &#061; \u6309 jzrq \u5206\u7ec4&#xff0c;\u5bf9 cgbl&#xff08;\u6301\u80a1\u6bd4\u4f8b&#xff09;\u6c42\u548c\u3002\u63a5\u53e3\u53ea\u7ed9\u6bcf\u4f4d\u80a1\u4e1c\u7684 cgbl&#xff0c;\u5341\u5927\u5408\u8ba1\u9700\u81ea\u5df1\u805a\u5408\u3002<\/li>\n<li>\u524d\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u7d2f\u8ba1\u6301\u80a1\u6bd4\u4f8b &#061; \u540c\u4e0a&#xff0c;\u4f5c\u7528\u4e8e flowholder \u7684 cgbl\u3002<\/li>\n<li>\u80a1\u4e1c\u6237\u6570\u73af\u6bd4\u53d8\u5316\u7387 &#061; (\u672c\u671f gdzs \u2212 \u4e0a\u671f gdzs) \/ \u4e0a\u671f gdzs \u00d7 100%&#xff0c;\u6309 jzrq \u6392\u5e8f\u540e\u9010\u671f\u8ba1\u7b97\u3002<\/li>\n<li>\u7b79\u7801\u96c6\u4e2d \/ \u5206\u6563\u4fe1\u53f7 &#061; \u4f9d\u636e gdzs \u73af\u6bd4\u65b9\u5411\u5224\u5b9a&#xff1a;\u6237\u6570\u4e0b\u964d \u2192 \u7b79\u7801\u8d8b\u4e8e\u96c6\u4e2d&#xff08;\u4eba\u5747\u6301\u80a1\u4e0a\u5347&#xff09;&#xff1b;\u6237\u6570\u4e0a\u5347 \u2192 \u7b79\u7801\u8d8b\u4e8e\u5206\u6563&#xff08;\u6563\u6237\u5316&#xff09;\u3002\u8be5\u4fe1\u53f7\u5b8c\u5168\u7531 gdzs \u65f6\u5e8f\u6d3e\u751f&#xff0c;\u65e0\u9884\u5236\u5b57\u6bb5\u3002<\/li>\n<p>\u3010\u4ec5\u4e3a\u6570\u636e\u6f14\u793a&#xff0c;\u4e0d\u6784\u6210\u6295\u8d44\u5efa\u8bae\u3011<\/p>\n<hr \/>\n<h3>\u4e09\u3001\u6570\u636e\u8868\u8bbe\u8ba1<\/h3>\n<p>\u4e09\u5f20\u8868\u5206\u522b\u627f\u8f7d\u4e09\u7c7b\u6570\u636e&#xff0c;\u5747\u5e26 UNIQUE \u9632\u91cd&#xff0c;\u6309\u62a5\u544a\u671f&#xff08;jzrq&#xff09;\u5f52\u6863&#xff0c;\u4fdd\u8bc1\u91cd\u590d\u91c7\u96c6\u5e42\u7b49\u3002<\/p>\n<h4>3.1 top_holder&#xff08;\u5341\u5927\u80a1\u4e1c&#xff09;<\/h4>\n<table>\n<tr>\u5b57\u6bb5\u540d\u7c7b\u578b\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>stock_code<\/td>\n<td>TEXT<\/td>\n<td>\u80a1\u7968\u4ee3\u7801&#xff08;\u5e26\u540e\u7f00&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>ggrq<\/td>\n<td>TEXT<\/td>\n<td>\u516c\u544a\u65e5\u671f<\/td>\n<\/tr>\n<tr>\n<td>jzrq<\/td>\n<td>TEXT<\/td>\n<td>\u622a\u6b62\u65e5\u671f&#xff08;\u62a5\u544a\u671f&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>gdmc<\/td>\n<td>TEXT<\/td>\n<td>\u80a1\u4e1c\u540d\u79f0<\/td>\n<\/tr>\n<tr>\n<td>gdlx<\/td>\n<td>TEXT<\/td>\n<td>\u80a1\u4e1c\u7c7b\u578b<\/td>\n<\/tr>\n<tr>\n<td>cgsl<\/td>\n<td>REAL<\/td>\n<td>\u6301\u80a1\u6570\u91cf<\/td>\n<\/tr>\n<tr>\n<td>bdyy<\/td>\n<td>TEXT<\/td>\n<td>\u53d8\u52a8\u539f\u56e0<\/td>\n<\/tr>\n<tr>\n<td>cgbl<\/td>\n<td>REAL<\/td>\n<td>\u6301\u80a1\u6bd4\u4f8b<\/td>\n<\/tr>\n<tr>\n<td>gfxz<\/td>\n<td>TEXT<\/td>\n<td>\u80a1\u4efd\u6027\u8d28<\/td>\n<\/tr>\n<tr>\n<td>cgpm<\/td>\n<td>INTEGER<\/td>\n<td>\u6301\u80a1\u6392\u540d<\/td>\n<\/tr>\n<tr>\n<td>UNIQUE(stock_code,jzrq,cgpm)<\/td>\n<td><\/td>\n<td>\u8054\u5408\u552f\u4e00&#xff0c;\u9632\u6b62\u540c\u62a5\u544a\u671f\u91cd\u590d\u5165\u5e93<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>3.2 flow_holder&#xff08;\u5341\u5927\u6d41\u901a\u80a1\u4e1c&#xff09;<\/h4>\n<table>\n<tr>\u5b57\u6bb5\u540d\u7c7b\u578b\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>stock_code<\/td>\n<td>TEXT<\/td>\n<td>\u80a1\u7968\u4ee3\u7801&#xff08;\u5e26\u540e\u7f00&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>ggrq<\/td>\n<td>TEXT<\/td>\n<td>\u516c\u544a\u65e5\u671f<\/td>\n<\/tr>\n<tr>\n<td>jzrq<\/td>\n<td>TEXT<\/td>\n<td>\u622a\u6b62\u65e5\u671f&#xff08;\u62a5\u544a\u671f&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>gdmc<\/td>\n<td>TEXT<\/td>\n<td>\u80a1\u4e1c\u540d\u79f0<\/td>\n<\/tr>\n<tr>\n<td>gdlx<\/td>\n<td>TEXT<\/td>\n<td>\u80a1\u4e1c\u7c7b\u578b<\/td>\n<\/tr>\n<tr>\n<td>cgsl<\/td>\n<td>REAL<\/td>\n<td>\u6301\u80a1\u6570\u91cf<\/td>\n<\/tr>\n<tr>\n<td>bdyy<\/td>\n<td>TEXT<\/td>\n<td>\u53d8\u52a8\u539f\u56e0<\/td>\n<\/tr>\n<tr>\n<td>cgbl<\/td>\n<td>REAL<\/td>\n<td>\u6301\u80a1\u6bd4\u4f8b<\/td>\n<\/tr>\n<tr>\n<td>gfxz<\/td>\n<td>TEXT<\/td>\n<td>\u80a1\u4efd\u6027\u8d28<\/td>\n<\/tr>\n<tr>\n<td>cgpm<\/td>\n<td>INTEGER<\/td>\n<td>\u6301\u80a1\u6392\u540d<\/td>\n<\/tr>\n<tr>\n<td>UNIQUE(stock_code,jzrq,cgpm)<\/td>\n<td><\/td>\n<td>\u8054\u5408\u552f\u4e00&#xff0c;\u9632\u6b62\u540c\u62a5\u544a\u671f\u91cd\u590d\u5165\u5e93<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>3.3 holder_count&#xff08;\u80a1\u4e1c\u6237\u6570&#xff09;<\/h4>\n<table>\n<tr>\u5b57\u6bb5\u540d\u7c7b\u578b\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>stock_code<\/td>\n<td>TEXT<\/td>\n<td>\u80a1\u7968\u4ee3\u7801&#xff08;\u5e26\u540e\u7f00&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>jzrq<\/td>\n<td>TEXT<\/td>\n<td>\u622a\u6b62\u65e5\u671f&#xff08;\u62a5\u544a\u671f&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>gdzs<\/td>\n<td>REAL<\/td>\n<td>\u80a1\u4e1c\u603b\u6570<\/td>\n<\/tr>\n<tr>\n<td>agdhs<\/td>\n<td>REAL<\/td>\n<td>A\u80a1\u4e1c\u6237\u6570<\/td>\n<\/tr>\n<tr>\n<td>bgdhs<\/td>\n<td>REAL<\/td>\n<td>B\u80a1\u4e1c\u6237\u6570<\/td>\n<\/tr>\n<tr>\n<td>hgdhs<\/td>\n<td>REAL<\/td>\n<td>H\u80a1\u4e1c\u6237\u6570<\/td>\n<\/tr>\n<tr>\n<td>yltgdhs<\/td>\n<td>REAL<\/td>\n<td>\u5df2\u6d41\u901a\u80a1\u4e1c\u6237\u6570<\/td>\n<\/tr>\n<tr>\n<td>wltgdhs<\/td>\n<td>REAL<\/td>\n<td>\u672a\u6d41\u901a\u80a1\u4e1c\u6237\u6570<\/td>\n<\/tr>\n<tr>\n<td>UNIQUE(stock_code,jzrq)<\/td>\n<td><\/td>\n<td>\u8054\u5408\u552f\u4e00&#xff0c;\u9632\u6b62\u540c\u62a5\u544a\u671f\u91cd\u590d\u5165\u5e93<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>\u56db\u3001\u5b8c\u6574\u53ef\u8fd0\u884c\u4ee3\u7801<\/h3>\n<p>\u4ee5\u4e0b\u57fa\u7840\u4ee3\u7801\u5757\u9010\u5b57\u590d\u7528\u5168\u7cfb\u5217\u7edf\u4e00\u7ea6\u5b9a&#xff08;\u7b7e\u540d\u4e0d\u53d8&#xff09;&#xff0c;\u968f\u540e\u4e3a\u672c\u7bc7\u65b0\u589e\u903b\u8f91\u3002\u6f14\u793a\u7528 limit&#061;N \u63a7\u5236\u89c4\u6a21&#xff0c;\u907f\u514d\u5237\u7206\u63a5\u53e3\u914d\u989d\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> requests<br \/>\n<span class=\"token keyword\">import<\/span> logging<br \/>\n<span class=\"token keyword\">import<\/span> time<br \/>\n<span class=\"token keyword\">import<\/span> pandas <span class=\"token keyword\">as<\/span> pd<br \/>\n<span class=\"token keyword\">import<\/span> numpy <span class=\"token keyword\">as<\/span> np<br \/>\n<span class=\"token keyword\">import<\/span> sqlite3<br \/>\n<span class=\"token keyword\">from<\/span> apscheduler<span class=\"token punctuation\">.<\/span>schedulers<span class=\"token punctuation\">.<\/span>background <span class=\"token keyword\">import<\/span> BackgroundScheduler<\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u5168\u5c40\u914d\u7f6e &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\nLICENCE <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u4f60\u7684licence&#034;<\/span><br \/>\nDB_PATH <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;quant.db&#034;<\/span><br \/>\nLOG_FILE <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;quant_collect.log&#034;<\/span><\/p>\n<p><span class=\"token comment\"># &#8212;&#8212;&#8212;-\u65e5\u5fd7\u521d\u59cb\u5316&#8212;&#8212;&#8212;-<\/span><br \/>\nlogging<span class=\"token punctuation\">.<\/span>basicConfig<span class=\"token punctuation\">(<\/span><br \/>\n    filename<span class=\"token operator\">&#061;<\/span>LOG_FILE<span class=\"token punctuation\">,<\/span><br \/>\n    level<span class=\"token operator\">&#061;<\/span>logging<span class=\"token punctuation\">.<\/span>INFO<span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token builtin\">format<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;%(asctime)s %(levelname)s %(message)s&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    datefmt<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;%Y-%m-%d %H:%M:%S&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    filemode<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;a&#034;<\/span><br \/>\n<span class=\"token punctuation\">)<\/span><br \/>\nlogger <span class=\"token operator\">&#061;<\/span> logging<span class=\"token punctuation\">.<\/span>getLogger<span class=\"token punctuation\">(<\/span>__name__<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#8212;&#8212;&#8212;-\u5e26\u91cd\u8bd5HTTP\u8bf7\u6c42&#xff08;\u590d\u7528&#xff09;&#8212;&#8212;&#8212;-<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">biying_api_get_retry<\/span><span class=\"token punctuation\">(<\/span>full_url<span class=\"token punctuation\">,<\/span> timeout<span class=\"token operator\">&#061;<\/span><span class=\"token number\">15<\/span><span class=\"token punctuation\">,<\/span> max_retry<span class=\"token operator\">&#061;<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> attempt <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> max_retry <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            resp <span class=\"token operator\">&#061;<\/span> requests<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span>full_url<span class=\"token punctuation\">,<\/span> timeout<span class=\"token operator\">&#061;<\/span>timeout<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> resp<span class=\"token punctuation\">.<\/span>status_code <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">return<\/span> resp<span class=\"token punctuation\">.<\/span>json<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            logger<span class=\"token punctuation\">.<\/span>warning<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;HTTP\u72b6\u6001\u7801\u5f02\u5e38&#xff1a;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>resp<span class=\"token punctuation\">.<\/span>status_code<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;\u7b2c<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>attempt<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\u6b21\u91cd\u8bd5&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">except<\/span> Exception <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span><br \/>\n            logger<span class=\"token punctuation\">.<\/span>warning<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u7f51\u7edc\u8bf7\u6c42\u5f02\u5e38&#xff0c;\u7b2c<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>attempt<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\u6b21\u91cd\u8bd5&#xff0c;\u9519\u8bef\u4fe1\u606f&#xff1a;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        time<span class=\"token punctuation\">.<\/span>sleep<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    logger<span class=\"token punctuation\">.<\/span>error<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u8fbe\u5230\u6700\u5927\u91cd\u8bd5\u6b21\u6570&#xff0c;\u63a5\u53e3\u8bf7\u6c42\u5931\u8d25&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token comment\"># &#8212;&#8212;&#8212;-\u80a1\u7968\u5217\u8868&#xff08;\u590d\u7528&#xff0c;\u4f5c\u4e3a\u4ee3\u7801\/\u4ea4\u6613\u6240\u53c2\u6570\u6765\u6e90&#xff09;&#8212;&#8212;&#8212;-<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">fetch_stock_list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    url <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;http:\/\/api.biyingapi.com\/hslt\/list\/<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>LICENCE<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><br \/>\n    <span class=\"token keyword\">return<\/span> biying_api_get_retry<span class=\"token punctuation\">(<\/span>url<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#8212;&#8212;&#8212;-\u4ea4\u6613\u6240\u540e\u7f00&#xff08;\u590d\u7528\u7b2c13\u7bc7\u903b\u8f91&#xff09;&#8212;&#8212;&#8212;-<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">with_exchange_suffix<\/span><span class=\"token punctuation\">(<\/span>stock_code<span class=\"token punctuation\">,<\/span> exchange<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u8d22\u62a5\u63a5\u53e3\u8981\u6c42\u5e26\u4ea4\u6613\u6240\u540e\u7f00&#xff1a;sh-&gt;.SH, sz-&gt;.SZ&#034;&#034;&#034;<\/span><br \/>\n    suffix <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;SH&#034;<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>exchange<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>lower<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;sh&#034;<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token string\">&#034;SZ&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>stock_code<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">.<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>suffix<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;\u672c\u7bc7\u65b0\u589e&#xff1a;\u80a1\u4e1c\u6570\u636e&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">init_holder_tables<\/span><span class=\"token punctuation\">(<\/span>db_name<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;quant.db&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    conn <span class=\"token operator\">&#061;<\/span> sqlite3<span class=\"token punctuation\">.<\/span>connect<span class=\"token punctuation\">(<\/span>db_name<span class=\"token punctuation\">)<\/span><br \/>\n    cur <span class=\"token operator\">&#061;<\/span> conn<span class=\"token punctuation\">.<\/span>cursor<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    cur<span class=\"token punctuation\">.<\/span>execute<span class=\"token punctuation\">(<\/span><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    CREATE TABLE IF NOT EXISTS top_holder (<br \/>\n        id INTEGER PRIMARY KEY AUTOINCREMENT,<br \/>\n        stock_code TEXT, ggrq TEXT, jzrq TEXT,<br \/>\n        gdmc TEXT, gdlx TEXT, cgsl REAL, bdyy TEXT,<br \/>\n        cgbl REAL, gfxz TEXT, cgpm INTEGER,<br \/>\n        UNIQUE(stock_code,jzrq,cgpm)<br \/>\n    )<br \/>\n    &#034;&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    cur<span class=\"token punctuation\">.<\/span>execute<span class=\"token punctuation\">(<\/span><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    CREATE TABLE IF NOT EXISTS flow_holder (<br \/>\n        id INTEGER PRIMARY KEY AUTOINCREMENT,<br \/>\n        stock_code TEXT, ggrq TEXT, jzrq TEXT,<br \/>\n        gdmc TEXT, gdlx TEXT, cgsl REAL, bdyy TEXT,<br \/>\n        cgbl REAL, gfxz TEXT, cgpm INTEGER,<br \/>\n        UNIQUE(stock_code,jzrq,cgpm)<br \/>\n    )<br \/>\n    &#034;&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    cur<span class=\"token punctuation\">.<\/span>execute<span class=\"token punctuation\">(<\/span><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    CREATE TABLE IF NOT EXISTS holder_count (<br \/>\n        id INTEGER PRIMARY KEY AUTOINCREMENT,<br \/>\n        stock_code TEXT, jzrq TEXT,<br \/>\n        gdzs REAL, agdhs REAL, bgdhs REAL, hgdhs REAL,<br \/>\n        yltgdhs REAL, wltgdhs REAL,<br \/>\n        UNIQUE(stock_code,jzrq)<br \/>\n    )<br \/>\n    &#034;&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    conn<span class=\"token punctuation\">.<\/span>commit<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    conn<span class=\"token punctuation\">.<\/span>close<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    logger<span class=\"token punctuation\">.<\/span>info<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u80a1\u4e1c\u6570\u636e\u8868\u521d\u59cb\u5316\u5b8c\u6210&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>HOLDER_COLS <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;ggrq&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;gdmc&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;gdlx&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;cgsl&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;bdyy&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;cgbl&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;gfxz&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;cgpm&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\nHM_COLS <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;gdzs&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;agdhs&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;bgdhs&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;hgdhs&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;yltgdhs&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;wltgdhs&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">fetch_holder_api<\/span><span class=\"token punctuation\">(<\/span>path_name<span class=\"token punctuation\">,<\/span> stock_code_with_suffix<span class=\"token punctuation\">,<\/span> st<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">,<\/span> et<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;path_name \u53d6\u503c&#xff1a;topholder \/ flowholder \/ hm&#xff0c;\u5747\u5e26\u540e\u7f00 &#043; st\/et&#034;&#034;&#034;<\/span><br \/>\n    base <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;http:\/\/api.biyingapi.com\/hsstock\/financial\/<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>path_name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\/<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>stock_code_with_suffix<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\/<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>LICENCE<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><br \/>\n    url <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>base<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">?st&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>st<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&amp;et&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>et<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>st <span class=\"token keyword\">and<\/span> et<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">else<\/span> base<br \/>\n    <span class=\"token keyword\">return<\/span> biying_api_get_retry<span class=\"token punctuation\">(<\/span>url<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">clean_holder<\/span><span class=\"token punctuation\">(<\/span>raw_json<span class=\"token punctuation\">,<\/span> stock_code_with_suffix<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    df <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">(<\/span>raw_json<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> df<br \/>\n    df <span class=\"token operator\">&#061;<\/span> df<span class=\"token punctuation\">.<\/span>replace<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token boolean\">None<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;null&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> np<span class=\"token punctuation\">.<\/span>nan<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> dcol <span class=\"token keyword\">in<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;ggrq&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> dcol <span class=\"token keyword\">in<\/span> df<span class=\"token punctuation\">.<\/span>columns<span class=\"token punctuation\">:<\/span><br \/>\n            df<span class=\"token punctuation\">[<\/span>dcol<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>to_datetime<span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span>dcol<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> errors<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;coerce&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>dt<span class=\"token punctuation\">.<\/span>strftime<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;%Y-%m-%d&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> c <span class=\"token keyword\">in<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cgsl&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;cgbl&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> c <span class=\"token keyword\">in<\/span> df<span class=\"token punctuation\">.<\/span>columns<span class=\"token punctuation\">:<\/span><br \/>\n            df<span class=\"token punctuation\">[<\/span>c<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>to_numeric<span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span>c<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> errors<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;coerce&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;cgpm&#034;<\/span> <span class=\"token keyword\">in<\/span> df<span class=\"token punctuation\">.<\/span>columns<span class=\"token punctuation\">:<\/span><br \/>\n        df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cgpm&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>to_numeric<span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cgpm&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> errors<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;coerce&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> stock_code_with_suffix<br \/>\n    keep <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;<\/span> HOLDER_COLS<br \/>\n    keep <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>c <span class=\"token keyword\">for<\/span> c <span class=\"token keyword\">in<\/span> keep <span class=\"token keyword\">if<\/span> c <span class=\"token keyword\">in<\/span> df<span class=\"token punctuation\">.<\/span>columns<span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> df<span class=\"token punctuation\">[<\/span>keep<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>dropna<span class=\"token punctuation\">(<\/span>subset<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;cgpm&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">clean_holder_count<\/span><span class=\"token punctuation\">(<\/span>raw_json<span class=\"token punctuation\">,<\/span> stock_code_with_suffix<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    df <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">(<\/span>raw_json<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> df<br \/>\n    df <span class=\"token operator\">&#061;<\/span> df<span class=\"token punctuation\">.<\/span>replace<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token boolean\">None<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;null&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> np<span class=\"token punctuation\">.<\/span>nan<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;jzrq&#034;<\/span> <span class=\"token keyword\">in<\/span> df<span class=\"token punctuation\">.<\/span>columns<span class=\"token punctuation\">:<\/span><br \/>\n        df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>to_datetime<span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> errors<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;coerce&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>dt<span class=\"token punctuation\">.<\/span>strftime<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;%Y-%m-%d&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> c <span class=\"token keyword\">in<\/span> HM_COLS<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> c <span class=\"token keyword\">in<\/span> df<span class=\"token punctuation\">.<\/span>columns <span class=\"token keyword\">and<\/span> c <span class=\"token operator\">!&#061;<\/span> <span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            df<span class=\"token punctuation\">[<\/span>c<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>to_numeric<span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span>c<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> errors<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;coerce&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> stock_code_with_suffix<br \/>\n    keep <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;<\/span> HM_COLS<br \/>\n    keep <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>c <span class=\"token keyword\">for<\/span> c <span class=\"token keyword\">in<\/span> keep <span class=\"token keyword\">if<\/span> c <span class=\"token keyword\">in<\/span> df<span class=\"token punctuation\">.<\/span>columns<span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> df<span class=\"token punctuation\">[<\/span>keep<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>dropna<span class=\"token punctuation\">(<\/span>subset<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">save_df_ignore<\/span><span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">,<\/span> table<span class=\"token punctuation\">,<\/span> cols<span class=\"token punctuation\">,<\/span> db_name<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;quant.db&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;UNIQUE \u9632\u91cd &#043; INSERT OR IGNORE \u5e42\u7b49\u5165\u5e93&#xff08;\u6ee1\u8db3 CONVENTIONS \u5165\u5e93\u7ea6\u5b9a&#xff09;&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span><br \/>\n    conn <span class=\"token operator\">&#061;<\/span> sqlite3<span class=\"token punctuation\">.<\/span>connect<span class=\"token punctuation\">(<\/span>db_name<span class=\"token punctuation\">)<\/span><br \/>\n    cur <span class=\"token operator\">&#061;<\/span> conn<span class=\"token punctuation\">.<\/span>cursor<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    placeholders <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;,&#034;<\/span><span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;?&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>cols<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    col_names <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;,&#034;<\/span><span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span>cols<span class=\"token punctuation\">)<\/span><br \/>\n    sql <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;INSERT OR IGNORE INTO <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>table<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> (<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>col_names<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">) VALUES (<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>placeholders<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">)&#034;<\/span><\/span><br \/>\n    <span class=\"token keyword\">for<\/span> _<span class=\"token punctuation\">,<\/span> row <span class=\"token keyword\">in<\/span> df<span class=\"token punctuation\">[<\/span>cols<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>iterrows<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        cur<span class=\"token punctuation\">.<\/span>execute<span class=\"token punctuation\">(<\/span>sql<span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">tuple<\/span><span class=\"token punctuation\">(<\/span>row<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    conn<span class=\"token punctuation\">.<\/span>commit<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    conn<span class=\"token punctuation\">.<\/span>close<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    logger<span class=\"token punctuation\">.<\/span>info<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>table<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5165\u5e93 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u6761&#xff08;\u5df2\u5ffd\u7565\u91cd\u590d&#xff09;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#8212;&#8212;&#8212;-\u672c\u7bc7\u6838\u5fc3&#xff1a;\u81ea\u7814\u884d\u751f\u6307\u6807&#xff08;\u63a5\u53e3\u4ec5\u8fd4\u56de\u539f\u59cb\u88f8\u5b57\u6bb5&#xff09;&#8212;&#8212;&#8212;-<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">calc_top10_holding_ratio<\/span><span class=\"token punctuation\">(<\/span>db_name<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;quant.db&#034;<\/span><span class=\"token punctuation\">,<\/span> table<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;top_holder&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u81ea\u7814&#xff1a;\u524d\u5341\u5927&#xff08;\u6d41\u901a&#xff09;\u80a1\u4e1c\u7d2f\u8ba1\u6301\u80a1\u6bd4\u4f8b &#061; \u6309 jzrq \u5206\u7ec4 sum(cgbl)&#034;&#034;&#034;<\/span><br \/>\n    conn <span class=\"token operator\">&#061;<\/span> sqlite3<span class=\"token punctuation\">.<\/span>connect<span class=\"token punctuation\">(<\/span>db_name<span class=\"token punctuation\">)<\/span><br \/>\n    df <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>read_sql<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;SELECT stock_code, jzrq, cgbl FROM <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>table<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">,<\/span> conn<span class=\"token punctuation\">)<\/span><br \/>\n    conn<span class=\"token punctuation\">.<\/span>close<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">0<\/span> <span class=\"token keyword\">or<\/span> df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cgbl&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>isna<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token builtin\">all<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    grp <span class=\"token operator\">&#061;<\/span> df<span class=\"token punctuation\">.<\/span>groupby<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> as_index<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cgbl&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span><span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    grp <span class=\"token operator\">&#061;<\/span> grp<span class=\"token punctuation\">.<\/span>rename<span class=\"token punctuation\">(<\/span>columns<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;cgbl&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;top10_cgbl_sum&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> grp<span class=\"token punctuation\">.<\/span>sort_values<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">calc_holder_count_mom<\/span><span class=\"token punctuation\">(<\/span>db_name<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;quant.db&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u81ea\u7814&#xff1a;\u80a1\u4e1c\u6237\u6570(gdzs)\u73af\u6bd4\u53d8\u5316\u7387 &#043; \u7b79\u7801\u96c6\u4e2d\/\u5206\u6563\u4fe1\u53f7&#xff0c;\u6309 jzrq \u5347\u5e8f&#034;&#034;&#034;<\/span><br \/>\n    conn <span class=\"token operator\">&#061;<\/span> sqlite3<span class=\"token punctuation\">.<\/span>connect<span class=\"token punctuation\">(<\/span>db_name<span class=\"token punctuation\">)<\/span><br \/>\n    df <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>read_sql<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;SELECT stock_code, jzrq, gdzs FROM holder_count&#034;<\/span><span class=\"token punctuation\">,<\/span> conn<span class=\"token punctuation\">)<\/span><br \/>\n    conn<span class=\"token punctuation\">.<\/span>close<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">0<\/span> <span class=\"token keyword\">or<\/span> df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gdzs&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>isna<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token builtin\">all<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    df <span class=\"token operator\">&#061;<\/span> df<span class=\"token punctuation\">.<\/span>sort_values<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>reset_index<span class=\"token punctuation\">(<\/span>drop<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gdzs_prev&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> df<span class=\"token punctuation\">.<\/span>groupby<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gdzs&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>shift<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;holder_mom_pct&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gdzs&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#8211;<\/span> df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gdzs_prev&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gdzs_prev&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">100<\/span><br \/>\n    <span class=\"token comment\"># \u81ea\u7814\u7b79\u7801\u4fe1\u53f7&#xff1a;\u6237\u6570\u4e0b\u964d-&gt;\u96c6\u4e2d&#xff1b;\u4e0a\u5347-&gt;\u5206\u6563<\/span><br \/>\n    df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;chip_signal&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> np<span class=\"token punctuation\">.<\/span>where<span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;holder_mom_pct&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u96c6\u4e2d&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                          np<span class=\"token punctuation\">.<\/span>where<span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;holder_mom_pct&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u5206\u6563&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u6301\u5e73&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> df<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">collect_one_holder<\/span><span class=\"token punctuation\">(<\/span>stock_code<span class=\"token punctuation\">,<\/span> exchange<span class=\"token punctuation\">,<\/span> st<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">,<\/span> et<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    code_suf <span class=\"token operator\">&#061;<\/span> with_exchange_suffix<span class=\"token punctuation\">(<\/span>stock_code<span class=\"token punctuation\">,<\/span> exchange<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> path<span class=\"token punctuation\">,<\/span> table <span class=\"token keyword\">in<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;topholder&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;top_holder&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;flowholder&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;flow_holder&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        raw <span class=\"token operator\">&#061;<\/span> fetch_holder_api<span class=\"token punctuation\">(<\/span>path<span class=\"token punctuation\">,<\/span> code_suf<span class=\"token punctuation\">,<\/span> st<span class=\"token punctuation\">,<\/span> et<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> raw<span class=\"token punctuation\">:<\/span><br \/>\n            clean <span class=\"token operator\">&#061;<\/span> clean_holder<span class=\"token punctuation\">(<\/span>raw<span class=\"token punctuation\">,<\/span> code_suf<span class=\"token punctuation\">)<\/span><br \/>\n            save_df_ignore<span class=\"token punctuation\">(<\/span>clean<span class=\"token punctuation\">,<\/span> table<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;<\/span> HOLDER_COLS<span class=\"token punctuation\">)<\/span><br \/>\n    raw_hm <span class=\"token operator\">&#061;<\/span> fetch_holder_api<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hm&#034;<\/span><span class=\"token punctuation\">,<\/span> code_suf<span class=\"token punctuation\">,<\/span> st<span class=\"token punctuation\">,<\/span> et<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> raw_hm<span class=\"token punctuation\">:<\/span><br \/>\n        clean_hm <span class=\"token operator\">&#061;<\/span> clean_holder_count<span class=\"token punctuation\">(<\/span>raw_hm<span class=\"token punctuation\">,<\/span> code_suf<span class=\"token punctuation\">)<\/span><br \/>\n        save_df_ignore<span class=\"token punctuation\">(<\/span>clean_hm<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;holder_count&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;<\/span> HM_COLS<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">collect_all_holder<\/span><span class=\"token punctuation\">(<\/span>limit<span class=\"token operator\">&#061;<\/span><span class=\"token number\">20<\/span><span class=\"token punctuation\">,<\/span> st<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">,<\/span> et<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u793a\u4f8b&#xff1a;\u4ec5\u91c7\u96c6\u524d limit \u53ea\u4f5c\u4e3a\u6f14\u793a&#xff0c;\u5168\u91cf\u8bf7\u53bb\u6389 .head(limit)\u3010\u4ec5\u4e3a\u6570\u636e\u6f14\u793a&#xff0c;\u4e0d\u6784\u6210\u6295\u8d44\u5efa\u8bae\u3011&#034;&#034;&#034;<\/span><br \/>\n    init_holder_tables<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    raw_list <span class=\"token operator\">&#061;<\/span> fetch_stock_list<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> raw_list<span class=\"token punctuation\">:<\/span><br \/>\n        logger<span class=\"token punctuation\">.<\/span>error<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u80a1\u7968\u5217\u8868\u4e3a\u7a7a&#xff0c;\u7ec8\u6b62\u91c7\u96c6&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">return<\/span><br \/>\n    df_list <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">(<\/span>raw_list<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> _<span class=\"token punctuation\">,<\/span> row <span class=\"token keyword\">in<\/span> df_list<span class=\"token punctuation\">.<\/span>head<span class=\"token punctuation\">(<\/span>limit<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>iterrows<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            collect_one_holder<span class=\"token punctuation\">(<\/span>row<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;dm&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> row<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;jys&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> st<span class=\"token punctuation\">,<\/span> et<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">except<\/span> Exception <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span><br \/>\n            logger<span class=\"token punctuation\">.<\/span>warning<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u6807\u7684<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>row<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;dm&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\u80a1\u4e1c\u6570\u636e\u91c7\u96c6\u5931\u8d25&#xff1a;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        time<span class=\"token punctuation\">.<\/span>sleep<span class=\"token punctuation\">(<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u63a7\u5236\u8bf7\u6c42\u9891\u7387<\/span><br \/>\n    <span class=\"token comment\"># \u81ea\u7814\u6307\u6807\u6f14\u793a\u8f93\u51fa<\/span><br \/>\n    top10 <span class=\"token operator\">&#061;<\/span> calc_top10_holding_ratio<span class=\"token punctuation\">(<\/span>table<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;top_holder&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    flow10 <span class=\"token operator\">&#061;<\/span> calc_top10_holding_ratio<span class=\"token punctuation\">(<\/span>table<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;flow_holder&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    mom <span class=\"token operator\">&#061;<\/span> calc_holder_count_mom<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">64<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u81ea\u7814\u884d\u751f\u6307\u6807\u6f14\u793a&#xff1a;\u5341\u5927\u80a1\u4e1c\u7d2f\u8ba1\u6301\u80a1 \/ \u80a1\u4e1c\u6237\u6570\u73af\u6bd4 \/ \u7b79\u7801\u4fe1\u53f7&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u3010\u4ec5\u4e3a\u6570\u636e\u6f14\u793a&#xff0c;\u4e0d\u6784\u6210\u6295\u8d44\u5efa\u8bae\u3011&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">64<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>top10<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n[\u524d\u5341\u5927\u80a1\u4e1c\u7d2f\u8ba1\u6301\u80a1\u6bd4\u4f8b] \u6700\u65b0\u4e00\u671f&#xff1a;&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>top10<span class=\"token punctuation\">.<\/span>sort_values<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>groupby<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>tail<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>to_string<span class=\"token punctuation\">(<\/span>index<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>flow10<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n[\u524d\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u7d2f\u8ba1\u6301\u80a1\u6bd4\u4f8b] \u6700\u65b0\u4e00\u671f&#xff1a;&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>flow10<span class=\"token punctuation\">.<\/span>sort_values<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>groupby<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>tail<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>to_string<span class=\"token punctuation\">(<\/span>index<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>mom<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n[\u80a1\u4e1c\u6237\u6570\u73af\u6bd4 &#043; \u7b79\u7801\u4fe1\u53f7] \u6700\u65b0\u4e00\u671f&#xff1a;&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>mom<span class=\"token punctuation\">.<\/span>sort_values<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>groupby<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>tail<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;stock_code&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;jzrq&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;gdzs&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;holder_mom_pct&#034;<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">&#034;chip_signal&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>to_string<span class=\"token punctuation\">(<\/span>index<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    logger<span class=\"token punctuation\">.<\/span>info<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u80a1\u4e1c\u6570\u636e\u91c7\u96c6\u4e0e\u81ea\u7814\u6307\u6807\u6f14\u793a\u5b8c\u6210&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">start_scheduler<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u80a1\u4e1c\u7c7b\u63a5\u53e3\u6570\u636e\u6bcf\u65e5 0 \u70b9\u66f4\u65b0&#xff0c;\u5b9a\u65f6 00:30 \u76d8\u540e\u91c7\u96c6&#034;&#034;&#034;<\/span><br \/>\n    sched <span class=\"token operator\">&#061;<\/span> BackgroundScheduler<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    sched<span class=\"token punctuation\">.<\/span>add_job<span class=\"token punctuation\">(<\/span>collect_all_holder<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;cron&#034;<\/span><span class=\"token punctuation\">,<\/span> hour<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> minute<span class=\"token operator\">&#061;<\/span><span class=\"token number\">30<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    sched<span class=\"token punctuation\">.<\/span>start<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    logger<span class=\"token punctuation\">.<\/span>info<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u80a1\u4e1c\u6570\u636e\u5b9a\u65f6\u4efb\u52a1\u5df2\u542f\u52a8&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    collect_all_holder<span class=\"token punctuation\">(<\/span>limit<span class=\"token operator\">&#061;<\/span><span class=\"token number\">20<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<hr \/>\n<h3>\u4e94\u3001\u4e1a\u52a1\u5173\u952e\u70b9<\/h3>\n<li>\u4e09\u4e2a\u63a5\u53e3\u5168\u90e8\u5e26\u540e\u7f00 &#043; ?st&#061;&amp;et&#061;&#xff1a;topholder \/ flowholder \/ hm \u5747\u8981\u6c42 .SZ\/.SH \u540e\u7f00&#xff0c;\u4e14\u4e0e cwzb \u7eaf 6 \u4f4d\u4ee3\u7801\u7684\u683c\u5f0f\u4e0d\u540c&#xff0c;\u52a1\u5fc5\u7ecf with_exchange_suffix \u8f6c\u6362&#xff0c;\u5426\u5219\u4f1a 404\u3002<\/li>\n<li>jzrq \u624d\u662f\u5f52\u6863\u7ef4\u5ea6&#xff1a;\u540c\u4e00\u516c\u53f8\u4f1a\u8fd4\u56de\u591a\u671f&#xff08;\u5b63\u62a5\/\u4e2d\u62a5\/\u5e74\u62a5&#xff09;&#xff0c;\u65f6\u5e8f\u5206\u6790\u6309 jzrq&#xff08;\u622a\u6b62\u65e5\u671f&#xff09;\u6392\u5e8f&#xff0c;\u4e0d\u8981\u62ff ggrq&#xff08;\u516c\u544a\u65e5\u671f&#xff09;\u5f53\u62a5\u544a\u671f\u3002<\/li>\n<li>hm \u63a5\u53e3\u5b57\u6bb5\u53e3\u5f84&#xff1a;\u6caa\u6df1\u7248 hm \u8fd4\u56de jzrq \/ gdzs \/ agdhs \/ bgdhs \/ hgdhs \/ yltgdhs \/ wltgdhs&#xff0c;\u6ca1\u6709 plrq&#xff1b;\u672c\u6587\u6309\u6caa\u6df1\u7248\u5b57\u6bb5\u5efa\u8868&#xff0c;\u4eac\u5e02\u7248\u53e6\u542b plrq \u516c\u544a\u65e5\u671f&#xff0c;\u5982\u9700\u5317\u4ea4\u6240\u6570\u636e\u5e94\u8865\u5217\u3002<\/li>\n<li>\u81ea\u7814\u6307\u6807\u4f9d\u8d56\u805a\u5408\u4e0e\u6392\u5e8f&#xff1a;\u7d2f\u8ba1\u6301\u80a1\u6bd4\u4f8b\u9760 groupby(jzrq)[&#034;cgbl&#034;].sum()&#xff0c;\u6237\u6570\u73af\u6bd4\u9760 groupby(stock_code)[&#034;gdzs&#034;].shift(1)&#xff0c;\u90fd\u5efa\u7acb\u5728 jzrq \u6b63\u786e\u6807\u51c6\u5316\u3001\u7a7a\u503c\u5df2 dropna \u7684\u524d\u63d0\u4e0b&#xff0c;\u5426\u5219\u4f1a\u7b97\u9519\u6216\u6f0f\u7b97\u3002<\/li>\n<li>UNIQUE &#043; INSERT OR IGNORE \u5e42\u7b49&#xff1a;\u4e09\u5f20\u8868\u5747\u8bbe\u8054\u5408\u552f\u4e00\u952e&#xff0c;\u91cd\u590d\u91c7\u96c6\u7528 INSERT OR IGNORE \u5ffd\u7565&#xff0c;\u907f\u514d to_sql(append) \u9047\u91cd\u590d\u4e3b\u952e\u62a5\u9519&#xff08;\u8be6\u89c1\u7b2c 14 \u7bc7\u4e1a\u52a1\u5173\u952e\u70b9&#xff09;\u3002<\/li>\n<hr \/>\n<h3>\u516d\u3001\u62d3\u5c55\u7ec3\u4e60<\/h3>\n<li>\u7528 top_holder \u4e0e flow_holder \u7684 gdmc&#xff08;\u80a1\u4e1c\u540d\u79f0&#xff09;\u5bf9\u6bd4&#xff0c;\u81ea\u7814\u300c\u5341\u5927\u80a1\u4e1c\u4e2d\u540c\u65f6\u4e5f\u662f\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u300d\u7684\u91cd\u5408\u540d\u5355&#xff08;\u7eaf\u96c6\u5408\u8fd0\u7b97&#xff0c;\u65e0\u9884\u5236\u5b57\u6bb5&#xff09;\u3002\u3010\u4ec5\u4e3a\u6570\u636e\u6f14\u793a&#xff0c;\u4e0d\u6784\u6210\u6295\u8d44\u5efa\u8bae\u3011<\/li>\n<li>\u628a calc_holder_count_mom \u7684\u300c\u96c6\u4e2d\/\u5206\u6563\u300d\u4fe1\u53f7\u8fde\u7eed N \u671f\u5224\u5b9a&#xff1a;\u82e5\u8fde\u7eed 3 \u671f chip_signal &#061;&#061; &#034;\u96c6\u4e2d&#034;&#xff0c;\u81ea\u7814\u6807\u8bb0\u4e3a\u300c\u6301\u7eed\u7b79\u7801\u96c6\u4e2d\u300d\u6807\u7684&#xff0c;\u7528\u4e8e\u89c2\u5bdf\u4e3b\u529b\u5438\u7b79\u8ff9\u8c61\u3002<\/li>\n<hr \/>\n<h3>\u4e03\u3001\u4e0b\u7bc7\u9884\u544a<\/h3>\n<p>\u7cfb\u5217\u7b2c 17 \u7bc7&#xff1a;\u89e3\u7981\u3001\u6253\u65b0\u6536\u76ca\u6570\u636e\u63a5\u53e3\u5b9e\u6218<\/p>\n<p>\u80a1\u4e1c\u7ed3\u6784\u770b\u7684\u662f\u300c\u8c01\u5728\u6301\u6709\u300d&#xff0c;\u800c\u89e3\u7981\u6570\u636e\u770b\u7684\u662f\u300c\u672a\u6765\u7b79\u7801\u4f9b\u7ed9\u538b\u529b\u4ece\u54ea\u6765\u300d\u3001\u6253\u65b0\u6536\u76ca\u770b\u7684\u662f\u300c\u65b0\u80a1\u7533\u8d2d\u7684\u5386\u53f2\u56de\u62a5\u300d\u3002\u4e0b\u4e00\u7bc7\u7528\u89e3\u7981\u63d0\u793a\u3001\u6253\u65b0\u6536\u76ca\u7c7b\u63a5\u53e3&#xff0c;\u628a\u4f9b\u7ed9\u7aef\u6570\u636e\u91c7\u56de\u6765&#xff0c;\u7ee7\u7eed\u575a\u6301\u300c\u63a5\u53e3\u53ea\u7ed9\u539f\u59cb\u88f8\u5b57\u6bb5\u3001\u5168\u90e8\u6307\u6807\u4ee3\u7801\u81ea\u7814\u300d\u7684\u7cfb\u5217\u94c1\u5f8b\u3002<\/p>\n<p>\u514d\u8d23\u7533\u660e&#xff1a;\u6587\u4e2d\u6240\u6709\u6570\u636e\u5904\u7406\u903b\u8f91\u4ec5\u4e3a\u7f16\u7a0b\u6f14\u793a&#xff0c;\u4ec5\u4e3a\u6570\u636e\u6f14\u793a&#xff0c;\u4e0d\u6784\u6210\u6295\u8d44\u5efa\u8bae\u3002\u5e02\u573a\u6709\u98ce\u9669&#xff0c;\u6295\u8d44\u9700\u8c28\u614e\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217&#xff08;\u7b2c 16 \u7bc7&#xff09;&#xff1a;\u80a1\u4e1c\u6570\u636e\u5206\u6790&#xff1a;\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a<br \/>\n\u524d\u8a00<br \/>\n\u7b2c 15 \u7bc7\u6211\u4eec\u7528\u8d22\u52a1\u4e3b\u8981\u6307\u6807\u63a5\u53e3\u505a\u4e86\u300c\u9ad8 ROE\u3001\u5408\u7406\u8d44\u4ea7\u8d1f\u503a\u7387\u300d\u7684\u81ea\u7814\u8d28\u91cf\u7b5b\u9009&#xff0c;\u5e76\u53cd\u590d\u5f3a\u8c03&#xff1a;\u63a5\u53e3\u8fd4\u56de\u7684 ROE\u3001\u6bdb\u5229\u7387\u3001\u8d44\u4ea7\u8d1f\u503a\u7387\u90fd\u53ea\u662f\u539f\u59cb\u88f8\u5b57\u6bb5&#xff0c;\u6ca1\u6709\u4efb\u4f55\u9884\u5236\u56e0\u5b50\u3002\u672c\u7bc7\u627f\u63a5\u7b2c 15 \u7bc7\u7ed3\u5c3e\u7684\u9884\u544a&#xff1a;\u7b2c 16 \u7bc7&#xff1a;\u80a1\u4e1c\u6570\u636e\u5b9e\u6218&#xff0c;\u5341\u5927\u80a1\u4e1c\u3001<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[11653,99,81,801,100,62],"topic":[],"class_list":["post-102166","post","type-post","status-publish","format-standard","hentry","category-server","tag-11653","tag-java","tag-python","tag-801","tag-100","tag-62"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217\uff08\u7b2c 16 \u7bc7\uff09\uff1a\u80a1\u4e1c\u6570\u636e\u5206\u6790\uff1a\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/102166.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217\uff08\u7b2c 16 \u7bc7\uff09\uff1a\u80a1\u4e1c\u6570\u636e\u5206\u6790\uff1a\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217&#xff08;\u7b2c 16 \u7bc7&#xff09;&#xff1a;\u80a1\u4e1c\u6570\u636e\u5206\u6790&#xff1a;\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a \u524d\u8a00 \u7b2c 15 \u7bc7\u6211\u4eec\u7528\u8d22\u52a1\u4e3b\u8981\u6307\u6807\u63a5\u53e3\u505a\u4e86\u300c\u9ad8 ROE\u3001\u5408\u7406\u8d44\u4ea7\u8d1f\u503a\u7387\u300d\u7684\u81ea\u7814\u8d28\u91cf\u7b5b\u9009&#xff0c;\u5e76\u53cd\u590d\u5f3a\u8c03&#xff1a;\u63a5\u53e3\u8fd4\u56de\u7684 ROE\u3001\u6bdb\u5229\u7387\u3001\u8d44\u4ea7\u8d1f\u503a\u7387\u90fd\u53ea\u662f\u539f\u59cb\u88f8\u5b57\u6bb5&#xff0c;\u6ca1\u6709\u4efb\u4f55\u9884\u5236\u56e0\u5b50\u3002\u672c\u7bc7\u627f\u63a5\u7b2c 15 \u7bc7\u7ed3\u5c3e\u7684\u9884\u544a&#xff1a;\u7b2c 16 \u7bc7&#xff1a;\u80a1\u4e1c\u6570\u636e\u5b9e\u6218&#xff0c;\u5341\u5927\u80a1\u4e1c\u3001\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/102166.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-08T01:33:27+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/102166.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/102166.html\",\"name\":\"\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217\uff08\u7b2c 16 \u7bc7\uff09\uff1a\u80a1\u4e1c\u6570\u636e\u5206\u6790\uff1a\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-09-08T01:33:27+00:00\",\"dateModified\":\"2026-09-08T01:33:27+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/102166.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/102166.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/102166.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217\uff08\u7b2c 16 \u7bc7\uff09\uff1a\u80a1\u4e1c\u6570\u636e\u5206\u6790\uff1a\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217\uff08\u7b2c 16 \u7bc7\uff09\uff1a\u80a1\u4e1c\u6570\u636e\u5206\u6790\uff1a\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/102166.html","og_locale":"zh_CN","og_type":"article","og_title":"\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217\uff08\u7b2c 16 \u7bc7\uff09\uff1a\u80a1\u4e1c\u6570\u636e\u5206\u6790\uff1a\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217&#xff08;\u7b2c 16 \u7bc7&#xff09;&#xff1a;\u80a1\u4e1c\u6570\u636e\u5206\u6790&#xff1a;\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a \u524d\u8a00 \u7b2c 15 \u7bc7\u6211\u4eec\u7528\u8d22\u52a1\u4e3b\u8981\u6307\u6807\u63a5\u53e3\u505a\u4e86\u300c\u9ad8 ROE\u3001\u5408\u7406\u8d44\u4ea7\u8d1f\u503a\u7387\u300d\u7684\u81ea\u7814\u8d28\u91cf\u7b5b\u9009&#xff0c;\u5e76\u53cd\u590d\u5f3a\u8c03&#xff1a;\u63a5\u53e3\u8fd4\u56de\u7684 ROE\u3001\u6bdb\u5229\u7387\u3001\u8d44\u4ea7\u8d1f\u503a\u7387\u90fd\u53ea\u662f\u539f\u59cb\u88f8\u5b57\u6bb5&#xff0c;\u6ca1\u6709\u4efb\u4f55\u9884\u5236\u56e0\u5b50\u3002\u672c\u7bc7\u627f\u63a5\u7b2c 15 \u7bc7\u7ed3\u5c3e\u7684\u9884\u544a&#xff1a;\u7b2c 16 \u7bc7&#xff1a;\u80a1\u4e1c\u6570\u636e\u5b9e\u6218&#xff0c;\u5341\u5927\u80a1\u4e1c\u3001","og_url":"https:\/\/www.wsisp.com\/helps\/102166.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-09-08T01:33:27+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"8 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/102166.html","url":"https:\/\/www.wsisp.com\/helps\/102166.html","name":"\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217\uff08\u7b2c 16 \u7bc7\uff09\uff1a\u80a1\u4e1c\u6570\u636e\u5206\u6790\uff1a\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-09-08T01:33:27+00:00","dateModified":"2026-09-08T01:33:27+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/102166.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/102166.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/102166.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"\u91cf\u5316\u6570\u636e\u5f00\u53d1\u5b9e\u6218\u7cfb\u5217\uff08\u7b2c 16 \u7bc7\uff09\uff1a\u80a1\u4e1c\u6570\u636e\u5206\u6790\uff1a\u5341\u5927\u80a1\u4e1c\u3001\u5341\u5927\u6d41\u901a\u80a1\u4e1c\u3001\u80a1\u4e1c\u6237\u6570\u53d8\u5316\u8ddf\u8e2a"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/102166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=102166"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/102166\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=102166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=102166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=102166"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=102166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}