From b783a6f9685684727bb98c48c3c239a045b24ed7 Mon Sep 17 00:00:00 2001 From: liaozhaorun Date: Tue, 6 May 2025 23:42:40 +0800 Subject: [PATCH] Classify2 --- main/data/daily_basic.ipynb | 439 +- main/data/finance.ipynb | 5920 ++++++++++++++++- main/data/index_and_industry.ipynb | 104 +- main/data/name_change.ipynb | 214 +- main/data/update/cyq-perf.ipynb | 145 +- main/data/update/sw_daily.ipynb | 145 +- main/data/update/update_daily_basic.ipynb | 386 +- main/data/update/update_daily_data.ipynb | 1146 ++-- main/data/update/update_is_st.ipynb | 222 +- main/data/update/update_money_flow.ipynb | 167 +- main/data/update/update_stk_limit.ipynb | 215 +- main/train/Classify2.ipynb | 744 ++- .../catboost_info/catboost_training.json | 302 +- .../catboost_info/learn/events.out.tfevents | Bin 14392 -> 22556 bytes main/train/catboost_info/learn_error.tsv | 302 +- .../catboost_info/test/events.out.tfevents | Bin 14392 -> 22556 bytes main/train/catboost_info/test_error.tsv | 302 +- main/train/catboost_info/time_left.tsv | 302 +- main/train/predictions_test.tsv | 1109 +-- 19 files changed, 9390 insertions(+), 2774 deletions(-) diff --git a/main/data/daily_basic.ipynb b/main/data/daily_basic.ipynb index 6ee2828..6fb2619 100644 --- a/main/data/daily_basic.ipynb +++ b/main/data/daily_basic.ipynb @@ -79,6 +79,25 @@ " name_change_dict[ts_code] = filter_rows(st_data)" ] }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b151990c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "8929 ts_code name start_date end_date change_reason\n", + "0 002848.SZ *ST高斯 2025-04-28 NaT *ST\n" + ] + } + ], + "source": [ + "print(name_change_dict['002848.SZ'])" + ] + }, { "cell_type": "code", "execution_count": 3, @@ -123,8 +142,8 @@ "任务 20250325 完成\n", "任务 20250324 完成\n", "任务 20250321 完成\n", - "任务 20250320 完成\n", "任务 20250319 完成\n", + "任务 20250320 完成\n", "任务 20250318 完成\n", "任务 20250317 完成\n", "任务 20250314 完成\n", @@ -137,8 +156,8 @@ "任务 20250305 完成\n", "任务 20250304 完成\n", "任务 20250303 完成\n", - "任务 20250227 完成\n", "任务 20250228 完成\n", + "任务 20250227 完成\n", "任务 20250226 完成\n", "任务 20250225 完成\n", "任务 20250224 完成\n", @@ -149,8 +168,8 @@ "任务 20250217 完成\n", "任务 20250214 完成\n", "任务 20250213 完成\n", - "任务 20250212 完成\n", "任务 20250211 完成\n", + "任务 20250212 完成\n", "任务 20250210 完成\n", "任务 20250207 完成\n", "任务 20250206 完成\n", @@ -158,33 +177,33 @@ "任务 20250127 完成\n", "任务 20250124 完成\n", "任务 20250123 完成\n", - "任务 20250121 完成\n", "任务 20250122 完成\n", + "任务 20250121 完成\n", "任务 20250120 完成\n", "任务 20250117 完成\n", "任务 20250116 完成\n", "任务 20250115 完成\n", - "任务 20250113 完成\n", "任务 20250114 完成\n", + "任务 20250113 完成\n", "任务 20250110 完成\n", "任务 20250109 完成\n", "任务 20250108 完成\n", "任务 20250107 完成\n", "任务 20250106 完成\n", - "任务 20250103 完成\n", "任务 20250102 完成\n", + "任务 20250103 完成\n", "任务 20241231 完成\n", "任务 20241230 完成\n", - "任务 20241226 完成\n", "任务 20241227 完成\n", - "任务 20241224 完成\n", + "任务 20241226 完成\n", "任务 20241225 完成\n", + "任务 20241224 完成\n", "任务 20241223 完成\n", "任务 20241220 完成\n", - "任务 20241218 完成\n", "任务 20241219 完成\n", - "任务 20241216 完成\n", + "任务 20241218 完成\n", "任务 20241217 完成\n", + "任务 20241216 完成\n", "任务 20241213 完成\n", "任务 20241212 完成\n", "任务 20241211 完成\n", @@ -192,10 +211,10 @@ "任务 20241209 完成\n", "任务 20241206 完成\n", "任务 20241205 完成\n", - "任务 20241203 完成\n", "任务 20241204 完成\n", - "任务 20241129 完成\n", + "任务 20241203 完成\n", "任务 20241202 完成\n", + "任务 20241129 完成\n", "任务 20241128 完成\n", "任务 20241127 完成\n", "任务 20241126 完成\n", @@ -205,8 +224,8 @@ "任务 20241120 完成\n", "任务 20241119 完成\n", "任务 20241118 完成\n", - "任务 20241114 完成\n", "任务 20241115 完成\n", + "任务 20241114 完成\n", "任务 20241113 完成\n", "任务 20241112 完成\n", "任务 20241111 完成\n", @@ -233,32 +252,32 @@ "任务 20241011 完成\n", "任务 20241010 完成\n", "任务 20241009 完成\n", - "任务 20241008 完成\n", "任务 20240930 完成\n", + "任务 20241008 完成\n", "任务 20240927 完成\n", "任务 20240926 完成\n", "任务 20240925 完成\n", "任务 20240924 完成\n", - "任务 20240923 完成\n", - "任务 20240919 完成\n", "任务 20240920 完成\n", + "任务 20240923 完成\n", "任务 20240918 完成\n", - "任务 20240913 完成\n", + "任务 20240919 完成\n", "任务 20240912 完成\n", + "任务 20240913 完成\n", "任务 20240911 完成\n", "任务 20240910 完成\n", "任务 20240909 完成\n", "任务 20240906 完成\n", - "任务 20240904 完成\n", "任务 20240905 完成\n", + "任务 20240904 完成\n", "任务 20240903 完成\n", "任务 20240902 完成\n", "任务 20240830 完成\n", "任务 20240829 完成\n", "任务 20240828 完成\n", "任务 20240827 完成\n", - "任务 20240823 完成\n", "任务 20240826 完成\n", + "任务 20240823 完成\n", "任务 20240822 完成\n", "任务 20240821 完成\n", "任务 20240820 完成\n", @@ -274,8 +293,8 @@ "任务 20240806 完成\n", "任务 20240805 完成\n", "任务 20240802 完成\n", - "任务 20240731 完成\n", "任务 20240801 完成\n", + "任务 20240731 完成\n", "任务 20240730 完成\n", "任务 20240729 完成\n", "任务 20240726 完成\n", @@ -295,16 +314,16 @@ "任务 20240708 完成\n", "任务 20240705 完成\n", "任务 20240704 完成\n", - "任务 20240702 完成\n", "任务 20240703 完成\n", + "任务 20240702 完成\n", "任务 20240701 完成\n", "任务 20240628 完成\n", "任务 20240627 完成\n", "任务 20240626 完成\n", - "任务 20240625 完成\n", "任务 20240624 完成\n", - "任务 20240621 完成\n", + "任务 20240625 完成\n", "任务 20240620 完成\n", + "任务 20240621 完成\n", "任务 20240619 完成\n", "任务 20240618 完成\n", "任务 20240617 完成\n", @@ -316,15 +335,15 @@ "任务 20240606 完成\n", "任务 20240605 完成\n", "任务 20240604 完成\n", - "任务 20240531 完成\n", "任务 20240603 完成\n", + "任务 20240531 完成\n", "任务 20240530 完成\n", "任务 20240529 完成\n", "任务 20240528 完成\n", "任务 20240527 完成\n", "任务 20240524 完成\n", - "任务 20240522 完成\n", "任务 20240523 完成\n", + "任务 20240522 完成\n", "任务 20240521 完成\n", "任务 20240520 完成\n", "任务 20240517 完成\n", @@ -335,10 +354,10 @@ "任务 20240510 完成\n", "任务 20240509 完成\n", "任务 20240508 完成\n", - "任务 20240506 完成\n", "任务 20240507 完成\n", - "任务 20240429 完成\n", + "任务 20240506 完成\n", "任务 20240430 完成\n", + "任务 20240429 完成\n", "任务 20240426 完成\n", "任务 20240425 完成\n", "任务 20240424 完成\n", @@ -349,8 +368,8 @@ "任务 20240417 完成\n", "任务 20240416 完成\n", "任务 20240415 完成\n", - "任务 20240411 完成\n", "任务 20240412 完成\n", + "任务 20240411 完成\n", "任务 20240410 完成\n", "任务 20240409 完成\n", "任务 20240408 完成\n", @@ -359,10 +378,10 @@ "任务 20240401 完成\n", "任务 20240329 完成\n", "任务 20240328 完成\n", - "任务 20240326 完成\n", "任务 20240327 完成\n", - "任务 20240325 完成\n", + "任务 20240326 完成\n", "任务 20240322 完成\n", + "任务 20240325 完成\n", "任务 20240321 完成\n", "任务 20240320 完成\n", "任务 20240319 完成\n", @@ -375,8 +394,8 @@ "任务 20240308 完成\n", "任务 20240307 完成\n", "任务 20240306 完成\n", - "任务 20240305 完成\n", "任务 20240304 完成\n", + "任务 20240305 完成\n", "任务 20240301 完成\n", "任务 20240229 完成\n", "任务 20240228 完成\n", @@ -413,18 +432,18 @@ "任务 20240108 完成\n", "任务 20240105 完成\n", "任务 20240104 完成\n", - "任务 20240103 完成\n", "任务 20240102 完成\n", + "任务 20240103 完成\n", "任务 20231229 完成\n", "任务 20231228 完成\n", "任务 20231227 完成\n", - "任务 20231225 完成\n", "任务 20231226 完成\n", + "任务 20231225 完成\n", "任务 20231222 完成\n", - "任务 20231221 完成\n", "任务 20231220 完成\n", - "任务 20231219 完成\n", + "任务 20231221 完成\n", "任务 20231218 完成\n", + "任务 20231219 完成\n", "任务 20231215 完成\n", "任务 20231214 完成\n", "任务 20231213 完成\n", @@ -434,8 +453,8 @@ "任务 20231207 完成\n", "任务 20231206 完成\n", "任务 20231205 完成\n", - "任务 20231201 完成\n", "任务 20231204 完成\n", + "任务 20231201 完成\n", "任务 20231130 完成\n", "任务 20231129 完成\n", "任务 20231128 完成\n", @@ -456,8 +475,8 @@ "任务 20231107 完成\n", "任务 20231106 完成\n", "任务 20231103 完成\n", - "任务 20231101 完成\n", "任务 20231102 完成\n", + "任务 20231101 完成\n", "任务 20231031 完成\n", "任务 20231030 完成\n", "任务 20231027 完成\n", @@ -470,29 +489,29 @@ "任务 20231018 完成\n", "任务 20231017 完成\n", "任务 20231016 完成\n", - "任务 20231012 完成\n", "任务 20231013 完成\n", + "任务 20231012 完成\n", "任务 20231011 完成\n", "任务 20231010 完成\n", - "任务 20231009 完成\n", "任务 20230928 完成\n", + "任务 20231009 完成\n", + "任务 20230926 完成\n", "任务 20230927 完成\n", "任务 20230925 完成\n", - "任务 20230926 完成\n", "任务 20230922 完成\n", "任务 20230921 完成\n", "任务 20230920 完成\n", "任务 20230919 完成\n", "任务 20230918 完成\n", "任务 20230915 完成\n", - "任务 20230913 完成\n", "任务 20230914 完成\n", + "任务 20230913 完成\n", "任务 20230912 完成\n", "任务 20230911 完成\n", "任务 20230908 完成\n", "任务 20230907 完成\n", - "任务 20230905 完成\n", "任务 20230906 完成\n", + "任务 20230905 完成\n", "任务 20230904 完成\n", "任务 20230901 完成\n", "任务 20230831 完成\n", @@ -502,8 +521,8 @@ "任务 20230825 完成\n", "任务 20230824 完成\n", "任务 20230823 完成\n", - "任务 20230822 完成\n", "任务 20230821 完成\n", + "任务 20230822 完成\n", "任务 20230818 完成\n", "任务 20230817 完成\n", "任务 20230816 完成\n", @@ -512,8 +531,8 @@ "任务 20230811 完成\n", "任务 20230810 完成\n", "任务 20230809 完成\n", - "任务 20230807 完成\n", "任务 20230808 完成\n", + "任务 20230807 完成\n", "任务 20230804 完成\n", "任务 20230803 完成\n", "任务 20230802 完成\n", @@ -526,11 +545,11 @@ "任务 20230724 完成\n", "任务 20230721 完成\n", "任务 20230720 完成\n", - "任务 20230718 完成\n", "任务 20230719 完成\n", + "任务 20230718 完成\n", + "任务 20230714 完成\n", "任务 20230717 完成\n", "任务 20230713 完成\n", - "任务 20230714 完成\n", "任务 20230712 完成\n", "任务 20230711 完成\n", "任务 20230710 完成\n", @@ -561,20 +580,20 @@ "任务 20230601 完成\n", "任务 20230531 完成\n", "任务 20230530 完成\n", - "任务 20230526 完成\n", "任务 20230529 完成\n", - "任务 20230524 完成\n", + "任务 20230526 完成\n", "任务 20230525 完成\n", + "任务 20230524 完成\n", "任务 20230523 完成\n", - "任务 20230522 完成\n", "任务 20230519 完成\n", + "任务 20230522 完成\n", "任务 20230518 完成\n", "任务 20230517 完成\n", "任务 20230516 完成\n", "任务 20230515 完成\n", "任务 20230512 完成\n", - "任务 20230510 完成\n", "任务 20230511 完成\n", + "任务 20230510 完成\n", "任务 20230509 完成\n", "任务 20230508 完成\n", "任务 20230505 完成\n", @@ -586,8 +605,8 @@ "任务 20230424 完成\n", "任务 20230421 完成\n", "任务 20230420 完成\n", - "任务 20230419 完成\n", "任务 20230418 完成\n", + "任务 20230419 完成\n", "任务 20230417 完成\n", "任务 20230414 完成\n", "任务 20230413 完成\n", @@ -599,23 +618,23 @@ "任务 20230404 完成\n", "任务 20230403 完成\n", "任务 20230331 完成\n", + "任务 20230330 完成\n", "任务 20230329 完成\n", "任务 20230328 完成\n", "任务 20230327 完成\n", - "任务 20230330 完成\n", "任务 20230324 完成\n", - "任务 20230323 完成\n", "任务 20230322 完成\n", + "任务 20230323 完成\n", "任务 20230321 完成\n", "任务 20230320 完成\n", "任务 20230317 完成\n", "任务 20230316 完成\n", "任务 20230315 完成\n", "任务 20230314 完成\n", - "任务 20230310 完成\n", "任务 20230313 完成\n", - "任务 20230308 完成\n", + "任务 20230310 完成\n", "任务 20230309 完成\n", + "任务 20230308 完成\n", "任务 20230307 完成\n", "任务 20230306 完成\n", "任务 20230303 完成\n", @@ -625,12 +644,12 @@ "任务 20230227 完成\n", "任务 20230224 完成\n", "任务 20230223 完成\n", - "任务 20230221 完成\n", "任务 20230222 完成\n", + "任务 20230221 完成\n", "任务 20230220 完成\n", "任务 20230217 完成\n", - "任务 20230215 完成\n", "任务 20230216 完成\n", + "任务 20230215 完成\n", "任务 20230214 完成\n", "任务 20230213 完成\n", "任务 20230210 完成\n", @@ -641,8 +660,8 @@ "任务 20230203 完成\n", "任务 20230202 完成\n", "任务 20230201 完成\n", - "任务 20230130 完成\n", "任务 20230131 完成\n", + "任务 20230130 完成\n", "任务 20230120 完成\n", "任务 20230119 完成\n", "任务 20230118 完成\n", @@ -681,8 +700,8 @@ "任务 20221201 完成\n", "任务 20221130 完成\n", "任务 20221129 完成\n", - "任务 20221125 完成\n", "任务 20221128 完成\n", + "任务 20221125 完成\n", "任务 20221124 完成\n", "任务 20221123 完成\n", "任务 20221122 完成\n", @@ -692,8 +711,8 @@ "任务 20221116 完成\n", "任务 20221115 完成\n", "任务 20221114 完成\n", - "任务 20221110 完成\n", "任务 20221111 完成\n", + "任务 20221110 完成\n", "任务 20221109 完成\n", "任务 20221108 完成\n", "任务 20221107 完成\n", @@ -706,10 +725,10 @@ "任务 20221027 完成\n", "任务 20221026 完成\n", "任务 20221025 完成\n", - "任务 20221021 完成\n", "任务 20221024 完成\n", - "任务 20221019 完成\n", + "任务 20221021 完成\n", "任务 20221020 完成\n", + "任务 20221019 完成\n", "任务 20221018 完成\n", "任务 20221017 完成\n", "任务 20221014 完成\n", @@ -720,10 +739,10 @@ "任务 20220930 完成\n", "任务 20220929 完成\n", "任务 20220928 完成\n", - "任务 20220927 完成\n", - "任务 20220923 完成\n", "任务 20220926 完成\n", + "任务 20220927 完成\n", "任务 20220922 完成\n", + "任务 20220923 完成\n", "任务 20220921 完成\n", "任务 20220920 完成\n", "任务 20220919 完成\n", @@ -732,14 +751,14 @@ "任务 20220914 完成\n", "任务 20220913 完成\n", "任务 20220909 完成\n", - "任务 20220907 完成\n", "任务 20220908 完成\n", + "任务 20220907 完成\n", "任务 20220906 完成\n", "任务 20220905 完成\n", "任务 20220902 完成\n", "任务 20220901 完成\n", - "任务 20220831 完成\n", "任务 20220830 完成\n", + "任务 20220831 完成\n", "任务 20220829 完成\n", "任务 20220826 完成\n", "任务 20220825 完成\n", @@ -752,26 +771,26 @@ "任务 20220816 完成\n", "任务 20220815 完成\n", "任务 20220812 完成\n", - "任务 20220811 完成\n", "任务 20220810 完成\n", - "任务 20220808 完成\n", + "任务 20220811 完成\n", "任务 20220809 完成\n", - "任务 20220805 完成\n", + "任务 20220808 完成\n", "任务 20220804 完成\n", + "任务 20220805 完成\n", "任务 20220803 完成\n", "任务 20220802 完成\n", - "任务 20220729 完成\n", "任务 20220801 完成\n", + "任务 20220729 完成\n", "任务 20220728 完成\n", "任务 20220727 完成\n", - "任务 20220725 完成\n", "任务 20220726 完成\n", + "任务 20220725 完成\n", "任务 20220722 完成\n", "任务 20220721 完成\n", - "任务 20220720 完成\n", "任务 20220719 完成\n", - "任务 20220715 完成\n", + "任务 20220720 完成\n", "任务 20220718 完成\n", + "任务 20220715 完成\n", "任务 20220714 完成\n", "任务 20220713 完成\n", "任务 20220712 完成\n", @@ -794,8 +813,8 @@ "任务 20220617 完成\n", "任务 20220616 完成\n", "任务 20220615 完成\n", - "任务 20220614 完成\n", "任务 20220613 完成\n", + "任务 20220614 完成\n", "任务 20220610 完成\n", "任务 20220609 完成\n", "任务 20220608 完成\n", @@ -807,20 +826,20 @@ "任务 20220530 完成\n", "任务 20220527 完成\n", "任务 20220526 完成\n", - "任务 20220524 完成\n", "任务 20220525 完成\n", - "任务 20220520 完成\n", + "任务 20220524 完成\n", "任务 20220523 完成\n", + "任务 20220520 完成\n", "任务 20220519 完成\n", "任务 20220518 完成\n", "任务 20220517 完成\n", "任务 20220516 完成\n", - "任务 20220512 完成\n", "任务 20220513 完成\n", - "任务 20220510 完成\n", + "任务 20220512 完成\n", "任务 20220511 完成\n", - "任务 20220506 完成\n", + "任务 20220510 完成\n", "任务 20220509 完成\n", + "任务 20220506 完成\n", "任务 20220505 完成\n", "任务 20220429 完成\n", "任务 20220428 完成\n", @@ -862,8 +881,8 @@ "任务 20220307 完成\n", "任务 20220304 完成\n", "任务 20220303 完成\n", - "任务 20220301 完成\n", "任务 20220302 完成\n", + "任务 20220301 完成\n", "任务 20220228 完成\n", "任务 20220225 完成\n", "任务 20220224 完成\n", @@ -889,16 +908,16 @@ "任务 20220120 完成\n", "任务 20220119 完成\n", "任务 20220118 完成\n", - "任务 20220114 完成\n", "任务 20220117 完成\n", - "任务 20220112 完成\n", + "任务 20220114 完成\n", "任务 20220113 完成\n", + "任务 20220112 完成\n", "任务 20220111 完成\n", "任务 20220110 完成\n", "任务 20220107 完成\n", "任务 20220106 完成\n", - "任务 20220104 完成\n", "任务 20220105 完成\n", + "任务 20220104 完成\n", "任务 20211231 完成\n", "任务 20211230 完成\n", "任务 20211229 完成\n", @@ -921,8 +940,8 @@ "任务 20211206 完成\n", "任务 20211203 完成\n", "任务 20211202 完成\n", - "任务 20211130 完成\n", "任务 20211201 完成\n", + "任务 20211130 完成\n", "任务 20211129 完成\n", "任务 20211126 完成\n", "任务 20211125 完成\n", @@ -932,21 +951,21 @@ "任务 20211119 完成\n", "任务 20211118 完成\n", "任务 20211117 完成\n", - "任务 20211116 完成\n", "任务 20211115 完成\n", + "任务 20211116 完成\n", + "任务 20211111 完成\n", "任务 20211112 完成\n", "任务 20211110 完成\n", - "任务 20211111 完成\n", "任务 20211109 完成\n", "任务 20211108 完成\n", - "任务 20211104 完成\n", "任务 20211105 完成\n", + "任务 20211104 完成\n", "任务 20211103 完成\n", "任务 20211102 完成\n", "任务 20211101 完成\n", "任务 20211029 完成\n", - "任务 20211028 完成\n", "任务 20211027 完成\n", + "任务 20211028 完成\n", "任务 20211026 完成\n", "任务 20211025 完成\n", "任务 20211022 完成\n", @@ -959,18 +978,18 @@ "任务 20211013 完成\n", "任务 20211012 完成\n", "任务 20211011 完成\n", - "任务 20210930 完成\n", "任务 20211008 完成\n", + "任务 20210930 完成\n", "任务 20210929 完成\n", "任务 20210928 完成\n", "任务 20210927 完成\n", "任务 20210924 完成\n", "任务 20210923 完成\n", "任务 20210922 完成\n", - "任务 20210916 完成\n", "任务 20210917 完成\n", - "任务 20210914 完成\n", + "任务 20210916 完成\n", "任务 20210915 完成\n", + "任务 20210914 完成\n", "任务 20210913 完成\n", "任务 20210910 完成\n", "任务 20210909 完成\n", @@ -1009,8 +1028,8 @@ "任务 20210726 完成\n", "任务 20210723 完成\n", "任务 20210722 完成\n", - "任务 20210720 完成\n", "任务 20210721 完成\n", + "任务 20210720 完成\n", "任务 20210719 完成\n", "任务 20210716 完成\n", "任务 20210715 完成\n", @@ -1041,12 +1060,12 @@ "任务 20210609 完成\n", "任务 20210608 完成\n", "任务 20210607 完成\n", - "任务 20210603 完成\n", "任务 20210604 完成\n", + "任务 20210603 完成\n", "任务 20210602 完成\n", "任务 20210601 完成\n", - "任务 20210528 完成\n", "任务 20210531 完成\n", + "任务 20210528 完成\n", "任务 20210526 完成\n", "任务 20210527 完成\n", "任务 20210525 完成\n", @@ -1059,20 +1078,20 @@ "任务 20210514 完成\n", "任务 20210513 完成\n", "任务 20210512 完成\n", - "任务 20210510 完成\n", "任务 20210511 完成\n", + "任务 20210510 完成\n", "任务 20210507 完成\n", "任务 20210506 完成\n", "任务 20210430 完成\n", "任务 20210429 完成\n", "任务 20210428 完成\n", "任务 20210427 完成\n", - "任务 20210426 完成\n", "任务 20210423 完成\n", - "任务 20210421 完成\n", + "任务 20210426 完成\n", "任务 20210422 完成\n", - "任务 20210419 完成\n", + "任务 20210421 完成\n", "任务 20210420 完成\n", + "任务 20210419 完成\n", "任务 20210416 完成\n", "任务 20210415 完成\n", "任务 20210414 完成\n", @@ -1083,8 +1102,8 @@ "任务 20210407 完成\n", "任务 20210406 完成\n", "任务 20210402 完成\n", - "任务 20210401 完成\n", "任务 20210331 完成\n", + "任务 20210401 完成\n", "任务 20210330 完成\n", "任务 20210329 完成\n", "任务 20210326 完成\n", @@ -1098,8 +1117,8 @@ "任务 20210316 完成\n", "任务 20210315 完成\n", "任务 20210312 完成\n", - "任务 20210310 完成\n", "任务 20210311 完成\n", + "任务 20210310 完成\n", "任务 20210309 完成\n", "任务 20210308 完成\n", "任务 20210305 完成\n", @@ -1111,8 +1130,8 @@ "任务 20210225 完成\n", "任务 20210224 完成\n", "任务 20210223 完成\n", - "任务 20210222 完成\n", "任务 20210219 完成\n", + "任务 20210222 完成\n", "任务 20210218 完成\n", "任务 20210210 完成\n", "任务 20210209 完成\n", @@ -1121,10 +1140,10 @@ "任务 20210204 完成\n", "任务 20210203 完成\n", "任务 20210202 完成\n", - "任务 20210201 完成\n", "任务 20210129 完成\n", - "任务 20210127 完成\n", + "任务 20210201 完成\n", "任务 20210128 完成\n", + "任务 20210127 完成\n", "任务 20210126 完成\n", "任务 20210125 完成\n", "任务 20210122 完成\n", @@ -1132,8 +1151,8 @@ "任务 20210120 完成\n", "任务 20210119 完成\n", "任务 20210118 完成\n", - "任务 20210114 完成\n", "任务 20210115 完成\n", + "任务 20210114 完成\n", "任务 20210113 完成\n", "任务 20210112 完成\n", "任务 20210111 完成\n", @@ -1155,8 +1174,8 @@ "任务 20201217 完成\n", "任务 20201216 完成\n", "任务 20201215 完成\n", - "任务 20201214 完成\n", "任务 20201211 完成\n", + "任务 20201214 完成\n", "任务 20201210 完成\n", "任务 20201209 完成\n", "任务 20201208 完成\n", @@ -1166,14 +1185,14 @@ "任务 20201202 完成\n", "任务 20201201 完成\n", "任务 20201130 完成\n", - "任务 20201126 完成\n", "任务 20201127 完成\n", + "任务 20201126 完成\n", "任务 20201125 完成\n", "任务 20201124 完成\n", - "任务 20201120 完成\n", "任务 20201123 完成\n", - "任务 20201118 完成\n", + "任务 20201120 完成\n", "任务 20201119 完成\n", + "任务 20201118 完成\n", "任务 20201117 完成\n", "任务 20201116 完成\n", "任务 20201113 完成\n", @@ -1191,8 +1210,8 @@ "任务 20201028 完成\n", "任务 20201027 完成\n", "任务 20201026 完成\n", - "任务 20201022 完成\n", "任务 20201023 完成\n", + "任务 20201022 完成\n", "任务 20201021 完成\n", "任务 20201020 完成\n", "任务 20201019 完成\n", @@ -1208,16 +1227,16 @@ "任务 20200925 完成\n", "任务 20200924 完成\n", "任务 20200923 完成\n", - "任务 20200921 完成\n", "任务 20200922 完成\n", + "任务 20200921 完成\n", "任务 20200918 完成\n", "任务 20200917 完成\n", "任务 20200916 完成\n", "任务 20200915 完成\n", "任务 20200914 完成\n", "任务 20200911 完成\n", - "任务 20200909 完成\n", "任务 20200910 完成\n", + "任务 20200909 完成\n", "任务 20200908 完成\n", "任务 20200907 完成\n", "任务 20200904 完成\n", @@ -1228,22 +1247,22 @@ "任务 20200828 完成\n", "任务 20200827 完成\n", "任务 20200826 完成\n", - "任务 20200824 完成\n", "任务 20200825 完成\n", - "任务 20200820 完成\n", + "任务 20200824 完成\n", "任务 20200821 完成\n", + "任务 20200820 完成\n", "任务 20200819 完成\n", "任务 20200818 完成\n", "任务 20200817 完成\n", "任务 20200814 完成\n", - "任务 20200812 完成\n", "任务 20200813 完成\n", - "任务 20200810 完成\n", + "任务 20200812 完成\n", "任务 20200811 完成\n", + "任务 20200810 完成\n", "任务 20200807 完成\n", "任务 20200806 完成\n", - "任务 20200804 完成\n", "任务 20200805 完成\n", + "任务 20200804 完成\n", "任务 20200803 完成\n", "任务 20200731 完成\n", "任务 20200730 完成\n", @@ -1270,20 +1289,20 @@ "任务 20200701 完成\n", "任务 20200630 完成\n", "任务 20200629 完成\n", - "任务 20200623 完成\n", "任务 20200624 完成\n", + "任务 20200623 完成\n", "任务 20200622 完成\n", "任务 20200619 完成\n", "任务 20200618 完成\n", "任务 20200617 完成\n", "任务 20200616 完成\n", "任务 20200615 完成\n", - "任务 20200611 完成\n", "任务 20200612 完成\n", + "任务 20200611 完成\n", "任务 20200610 完成\n", "任务 20200609 完成\n", - "任务 20200605 完成\n", "任务 20200608 完成\n", + "任务 20200605 完成\n", "任务 20200604 完成\n", "任务 20200603 完成\n", "任务 20200602 完成\n", @@ -1319,12 +1338,12 @@ "任务 20200416 完成\n", "任务 20200415 完成\n", "任务 20200414 完成\n", - "任务 20200413 完成\n", "任务 20200410 完成\n", + "任务 20200413 完成\n", "任务 20200409 完成\n", "任务 20200408 完成\n", - "任务 20200403 完成\n", "任务 20200407 完成\n", + "任务 20200403 完成\n", "任务 20200402 完成\n", "任务 20200401 完成\n", "任务 20200331 完成\n", @@ -1337,8 +1356,8 @@ "任务 20200320 完成\n", "任务 20200319 完成\n", "任务 20200318 完成\n", - "任务 20200316 完成\n", "任务 20200317 完成\n", + "任务 20200316 完成\n", "任务 20200313 完成\n", "任务 20200312 完成\n", "任务 20200311 完成\n", @@ -1351,36 +1370,36 @@ "任务 20200302 完成\n", "任务 20200228 完成\n", "任务 20200227 完成\n", - "任务 20200225 完成\n", "任务 20200226 完成\n", - "任务 20200221 完成\n", + "任务 20200225 完成\n", "任务 20200224 完成\n", - "任务 20200220 完成\n", + "任务 20200221 完成\n", "任务 20200219 完成\n", + "任务 20200220 完成\n", "任务 20200218 完成\n", "任务 20200217 完成\n", - "任务 20200214 完成\n", "任务 20200213 完成\n", + "任务 20200214 完成\n", "任务 20200212 完成\n", "任务 20200211 完成\n", "任务 20200207 完成\n", "任务 20200210 完成\n", "任务 20200206 完成\n", "任务 20200205 完成\n", - "任务 20200203 完成\n", "任务 20200204 完成\n", + "任务 20200203 完成\n", "任务 20200123 完成\n", "任务 20200122 完成\n", "任务 20200121 完成\n", "任务 20200120 完成\n", - "任务 20200116 完成\n", "任务 20200117 完成\n", + "任务 20200116 完成\n", "任务 20200115 完成\n", "任务 20200114 完成\n", "任务 20200113 完成\n", "任务 20200110 完成\n", - "任务 20200108 完成\n", "任务 20200109 完成\n", + "任务 20200108 完成\n", "任务 20200107 完成\n", "任务 20200106 完成\n", "任务 20200103 完成\n", @@ -1394,8 +1413,8 @@ "任务 20191223 完成\n", "任务 20191220 完成\n", "任务 20191219 完成\n", - "任务 20191217 完成\n", "任务 20191218 完成\n", + "任务 20191217 完成\n", "任务 20191216 完成\n", "任务 20191213 完成\n", "任务 20191212 完成\n", @@ -1430,8 +1449,8 @@ "任务 20191101 完成\n", "任务 20191031 完成\n", "任务 20191030 完成\n", - "任务 20191028 完成\n", "任务 20191029 完成\n", + "任务 20191028 完成\n", "任务 20191025 完成\n", "任务 20191024 完成\n", "任务 20191023 完成\n", @@ -1440,18 +1459,18 @@ "任务 20191018 完成\n", "任务 20191017 完成\n", "任务 20191016 完成\n", - "任务 20191014 完成\n", "任务 20191015 完成\n", + "任务 20191014 完成\n", "任务 20191011 完成\n", "任务 20191010 完成\n", "任务 20191009 完成\n", "任务 20191008 完成\n", "任务 20190930 完成\n", + "任务 20190926 完成\n", "任务 20190927 完成\n", "任务 20190925 完成\n", - "任务 20190926 完成\n", - "任务 20190923 完成\n", "任务 20190924 完成\n", + "任务 20190923 完成\n", "任务 20190920 完成\n", "任务 20190919 完成\n", "任务 20190918 完成\n", @@ -1468,8 +1487,8 @@ "任务 20190902 完成\n", "任务 20190830 完成\n", "任务 20190829 完成\n", - "任务 20190827 完成\n", "任务 20190828 完成\n", + "任务 20190827 完成\n", "任务 20190826 完成\n", "任务 20190823 完成\n", "任务 20190822 完成\n", @@ -1494,15 +1513,15 @@ "任务 20190726 完成\n", "任务 20190725 完成\n", "任务 20190724 完成\n", - "任务 20190722 完成\n", "任务 20190723 完成\n", - "任务 20190718 完成\n", + "任务 20190722 完成\n", "任务 20190719 完成\n", + "任务 20190718 完成\n", "任务 20190717 完成\n", "任务 20190716 完成\n", - "任务 20190712 完成\n", "任务 20190715 完成\n", "任务 20190711 完成\n", + "任务 20190712 完成\n", "任务 20190710 完成\n", "任务 20190709 完成\n", "任务 20190708 完成\n", @@ -1525,8 +1544,8 @@ "任务 20190613 完成\n", "任务 20190612 完成\n", "任务 20190611 完成\n", - "任务 20190606 完成\n", "任务 20190610 完成\n", + "任务 20190606 完成\n", "任务 20190605 完成\n", "任务 20190604 完成\n", "任务 20190603 完成\n", @@ -1553,8 +1572,8 @@ "任务 20190430 完成\n", "任务 20190429 完成\n", "任务 20190426 完成\n", - "任务 20190424 完成\n", "任务 20190425 完成\n", + "任务 20190424 完成\n", "任务 20190423 完成\n", "任务 20190422 完成\n", "任务 20190419 完成\n", @@ -1601,16 +1620,16 @@ "任务 20190220 完成\n", "任务 20190219 完成\n", "任务 20190218 完成\n", - "任务 20190214 完成\n", "任务 20190215 完成\n", + "任务 20190214 完成\n", "任务 20190213 完成\n", "任务 20190212 完成\n", "任务 20190211 完成\n", "任务 20190201 完成\n", "任务 20190131 完成\n", "任务 20190130 完成\n", - "任务 20190128 完成\n", "任务 20190129 完成\n", + "任务 20190128 完成\n", "任务 20190125 完成\n", "任务 20190124 完成\n", "任务 20190123 完成\n", @@ -1619,14 +1638,14 @@ "任务 20190118 完成\n", "任务 20190117 完成\n", "任务 20190116 完成\n", - "任务 20190114 完成\n", "任务 20190115 完成\n", + "任务 20190114 完成\n", "任务 20190111 完成\n", "任务 20190110 完成\n", "任务 20190109 完成\n", "任务 20190108 完成\n", - "任务 20190104 完成\n", "任务 20190107 完成\n", + "任务 20190104 完成\n", "任务 20190103 完成\n", "任务 20190102 完成\n", "任务 20181228 完成\n", @@ -1642,12 +1661,12 @@ "任务 20181214 完成\n", "任务 20181213 完成\n", "任务 20181212 完成\n", - "任务 20181210 完成\n", "任务 20181211 完成\n", + "任务 20181210 完成\n", "任务 20181207 完成\n", "任务 20181206 完成\n", - "任务 20181205 完成\n", "任务 20181204 完成\n", + "任务 20181205 完成\n", "任务 20181203 完成\n", "任务 20181130 完成\n", "任务 20181129 完成\n", @@ -1660,12 +1679,12 @@ "任务 20181120 完成\n", "任务 20181119 完成\n", "任务 20181116 完成\n", - "任务 20181114 完成\n", "任务 20181115 完成\n", + "任务 20181114 完成\n", "任务 20181113 完成\n", "任务 20181112 完成\n", - "任务 20181108 完成\n", "任务 20181109 完成\n", + "任务 20181108 完成\n", "任务 20181107 完成\n", "任务 20181106 完成\n", "任务 20181105 完成\n", @@ -1681,8 +1700,8 @@ "任务 20181022 完成\n", "任务 20181019 完成\n", "任务 20181018 完成\n", - "任务 20181016 完成\n", "任务 20181017 完成\n", + "任务 20181016 完成\n", "任务 20181015 完成\n", "任务 20181012 完成\n", "任务 20181011 完成\n", @@ -1721,16 +1740,16 @@ "任务 20180817 完成\n", "任务 20180816 完成\n", "任务 20180815 完成\n", - "任务 20180813 完成\n", "任务 20180814 完成\n", + "任务 20180813 完成\n", "任务 20180810 完成\n", "任务 20180809 完成\n", "任务 20180808 完成\n", "任务 20180807 完成\n", "任务 20180806 完成\n", "任务 20180803 完成\n", - "任务 20180801 完成\n", "任务 20180802 完成\n", + "任务 20180801 完成\n", "任务 20180731 完成\n", "任务 20180730 完成\n", "任务 20180727 完成\n", @@ -1756,8 +1775,8 @@ "任务 20180629 完成\n", "任务 20180628 完成\n", "任务 20180627 完成\n", - "任务 20180626 完成\n", "任务 20180625 完成\n", + "任务 20180626 完成\n", "任务 20180622 完成\n", "任务 20180621 完成\n", "任务 20180620 完成\n", @@ -1771,8 +1790,8 @@ "任务 20180607 完成\n", "任务 20180606 完成\n", "任务 20180605 完成\n", - "任务 20180601 完成\n", "任务 20180604 完成\n", + "任务 20180601 完成\n", "任务 20180531 完成\n", "任务 20180530 完成\n", "任务 20180529 完成\n", @@ -1800,8 +1819,8 @@ "任务 20180425 完成\n", "任务 20180424 完成\n", "任务 20180423 完成\n", - "任务 20180419 完成\n", "任务 20180420 完成\n", + "任务 20180419 完成\n", "任务 20180418 完成\n", "任务 20180417 完成\n", "任务 20180416 完成\n", @@ -1811,12 +1830,12 @@ "任务 20180410 完成\n", "任务 20180409 完成\n", "任务 20180404 完成\n", - "任务 20180402 完成\n", "任务 20180403 完成\n", + "任务 20180402 完成\n", "任务 20180330 完成\n", "任务 20180329 完成\n", - "任务 20180327 完成\n", "任务 20180328 完成\n", + "任务 20180327 完成\n", "任务 20180326 完成\n", "任务 20180323 完成\n", "任务 20180322 完成\n", @@ -1837,8 +1856,8 @@ "任务 20180301 完成\n", "任务 20180228 完成\n", "任务 20180227 完成\n", - "任务 20180223 完成\n", "任务 20180226 完成\n", + "任务 20180223 完成\n", "任务 20180222 完成\n", "任务 20180214 完成\n", "任务 20180213 完成\n", @@ -1859,15 +1878,15 @@ "任务 20180123 完成\n", "任务 20180122 完成\n", "任务 20180119 完成\n", - "任务 20180118 完成\n", "任务 20180117 完成\n", + "任务 20180118 完成\n", "任务 20180116 完成\n", "任务 20180115 完成\n", "任务 20180112 完成\n", "任务 20180111 完成\n", "任务 20180110 完成\n", - "任务 20180108 完成\n", "任务 20180109 完成\n", + "任务 20180108 完成\n", "任务 20180105 完成\n", "任务 20180104 完成\n", "任务 20180103 完成\n", @@ -1939,8 +1958,8 @@ "任务 20170925 完成\n", "任务 20170922 完成\n", "任务 20170921 完成\n", - "任务 20170920 完成\n", "任务 20170919 完成\n", + "任务 20170920 完成\n", "任务 20170918 完成\n", "任务 20170915 完成\n", "任务 20170914 完成\n", @@ -1950,10 +1969,10 @@ "任务 20170908 完成\n", "任务 20170907 完成\n", "任务 20170906 完成\n", - "任务 20170904 完成\n", "任务 20170905 完成\n", - "任务 20170831 完成\n", + "任务 20170904 完成\n", "任务 20170901 完成\n", + "任务 20170831 完成\n", "任务 20170830 完成\n", "任务 20170829 完成\n", "任务 20170828 完成\n", @@ -1988,8 +2007,8 @@ "任务 20170718 完成\n", "任务 20170717 完成\n", "任务 20170714 完成\n", - "任务 20170713 完成\n", "任务 20170712 完成\n", + "任务 20170713 完成\n", "任务 20170711 完成\n", "任务 20170710 完成\n", "任务 20170707 完成\n", @@ -2004,8 +2023,8 @@ "任务 20170626 完成\n", "任务 20170623 完成\n", "任务 20170622 完成\n", - "任务 20170620 完成\n", "任务 20170621 完成\n", + "任务 20170620 完成\n", "任务 20170619 完成\n", "任务 20170616 完成\n", "任务 20170615 完成\n", @@ -2023,8 +2042,8 @@ "任务 20170526 完成\n", "任务 20170525 完成\n", "任务 20170524 完成\n", - "任务 20170523 完成\n", "任务 20170522 完成\n", + "任务 20170523 完成\n", "任务 20170519 完成\n", "任务 20170518 完成\n", "任务 20170517 完成\n", @@ -2048,14 +2067,14 @@ "任务 20170420 完成\n", "任务 20170419 完成\n", "任务 20170418 完成\n", - "任务 20170414 完成\n", "任务 20170417 完成\n", - "任务 20170412 完成\n", + "任务 20170414 完成\n", "任务 20170413 完成\n", + "任务 20170412 完成\n", "任务 20170411 完成\n", "任务 20170410 完成\n", - "任务 20170406 完成\n", "任务 20170407 完成\n", + "任务 20170406 完成\n", "任务 20170405 完成\n", "任务 20170331 完成\n", "任务 20170330 完成\n", @@ -2070,18 +2089,18 @@ "任务 20170317 完成\n", "任务 20170316 完成\n", "任务 20170315 完成\n", - "任务 20170313 完成\n", "任务 20170314 完成\n", + "任务 20170313 完成\n", "任务 20170310 完成\n", "任务 20170309 完成\n", - "任务 20170308 完成\n", "任务 20170307 完成\n", + "任务 20170308 完成\n", "任务 20170306 完成\n", "任务 20170303 完成\n", "任务 20170302 完成\n", "任务 20170301 完成\n", - "任务 20170227 完成\n", "任务 20170228 完成\n", + "任务 20170227 完成\n", "任务 20170224 完成\n", "任务 20170223 完成\n", "任务 20170222 完成\n", @@ -2094,12 +2113,12 @@ "任务 20170213 完成\n", "任务 20170210 完成\n", "任务 20170209 完成\n", - "任务 20170207 完成\n", "任务 20170208 完成\n", + "任务 20170207 完成\n", "任务 20170206 完成\n", "任务 20170203 完成\n", - "任务 20170125 完成\n", "任务 20170126 完成\n", + "任务 20170125 完成\n", "任务 20170124 完成\n", "任务 20170123 完成\n", "任务 20170120 完成\n", @@ -2114,8 +2133,8 @@ "任务 20170109 完成\n", "任务 20170106 完成\n", "任务 20170105 完成\n", - "任务 20170104 完成\n", - "任务 20170103 完成\n" + "任务 20170103 完成\n", + "任务 20170104 完成\n" ] } ], @@ -2200,11 +2219,11 @@ "3 834639.BJ 20250430 8.37 6.1158 7.8866 \n", "4 000909.SZ 20250430 5.72 0.6104 1.0424 \n", "... ... ... ... ... ... \n", - "8594006 600708.SH 20170103 9.03 0.7694 1.0169 \n", - "8594007 600712.SH 20170103 10.29 0.5859 0.8028 \n", - "8594008 001872.SZ 20170103 19.33 1.0970 5.4258 \n", - "8594009 001914.SZ 20170103 12.37 3.2627 6.6991 \n", - "8594010 302132.SZ 20170103 23.28 0.4912 1.5149 \n", + "8599133 300498.SZ 20170104 35.92 0.5417 0.5459 \n", + "8599134 002826.SZ 20170104 27.33 23.8426 23.8426 \n", + "8599135 001872.SZ 20170104 19.46 1.2359 6.1126 \n", + "8599136 001914.SZ 20170104 12.24 2.9843 6.1273 \n", + "8599137 302132.SZ 20170104 23.69 0.8350 2.5754 \n", "\n", " volume_ratio pe pe_ttm pb ps ps_ttm \\\n", "0 1.31 23.3421 25.6176 2.3433 3.7254 3.8065 \n", @@ -2213,39 +2232,39 @@ "3 0.87 70.0984 215.1863 2.0171 0.8405 0.8329 \n", "4 0.55 NaN NaN 2.3539 7.7727 8.2925 \n", "... ... ... ... ... ... ... \n", - "8594006 0.85 23.3367 22.2458 1.4847 0.9613 0.9248 \n", - "8594007 0.67 202.4855 287.1454 5.1852 2.3682 2.5386 \n", - "8594008 0.77 23.6158 23.1883 2.7052 6.6556 6.5584 \n", - "8594009 1.02 20.5631 15.1595 2.1186 1.4950 1.2600 \n", - "8594010 0.74 91.3908 84.6980 6.9391 8.9531 8.8570 \n", + "8599133 1.45 25.1819 12.7518 5.7450 3.2395 2.6791 \n", + "8599134 0.94 103.6390 103.6390 9.6797 14.9427 14.9427 \n", + "8599135 1.07 23.7746 23.3442 2.7234 6.7003 6.6025 \n", + "8599136 0.82 20.3470 15.0001 2.0964 1.4792 1.2468 \n", + "8599137 1.49 93.0003 86.1897 7.0613 9.1108 9.0130 \n", "\n", - " dv_ratio dv_ttm total_share float_share free_share total_mv \\\n", - "0 2.0904 2.0904 40391.1511 40240.6511 4634.6511 5.800169e+05 \n", - "1 0.0000 NaN 63973.2569 63922.1969 51122.1969 1.042764e+06 \n", - "2 3.7471 3.7471 47382.5333 46932.3226 14014.3219 7.533823e+05 \n", - "3 NaN NaN 20160.0000 11721.5883 9089.7537 1.687392e+05 \n", - "4 0.0000 NaN 43771.4245 43771.0570 25634.2299 2.503725e+05 \n", - "... ... ... ... ... ... ... \n", - "8594006 1.1074 1.1074 131871.9966 75088.9215 56812.2811 1.190804e+06 \n", - "8594007 0.1555 0.1555 54465.5360 53795.9475 39266.3119 5.604504e+05 \n", - "8594008 2.1211 2.1211 64476.3730 46486.6050 9398.8050 1.246328e+06 \n", - "8594009 0.4042 0.4042 66696.1416 66678.0666 32475.1786 8.250313e+05 \n", - "8594010 0.2291 0.2291 39384.0333 30419.3588 9862.3809 9.168603e+05 \n", + " dv_ratio dv_ttm total_share float_share free_share \\\n", + "0 2.0904 2.0904 40391.1511 40240.6511 4634.6511 \n", + "1 0.0000 NaN 63973.2569 63922.1969 51122.1969 \n", + "2 3.7471 3.7471 47382.5333 46932.3226 14014.3219 \n", + "3 NaN NaN 20160.0000 11721.5883 9089.7537 \n", + "4 0.0000 NaN 43771.4245 43771.0570 25634.2299 \n", + "... ... ... ... ... ... \n", + "8599133 2.5520 2.5520 435029.6856 336846.2386 334233.6683 \n", + "8599134 NaN NaN 18972.0000 4743.0000 4743.0000 \n", + "8599135 2.1069 2.1069 64476.3730 46486.6050 9398.8050 \n", + "8599136 0.4085 0.4085 66696.1416 66678.0666 32475.1786 \n", + "8599137 0.2251 0.2251 39384.0333 30419.3588 9862.3809 \n", "\n", - " circ_mv is_st \n", - "0 5.778557e+05 False \n", - "1 1.041932e+06 False \n", - "2 7.462239e+05 False \n", - "3 9.810969e+04 False \n", - "4 2.503704e+05 True \n", - "... ... ... \n", - "8594006 6.780530e+05 False \n", - "8594007 5.535603e+05 False \n", - "8594008 8.985861e+05 False \n", - "8594009 8.248077e+05 False \n", - "8594010 7.081627e+05 False \n", + " total_mv circ_mv is_st \n", + "0 5.800169e+05 5.778557e+05 False \n", + "1 1.042764e+06 1.041932e+06 False \n", + "2 7.533823e+05 7.462239e+05 False \n", + "3 1.687392e+05 9.810969e+04 False \n", + "4 2.503725e+05 2.503704e+05 True \n", + "... ... ... ... \n", + "8599133 1.562627e+07 1.209952e+07 False \n", + "8599134 5.185048e+05 1.296262e+05 False \n", + "8599135 1.254710e+06 9.046293e+05 False \n", + "8599136 8.163608e+05 8.161395e+05 False \n", + "8599137 9.330077e+05 7.206346e+05 False \n", "\n", - "[8594011 rows x 19 columns]\n" + "[8599138 rows x 19 columns]\n" ] } ], diff --git a/main/data/finance.ipynb b/main/data/finance.ipynb index 9f7c404..33423e3 100644 --- a/main/data/finance.ipynb +++ b/main/data/finance.ipynb @@ -45,7 +45,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "f403cc963e1d39b", "metadata": { "ExecuteTime": { @@ -359,6 +359,5791 @@ "成功获取 000811.SZ 的数据\n", "成功获取 000812.SZ 的数据\n", "成功获取 000813.SZ 的数据\n", + "已调用300次API,等待 0.97 秒以满足速率限制...\n", + "成功获取 000815.SZ 的数据\n", + "成功获取 000816.SZ 的数据\n", + "成功获取 000818.SZ 的数据\n", + "成功获取 000819.SZ 的数据\n", + "成功获取 000820.SZ 的数据\n", + "成功获取 000821.SZ 的数据\n", + "成功获取 000822.SZ 的数据\n", + "成功获取 000823.SZ 的数据\n", + "成功获取 000825.SZ 的数据\n", + "成功获取 000826.SZ 的数据\n", + "成功获取 000828.SZ 的数据\n", + "成功获取 000829.SZ 的数据\n", + "成功获取 000830.SZ 的数据\n", + "成功获取 000831.SZ 的数据\n", + "成功获取 000833.SZ 的数据\n", + "成功获取 000837.SZ 的数据\n", + "成功获取 000838.SZ 的数据\n", + "成功获取 000839.SZ 的数据\n", + "成功获取 000848.SZ 的数据\n", + "成功获取 000850.SZ 的数据\n", + "成功获取 000851.SZ 的数据\n", + "成功获取 000852.SZ 的数据\n", + "成功获取 000856.SZ 的数据\n", + "成功获取 000858.SZ 的数据\n", + "成功获取 000859.SZ 的数据\n", + "成功获取 000860.SZ 的数据\n", + "成功获取 000862.SZ 的数据\n", + "成功获取 000863.SZ 的数据\n", + "成功获取 000868.SZ 的数据\n", + "成功获取 000869.SZ 的数据\n", + "成功获取 000875.SZ 的数据\n", + "成功获取 000876.SZ 的数据\n", + "成功获取 000877.SZ 的数据\n", + "成功获取 000878.SZ 的数据\n", + "成功获取 000880.SZ 的数据\n", + "成功获取 000881.SZ 的数据\n", + "成功获取 000882.SZ 的数据\n", + "成功获取 000883.SZ 的数据\n", + "成功获取 000885.SZ 的数据\n", + "成功获取 000886.SZ 的数据\n", + "成功获取 000887.SZ 的数据\n", + "成功获取 000888.SZ 的数据\n", + "成功获取 000889.SZ 的数据\n", + "成功获取 000890.SZ 的数据\n", + "成功获取 000892.SZ 的数据\n", + "成功获取 000893.SZ 的数据\n", + "成功获取 000895.SZ 的数据\n", + "成功获取 000897.SZ 的数据\n", + "成功获取 000898.SZ 的数据\n", + "成功获取 000899.SZ 的数据\n", + "成功获取 000900.SZ 的数据\n", + "成功获取 000901.SZ 的数据\n", + "成功获取 000902.SZ 的数据\n", + "成功获取 000903.SZ 的数据\n", + "成功获取 000905.SZ 的数据\n", + "成功获取 000906.SZ 的数据\n", + "成功获取 000908.SZ 的数据\n", + "成功获取 000909.SZ 的数据\n", + "成功获取 000910.SZ 的数据\n", + "成功获取 000911.SZ 的数据\n", + "成功获取 000912.SZ 的数据\n", + "成功获取 000913.SZ 的数据\n", + "成功获取 000915.SZ 的数据\n", + "成功获取 000917.SZ 的数据\n", + "成功获取 000919.SZ 的数据\n", + "成功获取 000920.SZ 的数据\n", + "成功获取 000921.SZ 的数据\n", + "成功获取 000922.SZ 的数据\n", + "成功获取 000923.SZ 的数据\n", + "成功获取 000925.SZ 的数据\n", + "成功获取 000926.SZ 的数据\n", + "成功获取 000927.SZ 的数据\n", + "成功获取 000928.SZ 的数据\n", + "成功获取 000929.SZ 的数据\n", + "成功获取 000930.SZ 的数据\n", + "成功获取 000931.SZ 的数据\n", + "成功获取 000932.SZ 的数据\n", + "成功获取 000933.SZ 的数据\n", + "成功获取 000935.SZ 的数据\n", + "成功获取 000936.SZ 的数据\n", + "成功获取 000937.SZ 的数据\n", + "成功获取 000938.SZ 的数据\n", + "成功获取 000948.SZ 的数据\n", + "成功获取 000949.SZ 的数据\n", + "成功获取 000950.SZ 的数据\n", + "成功获取 000951.SZ 的数据\n", + "成功获取 000952.SZ 的数据\n", + "成功获取 000953.SZ 的数据\n", + "成功获取 000955.SZ 的数据\n", + "成功获取 000957.SZ 的数据\n", + "成功获取 000958.SZ 的数据\n", + "成功获取 000959.SZ 的数据\n", + "成功获取 000960.SZ 的数据\n", + "成功获取 000962.SZ 的数据\n", + "成功获取 000963.SZ 的数据\n", + "成功获取 000965.SZ 的数据\n", + "成功获取 000966.SZ 的数据\n", + "成功获取 000967.SZ 的数据\n", + "成功获取 000968.SZ 的数据\n", + "成功获取 000969.SZ 的数据\n", + "成功获取 000970.SZ 的数据\n", + "成功获取 000972.SZ 的数据\n", + "成功获取 000973.SZ 的数据\n", + "成功获取 000975.SZ 的数据\n", + "成功获取 000977.SZ 的数据\n", + "成功获取 000978.SZ 的数据\n", + "成功获取 000980.SZ 的数据\n", + "成功获取 000981.SZ 的数据\n", + "成功获取 000983.SZ 的数据\n", + "成功获取 000985.SZ 的数据\n", + "成功获取 000987.SZ 的数据\n", + "成功获取 000988.SZ 的数据\n", + "成功获取 000989.SZ 的数据\n", + "成功获取 000990.SZ 的数据\n", + "成功获取 000993.SZ 的数据\n", + "成功获取 000995.SZ 的数据\n", + "成功获取 000997.SZ 的数据\n", + "成功获取 000998.SZ 的数据\n", + "成功获取 000999.SZ 的数据\n", + "成功获取 001201.SZ 的数据\n", + "成功获取 001202.SZ 的数据\n", + "成功获取 001203.SZ 的数据\n", + "成功获取 001205.SZ 的数据\n", + "成功获取 001206.SZ 的数据\n", + "成功获取 001207.SZ 的数据\n", + "成功获取 001208.SZ 的数据\n", + "成功获取 001209.SZ 的数据\n", + "成功获取 001210.SZ 的数据\n", + "成功获取 001211.SZ 的数据\n", + "成功获取 001212.SZ 的数据\n", + "成功获取 001213.SZ 的数据\n", + "成功获取 001215.SZ 的数据\n", + "成功获取 001216.SZ 的数据\n", + "成功获取 001217.SZ 的数据\n", + "成功获取 001218.SZ 的数据\n", + "成功获取 001219.SZ 的数据\n", + "成功获取 001222.SZ 的数据\n", + "成功获取 001223.SZ 的数据\n", + "成功获取 001225.SZ 的数据\n", + "成功获取 001226.SZ 的数据\n", + "成功获取 001227.SZ 的数据\n", + "成功获取 001228.SZ 的数据\n", + "成功获取 001229.SZ 的数据\n", + "成功获取 001230.SZ 的数据\n", + "成功获取 001231.SZ 的数据\n", + "成功获取 001234.SZ 的数据\n", + "成功获取 001236.SZ 的数据\n", + "成功获取 001238.SZ 的数据\n", + "成功获取 001239.SZ 的数据\n", + "成功获取 001255.SZ 的数据\n", + "成功获取 001256.SZ 的数据\n", + "成功获取 001258.SZ 的数据\n", + "成功获取 001259.SZ 的数据\n", + "成功获取 001260.SZ 的数据\n", + "成功获取 001266.SZ 的数据\n", + "成功获取 001267.SZ 的数据\n", + "成功获取 001268.SZ 的数据\n", + "成功获取 001269.SZ 的数据\n", + "成功获取 001270.SZ 的数据\n", + "成功获取 001277.SZ 的数据\n", + "成功获取 001278.SZ 的数据\n", + "成功获取 001279.SZ 的数据\n", + "成功获取 001282.SZ 的数据\n", + "成功获取 001283.SZ 的数据\n", + "成功获取 001286.SZ 的数据\n", + "成功获取 001287.SZ 的数据\n", + "成功获取 001288.SZ 的数据\n", + "成功获取 001289.SZ 的数据\n", + "成功获取 001296.SZ 的数据\n", + "成功获取 001298.SZ 的数据\n", + "成功获取 001299.SZ 的数据\n", + "成功获取 001300.SZ 的数据\n", + "成功获取 001301.SZ 的数据\n", + "成功获取 001306.SZ 的数据\n", + "成功获取 001308.SZ 的数据\n", + "成功获取 001309.SZ 的数据\n", + "成功获取 001311.SZ 的数据\n", + "成功获取 001313.SZ 的数据\n", + "成功获取 001314.SZ 的数据\n", + "成功获取 001316.SZ 的数据\n", + "成功获取 001317.SZ 的数据\n", + "成功获取 001318.SZ 的数据\n", + "成功获取 001319.SZ 的数据\n", + "成功获取 001322.SZ 的数据\n", + "成功获取 001323.SZ 的数据\n", + "成功获取 001324.SZ 的数据\n", + "成功获取 001326.SZ 的数据\n", + "成功获取 001328.SZ 的数据\n", + "成功获取 001330.SZ 的数据\n", + "成功获取 001331.SZ 的数据\n", + "成功获取 001332.SZ 的数据\n", + "成功获取 001333.SZ 的数据\n", + "成功获取 001336.SZ 的数据\n", + "成功获取 001337.SZ 的数据\n", + "成功获取 001338.SZ 的数据\n", + "成功获取 001339.SZ 的数据\n", + "成功获取 001356.SZ 的数据\n", + "成功获取 001358.SZ 的数据\n", + "成功获取 001359.SZ 的数据\n", + "成功获取 001360.SZ 的数据\n", + "成功获取 001366.SZ 的数据\n", + "成功获取 001367.SZ 的数据\n", + "成功获取 001368.SZ 的数据\n", + "成功获取 001373.SZ 的数据\n", + "成功获取 001376.SZ 的数据\n", + "成功获取 001378.SZ 的数据\n", + "成功获取 001379.SZ 的数据\n", + "成功获取 001380.SZ 的数据\n", + "成功获取 001387.SZ 的数据\n", + "成功获取 001389.SZ 的数据\n", + "成功获取 001391.SZ 的数据\n", + "成功获取 001395.SZ 的数据\n", + "成功获取 001696.SZ 的数据\n", + "成功获取 001872.SZ 的数据\n", + "成功获取 001896.SZ 的数据\n", + "成功获取 001914.SZ 的数据\n", + "成功获取 001965.SZ 的数据\n", + "成功获取 001979.SZ 的数据\n", + "成功获取 002001.SZ 的数据\n", + "成功获取 002003.SZ 的数据\n", + "成功获取 002004.SZ 的数据\n", + "成功获取 002005.SZ 的数据\n", + "成功获取 002006.SZ 的数据\n", + "成功获取 002007.SZ 的数据\n", + "成功获取 002008.SZ 的数据\n", + "成功获取 002009.SZ 的数据\n", + "成功获取 002010.SZ 的数据\n", + "成功获取 002011.SZ 的数据\n", + "成功获取 002012.SZ 的数据\n", + "成功获取 002014.SZ 的数据\n", + "成功获取 002015.SZ 的数据\n", + "成功获取 002016.SZ 的数据\n", + "成功获取 002017.SZ 的数据\n", + "成功获取 002019.SZ 的数据\n", + "成功获取 002020.SZ 的数据\n", + "成功获取 002021.SZ 的数据\n", + "成功获取 002022.SZ 的数据\n", + "成功获取 002023.SZ 的数据\n", + "成功获取 002024.SZ 的数据\n", + "成功获取 002025.SZ 的数据\n", + "成功获取 002026.SZ 的数据\n", + "成功获取 002027.SZ 的数据\n", + "成功获取 002028.SZ 的数据\n", + "成功获取 002029.SZ 的数据\n", + "成功获取 002030.SZ 的数据\n", + "成功获取 002031.SZ 的数据\n", + "成功获取 002032.SZ 的数据\n", + "成功获取 002033.SZ 的数据\n", + "成功获取 002034.SZ 的数据\n", + "成功获取 002035.SZ 的数据\n", + "成功获取 002036.SZ 的数据\n", + "成功获取 002037.SZ 的数据\n", + "成功获取 002038.SZ 的数据\n", + "成功获取 002039.SZ 的数据\n", + "成功获取 002040.SZ 的数据\n", + "成功获取 002041.SZ 的数据\n", + "成功获取 002042.SZ 的数据\n", + "成功获取 002043.SZ 的数据\n", + "成功获取 002044.SZ 的数据\n", + "成功获取 002045.SZ 的数据\n", + "成功获取 002046.SZ 的数据\n", + "成功获取 002047.SZ 的数据\n", + "成功获取 002048.SZ 的数据\n", + "成功获取 002049.SZ 的数据\n", + "成功获取 002050.SZ 的数据\n", + "成功获取 002051.SZ 的数据\n", + "成功获取 002052.SZ 的数据\n", + "成功获取 002053.SZ 的数据\n", + "成功获取 002054.SZ 的数据\n", + "成功获取 002055.SZ 的数据\n", + "成功获取 002056.SZ 的数据\n", + "成功获取 002057.SZ 的数据\n", + "成功获取 002058.SZ 的数据\n", + "成功获取 002059.SZ 的数据\n", + "成功获取 002060.SZ 的数据\n", + "成功获取 002061.SZ 的数据\n", + "成功获取 002062.SZ 的数据\n", + "成功获取 002063.SZ 的数据\n", + "成功获取 002064.SZ 的数据\n", + "成功获取 002065.SZ 的数据\n", + "成功获取 002066.SZ 的数据\n", + "成功获取 002067.SZ 的数据\n", + "成功获取 002068.SZ 的数据\n", + "成功获取 002069.SZ 的数据\n", + "成功获取 002072.SZ 的数据\n", + "成功获取 002073.SZ 的数据\n", + "成功获取 002074.SZ 的数据\n", + "成功获取 002075.SZ 的数据\n", + "成功获取 002076.SZ 的数据\n", + "成功获取 002077.SZ 的数据\n", + "成功获取 002078.SZ 的数据\n", + "成功获取 002079.SZ 的数据\n", + "成功获取 002080.SZ 的数据\n", + "成功获取 002081.SZ 的数据\n", + "成功获取 002082.SZ 的数据\n", + "成功获取 002083.SZ 的数据\n", + "成功获取 002084.SZ 的数据\n", + "成功获取 002085.SZ 的数据\n", + "成功获取 002086.SZ 的数据\n", + "成功获取 002088.SZ 的数据\n", + "已调用300次API,等待 8.15 秒以满足速率限制...\n", + "成功获取 002090.SZ 的数据\n", + "成功获取 002091.SZ 的数据\n", + "成功获取 002092.SZ 的数据\n", + "成功获取 002093.SZ 的数据\n", + "成功获取 002094.SZ 的数据\n", + "成功获取 002095.SZ 的数据\n", + "成功获取 002096.SZ 的数据\n", + "成功获取 002097.SZ 的数据\n", + "成功获取 002098.SZ 的数据\n", + "成功获取 002099.SZ 的数据\n", + "成功获取 002100.SZ 的数据\n", + "成功获取 002101.SZ 的数据\n", + "成功获取 002102.SZ 的数据\n", + "成功获取 002103.SZ 的数据\n", + "成功获取 002104.SZ 的数据\n", + "成功获取 002105.SZ 的数据\n", + "成功获取 002106.SZ 的数据\n", + "成功获取 002107.SZ 的数据\n", + "成功获取 002108.SZ 的数据\n", + "成功获取 002109.SZ 的数据\n", + "成功获取 002110.SZ 的数据\n", + "成功获取 002111.SZ 的数据\n", + "成功获取 002112.SZ 的数据\n", + "成功获取 002114.SZ 的数据\n", + "成功获取 002115.SZ 的数据\n", + "成功获取 002116.SZ 的数据\n", + "成功获取 002117.SZ 的数据\n", + "成功获取 002119.SZ 的数据\n", + "成功获取 002120.SZ 的数据\n", + "成功获取 002121.SZ 的数据\n", + "成功获取 002122.SZ 的数据\n", + "成功获取 002123.SZ 的数据\n", + "成功获取 002124.SZ 的数据\n", + "成功获取 002125.SZ 的数据\n", + "成功获取 002126.SZ 的数据\n", + "成功获取 002127.SZ 的数据\n", + "成功获取 002128.SZ 的数据\n", + "成功获取 002129.SZ 的数据\n", + "成功获取 002130.SZ 的数据\n", + "成功获取 002131.SZ 的数据\n", + "成功获取 002132.SZ 的数据\n", + "成功获取 002133.SZ 的数据\n", + "成功获取 002134.SZ 的数据\n", + "成功获取 002135.SZ 的数据\n", + "成功获取 002136.SZ 的数据\n", + "成功获取 002137.SZ 的数据\n", + "成功获取 002138.SZ 的数据\n", + "成功获取 002139.SZ 的数据\n", + "成功获取 002140.SZ 的数据\n", + "成功获取 002141.SZ 的数据\n", + "成功获取 002142.SZ 的数据\n", + "成功获取 002144.SZ 的数据\n", + "成功获取 002145.SZ 的数据\n", + "成功获取 002146.SZ 的数据\n", + "成功获取 002148.SZ 的数据\n", + "成功获取 002149.SZ 的数据\n", + "成功获取 002150.SZ 的数据\n", + "成功获取 002151.SZ 的数据\n", + "成功获取 002152.SZ 的数据\n", + "成功获取 002153.SZ 的数据\n", + "成功获取 002154.SZ 的数据\n", + "成功获取 002155.SZ 的数据\n", + "成功获取 002156.SZ 的数据\n", + "成功获取 002157.SZ 的数据\n", + "成功获取 002158.SZ 的数据\n", + "成功获取 002159.SZ 的数据\n", + "成功获取 002160.SZ 的数据\n", + "成功获取 002161.SZ 的数据\n", + "成功获取 002162.SZ 的数据\n", + "成功获取 002163.SZ 的数据\n", + "成功获取 002164.SZ 的数据\n", + "成功获取 002165.SZ 的数据\n", + "成功获取 002166.SZ 的数据\n", + "成功获取 002167.SZ 的数据\n", + "成功获取 002168.SZ 的数据\n", + "成功获取 002169.SZ 的数据\n", + "成功获取 002170.SZ 的数据\n", + "成功获取 002171.SZ 的数据\n", + "成功获取 002172.SZ 的数据\n", + "成功获取 002173.SZ 的数据\n", + "成功获取 002174.SZ 的数据\n", + "成功获取 002175.SZ 的数据\n", + "成功获取 002176.SZ 的数据\n", + "成功获取 002177.SZ 的数据\n", + "成功获取 002178.SZ 的数据\n", + "成功获取 002179.SZ 的数据\n", + "成功获取 002180.SZ 的数据\n", + "成功获取 002181.SZ 的数据\n", + "成功获取 002182.SZ 的数据\n", + "成功获取 002183.SZ 的数据\n", + "成功获取 002184.SZ 的数据\n", + "成功获取 002185.SZ 的数据\n", + "成功获取 002186.SZ 的数据\n", + "成功获取 002187.SZ 的数据\n", + "成功获取 002188.SZ 的数据\n", + "成功获取 002189.SZ 的数据\n", + "成功获取 002190.SZ 的数据\n", + "成功获取 002191.SZ 的数据\n", + "成功获取 002192.SZ 的数据\n", + "成功获取 002193.SZ 的数据\n", + "成功获取 002194.SZ 的数据\n", + "成功获取 002195.SZ 的数据\n", + "成功获取 002196.SZ 的数据\n", + "成功获取 002197.SZ 的数据\n", + "成功获取 002198.SZ 的数据\n", + "成功获取 002199.SZ 的数据\n", + "成功获取 002200.SZ 的数据\n", + "成功获取 002201.SZ 的数据\n", + "成功获取 002202.SZ 的数据\n", + "成功获取 002203.SZ 的数据\n", + "成功获取 002204.SZ 的数据\n", + "成功获取 002205.SZ 的数据\n", + "成功获取 002206.SZ 的数据\n", + "成功获取 002207.SZ 的数据\n", + "成功获取 002208.SZ 的数据\n", + "成功获取 002209.SZ 的数据\n", + "成功获取 002210.SZ 的数据\n", + "成功获取 002211.SZ 的数据\n", + "成功获取 002212.SZ 的数据\n", + "成功获取 002213.SZ 的数据\n", + "成功获取 002214.SZ 的数据\n", + "成功获取 002215.SZ 的数据\n", + "成功获取 002216.SZ 的数据\n", + "成功获取 002217.SZ 的数据\n", + "成功获取 002218.SZ 的数据\n", + "成功获取 002219.SZ 的数据\n", + "成功获取 002221.SZ 的数据\n", + "成功获取 002222.SZ 的数据\n", + "成功获取 002223.SZ 的数据\n", + "成功获取 002224.SZ 的数据\n", + "成功获取 002225.SZ 的数据\n", + "成功获取 002226.SZ 的数据\n", + "成功获取 002227.SZ 的数据\n", + "成功获取 002228.SZ 的数据\n", + "成功获取 002229.SZ 的数据\n", + "成功获取 002230.SZ 的数据\n", + "成功获取 002231.SZ 的数据\n", + "成功获取 002232.SZ 的数据\n", + "成功获取 002233.SZ 的数据\n", + "成功获取 002234.SZ 的数据\n", + "成功获取 002235.SZ 的数据\n", + "成功获取 002236.SZ 的数据\n", + "成功获取 002237.SZ 的数据\n", + "成功获取 002238.SZ 的数据\n", + "成功获取 002239.SZ 的数据\n", + "成功获取 002240.SZ 的数据\n", + "成功获取 002241.SZ 的数据\n", + "成功获取 002242.SZ 的数据\n", + "成功获取 002243.SZ 的数据\n", + "成功获取 002244.SZ 的数据\n", + "成功获取 002245.SZ 的数据\n", + "成功获取 002246.SZ 的数据\n", + "成功获取 002247.SZ 的数据\n", + "成功获取 002248.SZ 的数据\n", + "成功获取 002249.SZ 的数据\n", + "成功获取 002250.SZ 的数据\n", + "成功获取 002251.SZ 的数据\n", + "成功获取 002252.SZ 的数据\n", + "成功获取 002253.SZ 的数据\n", + "成功获取 002254.SZ 的数据\n", + "成功获取 002255.SZ 的数据\n", + "成功获取 002256.SZ 的数据\n", + "成功获取 002258.SZ 的数据\n", + "成功获取 002259.SZ 的数据\n", + "成功获取 002261.SZ 的数据\n", + "成功获取 002262.SZ 的数据\n", + "成功获取 002263.SZ 的数据\n", + "成功获取 002264.SZ 的数据\n", + "成功获取 002265.SZ 的数据\n", + "成功获取 002266.SZ 的数据\n", + "成功获取 002267.SZ 的数据\n", + "成功获取 002268.SZ 的数据\n", + "成功获取 002269.SZ 的数据\n", + "成功获取 002270.SZ 的数据\n", + "成功获取 002271.SZ 的数据\n", + "成功获取 002272.SZ 的数据\n", + "成功获取 002273.SZ 的数据\n", + "成功获取 002274.SZ 的数据\n", + "成功获取 002275.SZ 的数据\n", + "成功获取 002276.SZ 的数据\n", + "成功获取 002277.SZ 的数据\n", + "成功获取 002278.SZ 的数据\n", + "成功获取 002279.SZ 的数据\n", + "成功获取 002281.SZ 的数据\n", + "成功获取 002282.SZ 的数据\n", + "成功获取 002283.SZ 的数据\n", + "成功获取 002284.SZ 的数据\n", + "成功获取 002285.SZ 的数据\n", + "成功获取 002286.SZ 的数据\n", + "成功获取 002287.SZ 的数据\n", + "成功获取 002289.SZ 的数据\n", + "成功获取 002290.SZ 的数据\n", + "成功获取 002291.SZ 的数据\n", + "成功获取 002292.SZ 的数据\n", + "成功获取 002293.SZ 的数据\n", + "成功获取 002294.SZ 的数据\n", + "成功获取 002295.SZ 的数据\n", + "成功获取 002296.SZ 的数据\n", + "成功获取 002297.SZ 的数据\n", + "成功获取 002298.SZ 的数据\n", + "成功获取 002299.SZ 的数据\n", + "成功获取 002300.SZ 的数据\n", + "成功获取 002301.SZ 的数据\n", + "成功获取 002302.SZ 的数据\n", + "成功获取 002303.SZ 的数据\n", + "成功获取 002304.SZ 的数据\n", + "成功获取 002305.SZ 的数据\n", + "成功获取 002306.SZ 的数据\n", + "成功获取 002307.SZ 的数据\n", + "成功获取 002309.SZ 的数据\n", + "成功获取 002310.SZ 的数据\n", + "成功获取 002311.SZ 的数据\n", + "成功获取 002312.SZ 的数据\n", + "成功获取 002313.SZ 的数据\n", + "成功获取 002314.SZ 的数据\n", + "成功获取 002315.SZ 的数据\n", + "成功获取 002316.SZ 的数据\n", + "成功获取 002317.SZ 的数据\n", + "成功获取 002318.SZ 的数据\n", + "成功获取 002319.SZ 的数据\n", + "成功获取 002320.SZ 的数据\n", + "成功获取 002321.SZ 的数据\n", + "成功获取 002322.SZ 的数据\n", + "成功获取 002323.SZ 的数据\n", + "成功获取 002324.SZ 的数据\n", + "成功获取 002326.SZ 的数据\n", + "成功获取 002327.SZ 的数据\n", + "成功获取 002328.SZ 的数据\n", + "成功获取 002329.SZ 的数据\n", + "成功获取 002330.SZ 的数据\n", + "成功获取 002331.SZ 的数据\n", + "成功获取 002332.SZ 的数据\n", + "成功获取 002333.SZ 的数据\n", + "成功获取 002334.SZ 的数据\n", + "成功获取 002335.SZ 的数据\n", + "成功获取 002336.SZ 的数据\n", + "成功获取 002337.SZ 的数据\n", + "成功获取 002338.SZ 的数据\n", + "成功获取 002339.SZ 的数据\n", + "成功获取 002340.SZ 的数据\n", + "成功获取 002342.SZ 的数据\n", + "成功获取 002343.SZ 的数据\n", + "成功获取 002344.SZ 的数据\n", + "成功获取 002345.SZ 的数据\n", + "成功获取 002346.SZ 的数据\n", + "成功获取 002347.SZ 的数据\n", + "成功获取 002348.SZ 的数据\n", + "成功获取 002349.SZ 的数据\n", + "成功获取 002350.SZ 的数据\n", + "成功获取 002351.SZ 的数据\n", + "成功获取 002352.SZ 的数据\n", + "成功获取 002353.SZ 的数据\n", + "成功获取 002354.SZ 的数据\n", + "成功获取 002355.SZ 的数据\n", + "成功获取 002356.SZ 的数据\n", + "成功获取 002357.SZ 的数据\n", + "成功获取 002358.SZ 的数据\n", + "成功获取 002360.SZ 的数据\n", + "成功获取 002361.SZ 的数据\n", + "成功获取 002362.SZ 的数据\n", + "成功获取 002363.SZ 的数据\n", + "成功获取 002364.SZ 的数据\n", + "成功获取 002365.SZ 的数据\n", + "成功获取 002366.SZ 的数据\n", + "成功获取 002367.SZ 的数据\n", + "成功获取 002368.SZ 的数据\n", + "成功获取 002369.SZ 的数据\n", + "成功获取 002370.SZ 的数据\n", + "成功获取 002371.SZ 的数据\n", + "成功获取 002372.SZ 的数据\n", + "成功获取 002373.SZ 的数据\n", + "成功获取 002374.SZ 的数据\n", + "成功获取 002375.SZ 的数据\n", + "成功获取 002376.SZ 的数据\n", + "成功获取 002377.SZ 的数据\n", + "成功获取 002378.SZ 的数据\n", + "成功获取 002379.SZ 的数据\n", + "成功获取 002380.SZ 的数据\n", + "成功获取 002381.SZ 的数据\n", + "成功获取 002382.SZ 的数据\n", + "成功获取 002383.SZ 的数据\n", + "成功获取 002384.SZ 的数据\n", + "成功获取 002385.SZ 的数据\n", + "成功获取 002386.SZ 的数据\n", + "成功获取 002387.SZ 的数据\n", + "成功获取 002388.SZ 的数据\n", + "成功获取 002389.SZ 的数据\n", + "成功获取 002390.SZ 的数据\n", + "成功获取 002391.SZ 的数据\n", + "成功获取 002392.SZ 的数据\n", + "成功获取 002393.SZ 的数据\n", + "成功获取 002394.SZ 的数据\n", + "成功获取 002395.SZ 的数据\n", + "成功获取 002396.SZ 的数据\n", + "成功获取 002397.SZ 的数据\n", + "成功获取 002398.SZ 的数据\n", + "成功获取 002399.SZ 的数据\n", + "成功获取 002400.SZ 的数据\n", + "成功获取 002401.SZ 的数据\n", + "成功获取 002402.SZ 的数据\n", + "已调用300次API,等待 1.95 秒以满足速率限制...\n", + "成功获取 002403.SZ 的数据\n", + "成功获取 002404.SZ 的数据\n", + "成功获取 002405.SZ 的数据\n", + "成功获取 002406.SZ 的数据\n", + "成功获取 002407.SZ 的数据\n", + "成功获取 002408.SZ 的数据\n", + "成功获取 002409.SZ 的数据\n", + "成功获取 002410.SZ 的数据\n", + "成功获取 002412.SZ 的数据\n", + "成功获取 002413.SZ 的数据\n", + "成功获取 002414.SZ 的数据\n", + "成功获取 002415.SZ 的数据\n", + "成功获取 002416.SZ 的数据\n", + "成功获取 002418.SZ 的数据\n", + "成功获取 002419.SZ 的数据\n", + "成功获取 002420.SZ 的数据\n", + "成功获取 002421.SZ 的数据\n", + "成功获取 002422.SZ 的数据\n", + "成功获取 002423.SZ 的数据\n", + "成功获取 002424.SZ 的数据\n", + "成功获取 002425.SZ 的数据\n", + "成功获取 002426.SZ 的数据\n", + "成功获取 002427.SZ 的数据\n", + "成功获取 002428.SZ 的数据\n", + "成功获取 002429.SZ 的数据\n", + "成功获取 002430.SZ 的数据\n", + "成功获取 002431.SZ 的数据\n", + "成功获取 002432.SZ 的数据\n", + "成功获取 002434.SZ 的数据\n", + "成功获取 002436.SZ 的数据\n", + "成功获取 002437.SZ 的数据\n", + "成功获取 002438.SZ 的数据\n", + "成功获取 002439.SZ 的数据\n", + "成功获取 002440.SZ 的数据\n", + "成功获取 002441.SZ 的数据\n", + "成功获取 002442.SZ 的数据\n", + "成功获取 002443.SZ 的数据\n", + "成功获取 002444.SZ 的数据\n", + "成功获取 002445.SZ 的数据\n", + "成功获取 002446.SZ 的数据\n", + "成功获取 002448.SZ 的数据\n", + "成功获取 002449.SZ 的数据\n", + "成功获取 002451.SZ 的数据\n", + "成功获取 002452.SZ 的数据\n", + "成功获取 002453.SZ 的数据\n", + "成功获取 002454.SZ 的数据\n", + "成功获取 002455.SZ 的数据\n", + "成功获取 002456.SZ 的数据\n", + "成功获取 002457.SZ 的数据\n", + "成功获取 002458.SZ 的数据\n", + "成功获取 002459.SZ 的数据\n", + "成功获取 002460.SZ 的数据\n", + "成功获取 002461.SZ 的数据\n", + "成功获取 002462.SZ 的数据\n", + "成功获取 002463.SZ 的数据\n", + "成功获取 002465.SZ 的数据\n", + "成功获取 002466.SZ 的数据\n", + "成功获取 002467.SZ 的数据\n", + "成功获取 002468.SZ 的数据\n", + "成功获取 002469.SZ 的数据\n", + "成功获取 002470.SZ 的数据\n", + "成功获取 002471.SZ 的数据\n", + "成功获取 002472.SZ 的数据\n", + "成功获取 002474.SZ 的数据\n", + "成功获取 002475.SZ 的数据\n", + "成功获取 002476.SZ 的数据\n", + "成功获取 002478.SZ 的数据\n", + "成功获取 002479.SZ 的数据\n", + "成功获取 002480.SZ 的数据\n", + "成功获取 002481.SZ 的数据\n", + "成功获取 002482.SZ 的数据\n", + "成功获取 002483.SZ 的数据\n", + "成功获取 002484.SZ 的数据\n", + "成功获取 002485.SZ 的数据\n", + "成功获取 002486.SZ 的数据\n", + "成功获取 002487.SZ 的数据\n", + "成功获取 002488.SZ 的数据\n", + "成功获取 002489.SZ 的数据\n", + "成功获取 002490.SZ 的数据\n", + "成功获取 002491.SZ 的数据\n", + "成功获取 002492.SZ 的数据\n", + "成功获取 002493.SZ 的数据\n", + "成功获取 002494.SZ 的数据\n", + "成功获取 002495.SZ 的数据\n", + "成功获取 002496.SZ 的数据\n", + "成功获取 002497.SZ 的数据\n", + "成功获取 002498.SZ 的数据\n", + "成功获取 002500.SZ 的数据\n", + "成功获取 002501.SZ 的数据\n", + "成功获取 002506.SZ 的数据\n", + "成功获取 002507.SZ 的数据\n", + "成功获取 002508.SZ 的数据\n", + "成功获取 002510.SZ 的数据\n", + "成功获取 002511.SZ 的数据\n", + "成功获取 002512.SZ 的数据\n", + "成功获取 002513.SZ 的数据\n", + "成功获取 002514.SZ 的数据\n", + "成功获取 002515.SZ 的数据\n", + "成功获取 002516.SZ 的数据\n", + "成功获取 002517.SZ 的数据\n", + "成功获取 002518.SZ 的数据\n", + "成功获取 002519.SZ 的数据\n", + "成功获取 002520.SZ 的数据\n", + "成功获取 002521.SZ 的数据\n", + "成功获取 002522.SZ 的数据\n", + "成功获取 002523.SZ 的数据\n", + "成功获取 002524.SZ 的数据\n", + "成功获取 002526.SZ 的数据\n", + "成功获取 002527.SZ 的数据\n", + "成功获取 002528.SZ 的数据\n", + "成功获取 002529.SZ 的数据\n", + "成功获取 002530.SZ 的数据\n", + "成功获取 002531.SZ 的数据\n", + "成功获取 002532.SZ 的数据\n", + "成功获取 002533.SZ 的数据\n", + "成功获取 002534.SZ 的数据\n", + "成功获取 002535.SZ 的数据\n", + "成功获取 002536.SZ 的数据\n", + "成功获取 002537.SZ 的数据\n", + "成功获取 002538.SZ 的数据\n", + "成功获取 002539.SZ 的数据\n", + "成功获取 002540.SZ 的数据\n", + "成功获取 002541.SZ 的数据\n", + "成功获取 002542.SZ 的数据\n", + "成功获取 002543.SZ 的数据\n", + "成功获取 002544.SZ 的数据\n", + "成功获取 002545.SZ 的数据\n", + "成功获取 002546.SZ 的数据\n", + "成功获取 002547.SZ 的数据\n", + "成功获取 002548.SZ 的数据\n", + "成功获取 002549.SZ 的数据\n", + "成功获取 002550.SZ 的数据\n", + "成功获取 002551.SZ 的数据\n", + "成功获取 002552.SZ 的数据\n", + "成功获取 002553.SZ 的数据\n", + "成功获取 002554.SZ 的数据\n", + "成功获取 002555.SZ 的数据\n", + "成功获取 002556.SZ 的数据\n", + "成功获取 002557.SZ 的数据\n", + "成功获取 002558.SZ 的数据\n", + "成功获取 002559.SZ 的数据\n", + "成功获取 002560.SZ 的数据\n", + "成功获取 002561.SZ 的数据\n", + "成功获取 002562.SZ 的数据\n", + "成功获取 002563.SZ 的数据\n", + "成功获取 002564.SZ 的数据\n", + "成功获取 002565.SZ 的数据\n", + "成功获取 002566.SZ 的数据\n", + "成功获取 002567.SZ 的数据\n", + "成功获取 002568.SZ 的数据\n", + "成功获取 002569.SZ 的数据\n", + "成功获取 002570.SZ 的数据\n", + "成功获取 002571.SZ 的数据\n", + "成功获取 002572.SZ 的数据\n", + "成功获取 002573.SZ 的数据\n", + "成功获取 002574.SZ 的数据\n", + "成功获取 002575.SZ 的数据\n", + "成功获取 002576.SZ 的数据\n", + "成功获取 002577.SZ 的数据\n", + "成功获取 002578.SZ 的数据\n", + "成功获取 002579.SZ 的数据\n", + "成功获取 002580.SZ 的数据\n", + "成功获取 002581.SZ 的数据\n", + "成功获取 002582.SZ 的数据\n", + "成功获取 002583.SZ 的数据\n", + "成功获取 002584.SZ 的数据\n", + "成功获取 002585.SZ 的数据\n", + "成功获取 002586.SZ 的数据\n", + "成功获取 002587.SZ 的数据\n", + "成功获取 002588.SZ 的数据\n", + "成功获取 002589.SZ 的数据\n", + "成功获取 002590.SZ 的数据\n", + "成功获取 002591.SZ 的数据\n", + "成功获取 002592.SZ 的数据\n", + "成功获取 002593.SZ 的数据\n", + "成功获取 002594.SZ 的数据\n", + "成功获取 002595.SZ 的数据\n", + "成功获取 002596.SZ 的数据\n", + "成功获取 002597.SZ 的数据\n", + "成功获取 002598.SZ 的数据\n", + "成功获取 002599.SZ 的数据\n", + "成功获取 002600.SZ 的数据\n", + "成功获取 002601.SZ 的数据\n", + "成功获取 002602.SZ 的数据\n", + "成功获取 002603.SZ 的数据\n", + "成功获取 002605.SZ 的数据\n", + "成功获取 002606.SZ 的数据\n", + "成功获取 002607.SZ 的数据\n", + "成功获取 002608.SZ 的数据\n", + "成功获取 002609.SZ 的数据\n", + "成功获取 002611.SZ 的数据\n", + "成功获取 002612.SZ 的数据\n", + "成功获取 002613.SZ 的数据\n", + "成功获取 002614.SZ 的数据\n", + "成功获取 002615.SZ 的数据\n", + "成功获取 002616.SZ 的数据\n", + "成功获取 002617.SZ 的数据\n", + "成功获取 002620.SZ 的数据\n", + "成功获取 002622.SZ 的数据\n", + "成功获取 002623.SZ 的数据\n", + "成功获取 002624.SZ 的数据\n", + "成功获取 002625.SZ 的数据\n", + "成功获取 002626.SZ 的数据\n", + "成功获取 002627.SZ 的数据\n", + "成功获取 002628.SZ 的数据\n", + "成功获取 002629.SZ 的数据\n", + "成功获取 002630.SZ 的数据\n", + "成功获取 002631.SZ 的数据\n", + "成功获取 002632.SZ 的数据\n", + "成功获取 002633.SZ 的数据\n", + "成功获取 002634.SZ 的数据\n", + "成功获取 002635.SZ 的数据\n", + "成功获取 002636.SZ 的数据\n", + "成功获取 002637.SZ 的数据\n", + "成功获取 002638.SZ 的数据\n", + "成功获取 002639.SZ 的数据\n", + "成功获取 002640.SZ 的数据\n", + "成功获取 002641.SZ 的数据\n", + "成功获取 002642.SZ 的数据\n", + "成功获取 002643.SZ 的数据\n", + "成功获取 002644.SZ 的数据\n", + "成功获取 002645.SZ 的数据\n", + "成功获取 002646.SZ 的数据\n", + "成功获取 002647.SZ 的数据\n", + "成功获取 002648.SZ 的数据\n", + "成功获取 002649.SZ 的数据\n", + "成功获取 002650.SZ 的数据\n", + "成功获取 002651.SZ 的数据\n", + "成功获取 002652.SZ 的数据\n", + "成功获取 002653.SZ 的数据\n", + "成功获取 002654.SZ 的数据\n", + "成功获取 002655.SZ 的数据\n", + "成功获取 002656.SZ 的数据\n", + "成功获取 002657.SZ 的数据\n", + "成功获取 002658.SZ 的数据\n", + "成功获取 002659.SZ 的数据\n", + "成功获取 002660.SZ 的数据\n", + "成功获取 002661.SZ 的数据\n", + "成功获取 002662.SZ 的数据\n", + "成功获取 002663.SZ 的数据\n", + "成功获取 002664.SZ 的数据\n", + "成功获取 002666.SZ 的数据\n", + "成功获取 002667.SZ 的数据\n", + "成功获取 002668.SZ 的数据\n", + "成功获取 002669.SZ 的数据\n", + "成功获取 002670.SZ 的数据\n", + "成功获取 002671.SZ 的数据\n", + "成功获取 002672.SZ 的数据\n", + "成功获取 002673.SZ 的数据\n", + "成功获取 002674.SZ 的数据\n", + "成功获取 002675.SZ 的数据\n", + "成功获取 002676.SZ 的数据\n", + "成功获取 002677.SZ 的数据\n", + "成功获取 002678.SZ 的数据\n", + "成功获取 002679.SZ 的数据\n", + "成功获取 002681.SZ 的数据\n", + "成功获取 002682.SZ 的数据\n", + "成功获取 002683.SZ 的数据\n", + "成功获取 002685.SZ 的数据\n", + "成功获取 002686.SZ 的数据\n", + "成功获取 002687.SZ 的数据\n", + "成功获取 002688.SZ 的数据\n", + "成功获取 002689.SZ 的数据\n", + "成功获取 002690.SZ 的数据\n", + "成功获取 002691.SZ 的数据\n", + "成功获取 002692.SZ 的数据\n", + "成功获取 002693.SZ 的数据\n", + "成功获取 002694.SZ 的数据\n", + "成功获取 002695.SZ 的数据\n", + "成功获取 002696.SZ 的数据\n", + "成功获取 002697.SZ 的数据\n", + "成功获取 002698.SZ 的数据\n", + "成功获取 002700.SZ 的数据\n", + "成功获取 002701.SZ 的数据\n", + "成功获取 002702.SZ 的数据\n", + "成功获取 002703.SZ 的数据\n", + "成功获取 002705.SZ 的数据\n", + "成功获取 002706.SZ 的数据\n", + "成功获取 002707.SZ 的数据\n", + "成功获取 002708.SZ 的数据\n", + "成功获取 002709.SZ 的数据\n", + "成功获取 002712.SZ 的数据\n", + "成功获取 002713.SZ 的数据\n", + "成功获取 002714.SZ 的数据\n", + "成功获取 002715.SZ 的数据\n", + "成功获取 002716.SZ 的数据\n", + "成功获取 002717.SZ 的数据\n", + "成功获取 002718.SZ 的数据\n", + "成功获取 002719.SZ 的数据\n", + "成功获取 002721.SZ 的数据\n", + "成功获取 002722.SZ 的数据\n", + "成功获取 002723.SZ 的数据\n", + "成功获取 002724.SZ 的数据\n", + "成功获取 002725.SZ 的数据\n", + "成功获取 002726.SZ 的数据\n", + "成功获取 002727.SZ 的数据\n", + "成功获取 002728.SZ 的数据\n", + "成功获取 002729.SZ 的数据\n", + "成功获取 002730.SZ 的数据\n", + "成功获取 002731.SZ 的数据\n", + "已调用300次API,等待 7.24 秒以满足速率限制...\n", + "成功获取 002732.SZ 的数据\n", + "成功获取 002733.SZ 的数据\n", + "成功获取 002734.SZ 的数据\n", + "成功获取 002735.SZ 的数据\n", + "成功获取 002736.SZ 的数据\n", + "成功获取 002737.SZ 的数据\n", + "成功获取 002738.SZ 的数据\n", + "成功获取 002739.SZ 的数据\n", + "成功获取 002741.SZ 的数据\n", + "成功获取 002742.SZ 的数据\n", + "成功获取 002743.SZ 的数据\n", + "成功获取 002745.SZ 的数据\n", + "成功获取 002746.SZ 的数据\n", + "成功获取 002747.SZ 的数据\n", + "成功获取 002748.SZ 的数据\n", + "成功获取 002749.SZ 的数据\n", + "成功获取 002750.SZ 的数据\n", + "成功获取 002752.SZ 的数据\n", + "成功获取 002753.SZ 的数据\n", + "成功获取 002755.SZ 的数据\n", + "成功获取 002756.SZ 的数据\n", + "成功获取 002757.SZ 的数据\n", + "成功获取 002758.SZ 的数据\n", + "成功获取 002759.SZ 的数据\n", + "成功获取 002760.SZ 的数据\n", + "成功获取 002761.SZ 的数据\n", + "成功获取 002762.SZ 的数据\n", + "成功获取 002763.SZ 的数据\n", + "成功获取 002765.SZ 的数据\n", + "成功获取 002766.SZ 的数据\n", + "成功获取 002767.SZ 的数据\n", + "成功获取 002768.SZ 的数据\n", + "成功获取 002769.SZ 的数据\n", + "成功获取 002771.SZ 的数据\n", + "成功获取 002772.SZ 的数据\n", + "成功获取 002773.SZ 的数据\n", + "成功获取 002774.SZ 的数据\n", + "成功获取 002775.SZ 的数据\n", + "成功获取 002777.SZ 的数据\n", + "成功获取 002778.SZ 的数据\n", + "成功获取 002779.SZ 的数据\n", + "成功获取 002780.SZ 的数据\n", + "成功获取 002782.SZ 的数据\n", + "成功获取 002783.SZ 的数据\n", + "成功获取 002785.SZ 的数据\n", + "成功获取 002786.SZ 的数据\n", + "成功获取 002787.SZ 的数据\n", + "成功获取 002788.SZ 的数据\n", + "成功获取 002789.SZ 的数据\n", + "成功获取 002790.SZ 的数据\n", + "成功获取 002791.SZ 的数据\n", + "成功获取 002792.SZ 的数据\n", + "成功获取 002793.SZ 的数据\n", + "成功获取 002795.SZ 的数据\n", + "成功获取 002796.SZ 的数据\n", + "成功获取 002797.SZ 的数据\n", + "成功获取 002798.SZ 的数据\n", + "成功获取 002799.SZ 的数据\n", + "成功获取 002800.SZ 的数据\n", + "成功获取 002801.SZ 的数据\n", + "成功获取 002802.SZ 的数据\n", + "成功获取 002803.SZ 的数据\n", + "成功获取 002805.SZ 的数据\n", + "成功获取 002806.SZ 的数据\n", + "成功获取 002807.SZ 的数据\n", + "成功获取 002808.SZ 的数据\n", + "成功获取 002809.SZ 的数据\n", + "成功获取 002810.SZ 的数据\n", + "成功获取 002811.SZ 的数据\n", + "成功获取 002812.SZ 的数据\n", + "成功获取 002813.SZ 的数据\n", + "成功获取 002815.SZ 的数据\n", + "成功获取 002816.SZ 的数据\n", + "成功获取 002817.SZ 的数据\n", + "成功获取 002818.SZ 的数据\n", + "成功获取 002819.SZ 的数据\n", + "成功获取 002820.SZ 的数据\n", + "成功获取 002821.SZ 的数据\n", + "成功获取 002822.SZ 的数据\n", + "成功获取 002823.SZ 的数据\n", + "成功获取 002824.SZ 的数据\n", + "成功获取 002825.SZ 的数据\n", + "成功获取 002826.SZ 的数据\n", + "成功获取 002827.SZ 的数据\n", + "成功获取 002828.SZ 的数据\n", + "成功获取 002829.SZ 的数据\n", + "成功获取 002830.SZ 的数据\n", + "成功获取 002831.SZ 的数据\n", + "成功获取 002832.SZ 的数据\n", + "成功获取 002833.SZ 的数据\n", + "成功获取 002835.SZ 的数据\n", + "成功获取 002836.SZ 的数据\n", + "成功获取 002837.SZ 的数据\n", + "成功获取 002838.SZ 的数据\n", + "成功获取 002839.SZ 的数据\n", + "成功获取 002840.SZ 的数据\n", + "成功获取 002841.SZ 的数据\n", + "成功获取 002842.SZ 的数据\n", + "成功获取 002843.SZ 的数据\n", + "成功获取 002845.SZ 的数据\n", + "成功获取 002846.SZ 的数据\n", + "成功获取 002847.SZ 的数据\n", + "成功获取 002848.SZ 的数据\n", + "成功获取 002849.SZ 的数据\n", + "成功获取 002850.SZ 的数据\n", + "成功获取 002851.SZ 的数据\n", + "成功获取 002852.SZ 的数据\n", + "成功获取 002853.SZ 的数据\n", + "成功获取 002855.SZ 的数据\n", + "成功获取 002856.SZ 的数据\n", + "成功获取 002857.SZ 的数据\n", + "成功获取 002858.SZ 的数据\n", + "成功获取 002859.SZ 的数据\n", + "成功获取 002860.SZ 的数据\n", + "成功获取 002861.SZ 的数据\n", + "成功获取 002862.SZ 的数据\n", + "成功获取 002863.SZ 的数据\n", + "成功获取 002864.SZ 的数据\n", + "成功获取 002865.SZ 的数据\n", + "成功获取 002866.SZ 的数据\n", + "成功获取 002867.SZ 的数据\n", + "成功获取 002868.SZ 的数据\n", + "成功获取 002869.SZ 的数据\n", + "成功获取 002870.SZ 的数据\n", + "成功获取 002871.SZ 的数据\n", + "成功获取 002872.SZ 的数据\n", + "成功获取 002873.SZ 的数据\n", + "成功获取 002875.SZ 的数据\n", + "成功获取 002876.SZ 的数据\n", + "成功获取 002877.SZ 的数据\n", + "成功获取 002878.SZ 的数据\n", + "成功获取 002879.SZ 的数据\n", + "成功获取 002880.SZ 的数据\n", + "成功获取 002881.SZ 的数据\n", + "成功获取 002882.SZ 的数据\n", + "成功获取 002883.SZ 的数据\n", + "成功获取 002884.SZ 的数据\n", + "成功获取 002885.SZ 的数据\n", + "成功获取 002886.SZ 的数据\n", + "成功获取 002887.SZ 的数据\n", + "成功获取 002888.SZ 的数据\n", + "成功获取 002889.SZ 的数据\n", + "成功获取 002890.SZ 的数据\n", + "成功获取 002891.SZ 的数据\n", + "成功获取 002892.SZ 的数据\n", + "成功获取 002893.SZ 的数据\n", + "成功获取 002895.SZ 的数据\n", + "成功获取 002896.SZ 的数据\n", + "成功获取 002897.SZ 的数据\n", + "成功获取 002898.SZ 的数据\n", + "成功获取 002899.SZ 的数据\n", + "成功获取 002900.SZ 的数据\n", + "成功获取 002901.SZ 的数据\n", + "成功获取 002902.SZ 的数据\n", + "成功获取 002903.SZ 的数据\n", + "成功获取 002905.SZ 的数据\n", + "成功获取 002906.SZ 的数据\n", + "成功获取 002907.SZ 的数据\n", + "成功获取 002908.SZ 的数据\n", + "成功获取 002909.SZ 的数据\n", + "成功获取 002910.SZ 的数据\n", + "成功获取 002911.SZ 的数据\n", + "成功获取 002912.SZ 的数据\n", + "成功获取 002913.SZ 的数据\n", + "成功获取 002915.SZ 的数据\n", + "成功获取 002916.SZ 的数据\n", + "成功获取 002917.SZ 的数据\n", + "成功获取 002918.SZ 的数据\n", + "成功获取 002919.SZ 的数据\n", + "成功获取 002920.SZ 的数据\n", + "成功获取 002921.SZ 的数据\n", + "成功获取 002922.SZ 的数据\n", + "成功获取 002923.SZ 的数据\n", + "成功获取 002925.SZ 的数据\n", + "成功获取 002926.SZ 的数据\n", + "成功获取 002927.SZ 的数据\n", + "成功获取 002928.SZ 的数据\n", + "成功获取 002929.SZ 的数据\n", + "成功获取 002930.SZ 的数据\n", + "成功获取 002931.SZ 的数据\n", + "成功获取 002932.SZ 的数据\n", + "成功获取 002933.SZ 的数据\n", + "成功获取 002935.SZ 的数据\n", + "成功获取 002936.SZ 的数据\n", + "成功获取 002937.SZ 的数据\n", + "成功获取 002938.SZ 的数据\n", + "成功获取 002939.SZ 的数据\n", + "成功获取 002940.SZ 的数据\n", + "成功获取 002941.SZ 的数据\n", + "成功获取 002942.SZ 的数据\n", + "成功获取 002943.SZ 的数据\n", + "成功获取 002945.SZ 的数据\n", + "成功获取 002946.SZ 的数据\n", + "成功获取 002947.SZ 的数据\n", + "成功获取 002948.SZ 的数据\n", + "成功获取 002949.SZ 的数据\n", + "成功获取 002950.SZ 的数据\n", + "成功获取 002951.SZ 的数据\n", + "成功获取 002952.SZ 的数据\n", + "成功获取 002953.SZ 的数据\n", + "成功获取 002955.SZ 的数据\n", + "成功获取 002956.SZ 的数据\n", + "成功获取 002957.SZ 的数据\n", + "成功获取 002958.SZ 的数据\n", + "成功获取 002959.SZ 的数据\n", + "成功获取 002960.SZ 的数据\n", + "成功获取 002961.SZ 的数据\n", + "成功获取 002962.SZ 的数据\n", + "成功获取 002963.SZ 的数据\n", + "成功获取 002965.SZ 的数据\n", + "成功获取 002966.SZ 的数据\n", + "成功获取 002967.SZ 的数据\n", + "成功获取 002968.SZ 的数据\n", + "成功获取 002969.SZ 的数据\n", + "成功获取 002970.SZ 的数据\n", + "成功获取 002971.SZ 的数据\n", + "成功获取 002972.SZ 的数据\n", + "成功获取 002973.SZ 的数据\n", + "成功获取 002975.SZ 的数据\n", + "成功获取 002976.SZ 的数据\n", + "成功获取 002977.SZ 的数据\n", + "成功获取 002978.SZ 的数据\n", + "成功获取 002979.SZ 的数据\n", + "成功获取 002980.SZ 的数据\n", + "成功获取 002981.SZ 的数据\n", + "成功获取 002982.SZ 的数据\n", + "成功获取 002983.SZ 的数据\n", + "成功获取 002984.SZ 的数据\n", + "成功获取 002985.SZ 的数据\n", + "成功获取 002986.SZ 的数据\n", + "成功获取 002987.SZ 的数据\n", + "成功获取 002988.SZ 的数据\n", + "成功获取 002989.SZ 的数据\n", + "成功获取 002990.SZ 的数据\n", + "成功获取 002991.SZ 的数据\n", + "成功获取 002992.SZ 的数据\n", + "成功获取 002993.SZ 的数据\n", + "成功获取 002995.SZ 的数据\n", + "成功获取 002996.SZ 的数据\n", + "成功获取 002997.SZ 的数据\n", + "成功获取 002998.SZ 的数据\n", + "成功获取 002999.SZ 的数据\n", + "成功获取 003000.SZ 的数据\n", + "成功获取 003001.SZ 的数据\n", + "成功获取 003002.SZ 的数据\n", + "成功获取 003003.SZ 的数据\n", + "成功获取 003004.SZ 的数据\n", + "成功获取 003005.SZ 的数据\n", + "成功获取 003006.SZ 的数据\n", + "成功获取 003007.SZ 的数据\n", + "成功获取 003008.SZ 的数据\n", + "成功获取 003009.SZ 的数据\n", + "成功获取 003010.SZ 的数据\n", + "成功获取 003011.SZ 的数据\n", + "成功获取 003012.SZ 的数据\n", + "成功获取 003013.SZ 的数据\n", + "成功获取 003015.SZ 的数据\n", + "成功获取 003016.SZ 的数据\n", + "成功获取 003017.SZ 的数据\n", + "成功获取 003018.SZ 的数据\n", + "成功获取 003019.SZ 的数据\n", + "成功获取 003020.SZ 的数据\n", + "成功获取 003021.SZ 的数据\n", + "成功获取 003022.SZ 的数据\n", + "成功获取 003023.SZ 的数据\n", + "成功获取 003025.SZ 的数据\n", + "成功获取 003026.SZ 的数据\n", + "成功获取 003027.SZ 的数据\n", + "成功获取 003028.SZ 的数据\n", + "成功获取 003029.SZ 的数据\n", + "成功获取 003030.SZ 的数据\n", + "成功获取 003031.SZ 的数据\n", + "成功获取 003032.SZ 的数据\n", + "成功获取 003033.SZ 的数据\n", + "成功获取 003035.SZ 的数据\n", + "成功获取 003036.SZ 的数据\n", + "成功获取 003037.SZ 的数据\n", + "成功获取 003038.SZ 的数据\n", + "成功获取 003039.SZ 的数据\n", + "成功获取 003040.SZ 的数据\n", + "成功获取 003041.SZ 的数据\n", + "成功获取 003042.SZ 的数据\n", + "成功获取 003043.SZ 的数据\n", + "成功获取 003816.SZ 的数据\n", + "成功获取 300001.SZ 的数据\n", + "成功获取 300002.SZ 的数据\n", + "成功获取 300003.SZ 的数据\n", + "成功获取 300004.SZ 的数据\n", + "成功获取 300005.SZ 的数据\n", + "成功获取 300006.SZ 的数据\n", + "成功获取 300007.SZ 的数据\n", + "成功获取 300008.SZ 的数据\n", + "成功获取 300009.SZ 的数据\n", + "成功获取 300010.SZ 的数据\n", + "成功获取 300011.SZ 的数据\n", + "成功获取 300012.SZ 的数据\n", + "成功获取 300013.SZ 的数据\n", + "成功获取 300014.SZ 的数据\n", + "成功获取 300015.SZ 的数据\n", + "成功获取 300016.SZ 的数据\n", + "已调用300次API,等待 14.22 秒以满足速率限制...\n", + "成功获取 300017.SZ 的数据\n", + "成功获取 300018.SZ 的数据\n", + "成功获取 300019.SZ 的数据\n", + "成功获取 300020.SZ 的数据\n", + "成功获取 300021.SZ 的数据\n", + "成功获取 300022.SZ 的数据\n", + "成功获取 300024.SZ 的数据\n", + "成功获取 300025.SZ 的数据\n", + "成功获取 300026.SZ 的数据\n", + "成功获取 300027.SZ 的数据\n", + "成功获取 300029.SZ 的数据\n", + "成功获取 300030.SZ 的数据\n", + "成功获取 300031.SZ 的数据\n", + "成功获取 300032.SZ 的数据\n", + "成功获取 300033.SZ 的数据\n", + "成功获取 300034.SZ 的数据\n", + "成功获取 300035.SZ 的数据\n", + "成功获取 300036.SZ 的数据\n", + "成功获取 300037.SZ 的数据\n", + "成功获取 300039.SZ 的数据\n", + "成功获取 300040.SZ 的数据\n", + "成功获取 300041.SZ 的数据\n", + "成功获取 300042.SZ 的数据\n", + "成功获取 300043.SZ 的数据\n", + "成功获取 300044.SZ 的数据\n", + "成功获取 300045.SZ 的数据\n", + "成功获取 300046.SZ 的数据\n", + "成功获取 300047.SZ 的数据\n", + "成功获取 300048.SZ 的数据\n", + "成功获取 300049.SZ 的数据\n", + "成功获取 300050.SZ 的数据\n", + "成功获取 300051.SZ 的数据\n", + "成功获取 300052.SZ 的数据\n", + "成功获取 300053.SZ 的数据\n", + "成功获取 300054.SZ 的数据\n", + "成功获取 300055.SZ 的数据\n", + "成功获取 300056.SZ 的数据\n", + "成功获取 300057.SZ 的数据\n", + "成功获取 300058.SZ 的数据\n", + "成功获取 300059.SZ 的数据\n", + "成功获取 300061.SZ 的数据\n", + "成功获取 300062.SZ 的数据\n", + "成功获取 300063.SZ 的数据\n", + "成功获取 300065.SZ 的数据\n", + "成功获取 300066.SZ 的数据\n", + "成功获取 300067.SZ 的数据\n", + "成功获取 300068.SZ 的数据\n", + "成功获取 300069.SZ 的数据\n", + "成功获取 300070.SZ 的数据\n", + "成功获取 300071.SZ 的数据\n", + "成功获取 300072.SZ 的数据\n", + "成功获取 300073.SZ 的数据\n", + "成功获取 300074.SZ 的数据\n", + "成功获取 300075.SZ 的数据\n", + "成功获取 300076.SZ 的数据\n", + "成功获取 300077.SZ 的数据\n", + "成功获取 300078.SZ 的数据\n", + "成功获取 300079.SZ 的数据\n", + "成功获取 300080.SZ 的数据\n", + "成功获取 300081.SZ 的数据\n", + "成功获取 300082.SZ 的数据\n", + "成功获取 300083.SZ 的数据\n", + "成功获取 300084.SZ 的数据\n", + "成功获取 300085.SZ 的数据\n", + "成功获取 300086.SZ 的数据\n", + "成功获取 300087.SZ 的数据\n", + "成功获取 300088.SZ 的数据\n", + "成功获取 300091.SZ 的数据\n", + "成功获取 300092.SZ 的数据\n", + "成功获取 300093.SZ 的数据\n", + "成功获取 300094.SZ 的数据\n", + "成功获取 300095.SZ 的数据\n", + "成功获取 300096.SZ 的数据\n", + "成功获取 300097.SZ 的数据\n", + "成功获取 300098.SZ 的数据\n", + "成功获取 300099.SZ 的数据\n", + "成功获取 300100.SZ 的数据\n", + "成功获取 300101.SZ 的数据\n", + "成功获取 300102.SZ 的数据\n", + "成功获取 300103.SZ 的数据\n", + "成功获取 300105.SZ 的数据\n", + "成功获取 300106.SZ 的数据\n", + "成功获取 300107.SZ 的数据\n", + "成功获取 300108.SZ 的数据\n", + "成功获取 300109.SZ 的数据\n", + "成功获取 300110.SZ 的数据\n", + "成功获取 300111.SZ 的数据\n", + "成功获取 300112.SZ 的数据\n", + "成功获取 300113.SZ 的数据\n", + "成功获取 300114.SZ 的数据\n", + "成功获取 300115.SZ 的数据\n", + "成功获取 300117.SZ 的数据\n", + "成功获取 300118.SZ 的数据\n", + "成功获取 300119.SZ 的数据\n", + "成功获取 300120.SZ 的数据\n", + "成功获取 300121.SZ 的数据\n", + "成功获取 300122.SZ 的数据\n", + "成功获取 300123.SZ 的数据\n", + "成功获取 300124.SZ 的数据\n", + "成功获取 300125.SZ 的数据\n", + "成功获取 300126.SZ 的数据\n", + "成功获取 300127.SZ 的数据\n", + "成功获取 300128.SZ 的数据\n", + "成功获取 300129.SZ 的数据\n", + "成功获取 300130.SZ 的数据\n", + "成功获取 300131.SZ 的数据\n", + "成功获取 300132.SZ 的数据\n", + "成功获取 300133.SZ 的数据\n", + "成功获取 300134.SZ 的数据\n", + "成功获取 300135.SZ 的数据\n", + "成功获取 300136.SZ 的数据\n", + "成功获取 300137.SZ 的数据\n", + "成功获取 300138.SZ 的数据\n", + "成功获取 300139.SZ 的数据\n", + "成功获取 300140.SZ 的数据\n", + "成功获取 300141.SZ 的数据\n", + "成功获取 300142.SZ 的数据\n", + "成功获取 300143.SZ 的数据\n", + "成功获取 300144.SZ 的数据\n", + "成功获取 300145.SZ 的数据\n", + "成功获取 300146.SZ 的数据\n", + "成功获取 300147.SZ 的数据\n", + "成功获取 300148.SZ 的数据\n", + "成功获取 300149.SZ 的数据\n", + "成功获取 300150.SZ 的数据\n", + "成功获取 300151.SZ 的数据\n", + "成功获取 300152.SZ 的数据\n", + "成功获取 300153.SZ 的数据\n", + "成功获取 300154.SZ 的数据\n", + "成功获取 300155.SZ 的数据\n", + "成功获取 300157.SZ 的数据\n", + "成功获取 300158.SZ 的数据\n", + "成功获取 300159.SZ 的数据\n", + "成功获取 300160.SZ 的数据\n", + "成功获取 300161.SZ 的数据\n", + "成功获取 300162.SZ 的数据\n", + "成功获取 300163.SZ 的数据\n", + "成功获取 300164.SZ 的数据\n", + "成功获取 300165.SZ 的数据\n", + "成功获取 300166.SZ 的数据\n", + "成功获取 300167.SZ 的数据\n", + "成功获取 300168.SZ 的数据\n", + "成功获取 300169.SZ 的数据\n", + "成功获取 300170.SZ 的数据\n", + "成功获取 300171.SZ 的数据\n", + "成功获取 300172.SZ 的数据\n", + "成功获取 300173.SZ 的数据\n", + "成功获取 300174.SZ 的数据\n", + "成功获取 300175.SZ 的数据\n", + "成功获取 300176.SZ 的数据\n", + "成功获取 300177.SZ 的数据\n", + "成功获取 300179.SZ 的数据\n", + "成功获取 300180.SZ 的数据\n", + "成功获取 300181.SZ 的数据\n", + "成功获取 300182.SZ 的数据\n", + "成功获取 300183.SZ 的数据\n", + "成功获取 300184.SZ 的数据\n", + "成功获取 300185.SZ 的数据\n", + "成功获取 300187.SZ 的数据\n", + "成功获取 300188.SZ 的数据\n", + "成功获取 300189.SZ 的数据\n", + "成功获取 300190.SZ 的数据\n", + "成功获取 300191.SZ 的数据\n", + "成功获取 300192.SZ 的数据\n", + "成功获取 300193.SZ 的数据\n", + "成功获取 300194.SZ 的数据\n", + "成功获取 300195.SZ 的数据\n", + "成功获取 300196.SZ 的数据\n", + "成功获取 300197.SZ 的数据\n", + "成功获取 300198.SZ 的数据\n", + "成功获取 300199.SZ 的数据\n", + "成功获取 300200.SZ 的数据\n", + "成功获取 300201.SZ 的数据\n", + "成功获取 300203.SZ 的数据\n", + "成功获取 300204.SZ 的数据\n", + "成功获取 300205.SZ 的数据\n", + "成功获取 300206.SZ 的数据\n", + "成功获取 300207.SZ 的数据\n", + "成功获取 300208.SZ 的数据\n", + "成功获取 300209.SZ 的数据\n", + "成功获取 300210.SZ 的数据\n", + "成功获取 300211.SZ 的数据\n", + "成功获取 300212.SZ 的数据\n", + "成功获取 300213.SZ 的数据\n", + "成功获取 300214.SZ 的数据\n", + "成功获取 300215.SZ 的数据\n", + "成功获取 300217.SZ 的数据\n", + "成功获取 300218.SZ 的数据\n", + "成功获取 300219.SZ 的数据\n", + "成功获取 300220.SZ 的数据\n", + "成功获取 300221.SZ 的数据\n", + "成功获取 300222.SZ 的数据\n", + "成功获取 300223.SZ 的数据\n", + "成功获取 300224.SZ 的数据\n", + "成功获取 300225.SZ 的数据\n", + "成功获取 300226.SZ 的数据\n", + "成功获取 300227.SZ 的数据\n", + "成功获取 300228.SZ 的数据\n", + "成功获取 300229.SZ 的数据\n", + "成功获取 300230.SZ 的数据\n", + "成功获取 300231.SZ 的数据\n", + "成功获取 300232.SZ 的数据\n", + "成功获取 300233.SZ 的数据\n", + "成功获取 300234.SZ 的数据\n", + "成功获取 300235.SZ 的数据\n", + "成功获取 300236.SZ 的数据\n", + "成功获取 300237.SZ 的数据\n", + "成功获取 300238.SZ 的数据\n", + "成功获取 300239.SZ 的数据\n", + "成功获取 300240.SZ 的数据\n", + "成功获取 300241.SZ 的数据\n", + "成功获取 300242.SZ 的数据\n", + "成功获取 300243.SZ 的数据\n", + "成功获取 300244.SZ 的数据\n", + "成功获取 300245.SZ 的数据\n", + "成功获取 300246.SZ 的数据\n", + "成功获取 300247.SZ 的数据\n", + "成功获取 300248.SZ 的数据\n", + "成功获取 300249.SZ 的数据\n", + "成功获取 300250.SZ 的数据\n", + "成功获取 300251.SZ 的数据\n", + "成功获取 300252.SZ 的数据\n", + "成功获取 300253.SZ 的数据\n", + "成功获取 300254.SZ 的数据\n", + "成功获取 300255.SZ 的数据\n", + "成功获取 300256.SZ 的数据\n", + "成功获取 300257.SZ 的数据\n", + "成功获取 300258.SZ 的数据\n", + "成功获取 300259.SZ 的数据\n", + "成功获取 300260.SZ 的数据\n", + "成功获取 300261.SZ 的数据\n", + "成功获取 300263.SZ 的数据\n", + "成功获取 300264.SZ 的数据\n", + "成功获取 300265.SZ 的数据\n", + "成功获取 300266.SZ 的数据\n", + "成功获取 300267.SZ 的数据\n", + "成功获取 300268.SZ 的数据\n", + "成功获取 300269.SZ 的数据\n", + "成功获取 300270.SZ 的数据\n", + "成功获取 300271.SZ 的数据\n", + "成功获取 300272.SZ 的数据\n", + "成功获取 300274.SZ 的数据\n", + "成功获取 300275.SZ 的数据\n", + "成功获取 300276.SZ 的数据\n", + "成功获取 300277.SZ 的数据\n", + "成功获取 300278.SZ 的数据\n", + "成功获取 300279.SZ 的数据\n", + "成功获取 300280.SZ 的数据\n", + "成功获取 300281.SZ 的数据\n", + "成功获取 300283.SZ 的数据\n", + "成功获取 300284.SZ 的数据\n", + "成功获取 300285.SZ 的数据\n", + "成功获取 300286.SZ 的数据\n", + "成功获取 300287.SZ 的数据\n", + "成功获取 300288.SZ 的数据\n", + "成功获取 300289.SZ 的数据\n", + "成功获取 300290.SZ 的数据\n", + "成功获取 300291.SZ 的数据\n", + "成功获取 300292.SZ 的数据\n", + "成功获取 300293.SZ 的数据\n", + "成功获取 300294.SZ 的数据\n", + "成功获取 300295.SZ 的数据\n", + "成功获取 300296.SZ 的数据\n", + "成功获取 300298.SZ 的数据\n", + "成功获取 300299.SZ 的数据\n", + "成功获取 300300.SZ 的数据\n", + "成功获取 300301.SZ 的数据\n", + "成功获取 300302.SZ 的数据\n", + "成功获取 300303.SZ 的数据\n", + "成功获取 300304.SZ 的数据\n", + "成功获取 300305.SZ 的数据\n", + "成功获取 300306.SZ 的数据\n", + "成功获取 300307.SZ 的数据\n", + "成功获取 300308.SZ 的数据\n", + "成功获取 300310.SZ 的数据\n", + "成功获取 300311.SZ 的数据\n", + "成功获取 300313.SZ 的数据\n", + "成功获取 300314.SZ 的数据\n", + "成功获取 300315.SZ 的数据\n", + "成功获取 300316.SZ 的数据\n", + "成功获取 300317.SZ 的数据\n", + "成功获取 300318.SZ 的数据\n", + "成功获取 300319.SZ 的数据\n", + "成功获取 300320.SZ 的数据\n", + "成功获取 300321.SZ 的数据\n", + "成功获取 300322.SZ 的数据\n", + "成功获取 300323.SZ 的数据\n", + "成功获取 300324.SZ 的数据\n", + "成功获取 300326.SZ 的数据\n", + "成功获取 300327.SZ 的数据\n", + "成功获取 300328.SZ 的数据\n", + "成功获取 300329.SZ 的数据\n", + "成功获取 300331.SZ 的数据\n", + "成功获取 300332.SZ 的数据\n", + "成功获取 300333.SZ 的数据\n", + "成功获取 300334.SZ 的数据\n", + "成功获取 300335.SZ 的数据\n", + "成功获取 300337.SZ 的数据\n", + "成功获取 300338.SZ 的数据\n", + "成功获取 300339.SZ 的数据\n", + "已调用300次API,等待 5.42 秒以满足速率限制...\n", + "成功获取 300340.SZ 的数据\n", + "成功获取 300341.SZ 的数据\n", + "成功获取 300342.SZ 的数据\n", + "成功获取 300343.SZ 的数据\n", + "成功获取 300344.SZ 的数据\n", + "成功获取 300345.SZ 的数据\n", + "成功获取 300346.SZ 的数据\n", + "成功获取 300347.SZ 的数据\n", + "成功获取 300348.SZ 的数据\n", + "成功获取 300349.SZ 的数据\n", + "成功获取 300350.SZ 的数据\n", + "成功获取 300351.SZ 的数据\n", + "成功获取 300352.SZ 的数据\n", + "成功获取 300353.SZ 的数据\n", + "成功获取 300354.SZ 的数据\n", + "成功获取 300355.SZ 的数据\n", + "成功获取 300357.SZ 的数据\n", + "成功获取 300358.SZ 的数据\n", + "成功获取 300359.SZ 的数据\n", + "成功获取 300360.SZ 的数据\n", + "成功获取 300363.SZ 的数据\n", + "成功获取 300364.SZ 的数据\n", + "成功获取 300365.SZ 的数据\n", + "成功获取 300366.SZ 的数据\n", + "成功获取 300368.SZ 的数据\n", + "成功获取 300369.SZ 的数据\n", + "成功获取 300370.SZ 的数据\n", + "成功获取 300371.SZ 的数据\n", + "成功获取 300373.SZ 的数据\n", + "成功获取 300374.SZ 的数据\n", + "成功获取 300375.SZ 的数据\n", + "成功获取 300376.SZ 的数据\n", + "成功获取 300377.SZ 的数据\n", + "成功获取 300378.SZ 的数据\n", + "成功获取 300379.SZ 的数据\n", + "成功获取 300380.SZ 的数据\n", + "成功获取 300381.SZ 的数据\n", + "成功获取 300382.SZ 的数据\n", + "成功获取 300383.SZ 的数据\n", + "成功获取 300384.SZ 的数据\n", + "成功获取 300385.SZ 的数据\n", + "成功获取 300386.SZ 的数据\n", + "成功获取 300387.SZ 的数据\n", + "成功获取 300388.SZ 的数据\n", + "成功获取 300389.SZ 的数据\n", + "成功获取 300390.SZ 的数据\n", + "成功获取 300391.SZ 的数据\n", + "成功获取 300393.SZ 的数据\n", + "成功获取 300394.SZ 的数据\n", + "成功获取 300395.SZ 的数据\n", + "成功获取 300396.SZ 的数据\n", + "成功获取 300397.SZ 的数据\n", + "成功获取 300398.SZ 的数据\n", + "成功获取 300399.SZ 的数据\n", + "成功获取 300400.SZ 的数据\n", + "成功获取 300401.SZ 的数据\n", + "成功获取 300402.SZ 的数据\n", + "成功获取 300403.SZ 的数据\n", + "成功获取 300404.SZ 的数据\n", + "成功获取 300405.SZ 的数据\n", + "成功获取 300406.SZ 的数据\n", + "成功获取 300407.SZ 的数据\n", + "成功获取 300408.SZ 的数据\n", + "成功获取 300409.SZ 的数据\n", + "成功获取 300410.SZ 的数据\n", + "成功获取 300411.SZ 的数据\n", + "成功获取 300412.SZ 的数据\n", + "成功获取 300413.SZ 的数据\n", + "成功获取 300414.SZ 的数据\n", + "成功获取 300415.SZ 的数据\n", + "成功获取 300416.SZ 的数据\n", + "成功获取 300417.SZ 的数据\n", + "成功获取 300418.SZ 的数据\n", + "成功获取 300419.SZ 的数据\n", + "成功获取 300420.SZ 的数据\n", + "成功获取 300421.SZ 的数据\n", + "成功获取 300422.SZ 的数据\n", + "成功获取 300423.SZ 的数据\n", + "成功获取 300424.SZ 的数据\n", + "成功获取 300425.SZ 的数据\n", + "成功获取 300426.SZ 的数据\n", + "成功获取 300427.SZ 的数据\n", + "成功获取 300428.SZ 的数据\n", + "成功获取 300429.SZ 的数据\n", + "成功获取 300430.SZ 的数据\n", + "成功获取 300432.SZ 的数据\n", + "成功获取 300433.SZ 的数据\n", + "成功获取 300434.SZ 的数据\n", + "成功获取 300435.SZ 的数据\n", + "成功获取 300436.SZ 的数据\n", + "成功获取 300437.SZ 的数据\n", + "成功获取 300438.SZ 的数据\n", + "成功获取 300439.SZ 的数据\n", + "成功获取 300440.SZ 的数据\n", + "成功获取 300441.SZ 的数据\n", + "成功获取 300442.SZ 的数据\n", + "成功获取 300443.SZ 的数据\n", + "成功获取 300444.SZ 的数据\n", + "成功获取 300445.SZ 的数据\n", + "成功获取 300446.SZ 的数据\n", + "成功获取 300447.SZ 的数据\n", + "成功获取 300448.SZ 的数据\n", + "成功获取 300449.SZ 的数据\n", + "成功获取 300450.SZ 的数据\n", + "成功获取 300451.SZ 的数据\n", + "成功获取 300452.SZ 的数据\n", + "成功获取 300453.SZ 的数据\n", + "成功获取 300454.SZ 的数据\n", + "成功获取 300455.SZ 的数据\n", + "成功获取 300456.SZ 的数据\n", + "成功获取 300457.SZ 的数据\n", + "成功获取 300458.SZ 的数据\n", + "成功获取 300459.SZ 的数据\n", + "成功获取 300460.SZ 的数据\n", + "成功获取 300461.SZ 的数据\n", + "成功获取 300462.SZ 的数据\n", + "成功获取 300463.SZ 的数据\n", + "成功获取 300464.SZ 的数据\n", + "成功获取 300465.SZ 的数据\n", + "成功获取 300466.SZ 的数据\n", + "成功获取 300467.SZ 的数据\n", + "成功获取 300468.SZ 的数据\n", + "成功获取 300469.SZ 的数据\n", + "成功获取 300470.SZ 的数据\n", + "成功获取 300471.SZ 的数据\n", + "成功获取 300472.SZ 的数据\n", + "成功获取 300473.SZ 的数据\n", + "成功获取 300474.SZ 的数据\n", + "成功获取 300475.SZ 的数据\n", + "成功获取 300476.SZ 的数据\n", + "成功获取 300477.SZ 的数据\n", + "成功获取 300478.SZ 的数据\n", + "成功获取 300479.SZ 的数据\n", + "成功获取 300480.SZ 的数据\n", + "成功获取 300481.SZ 的数据\n", + "成功获取 300482.SZ 的数据\n", + "成功获取 300483.SZ 的数据\n", + "成功获取 300484.SZ 的数据\n", + "成功获取 300485.SZ 的数据\n", + "成功获取 300486.SZ 的数据\n", + "成功获取 300487.SZ 的数据\n", + "成功获取 300488.SZ 的数据\n", + "成功获取 300489.SZ 的数据\n", + "成功获取 300490.SZ 的数据\n", + "成功获取 300491.SZ 的数据\n", + "成功获取 300492.SZ 的数据\n", + "成功获取 300493.SZ 的数据\n", + "成功获取 300494.SZ 的数据\n", + "成功获取 300496.SZ 的数据\n", + "成功获取 300497.SZ 的数据\n", + "成功获取 300498.SZ 的数据\n", + "成功获取 300499.SZ 的数据\n", + "成功获取 300500.SZ 的数据\n", + "成功获取 300501.SZ 的数据\n", + "成功获取 300502.SZ 的数据\n", + "成功获取 300503.SZ 的数据\n", + "成功获取 300504.SZ 的数据\n", + "成功获取 300505.SZ 的数据\n", + "成功获取 300506.SZ 的数据\n", + "成功获取 300507.SZ 的数据\n", + "成功获取 300508.SZ 的数据\n", + "成功获取 300509.SZ 的数据\n", + "成功获取 300510.SZ 的数据\n", + "成功获取 300511.SZ 的数据\n", + "成功获取 300512.SZ 的数据\n", + "成功获取 300513.SZ 的数据\n", + "成功获取 300514.SZ 的数据\n", + "成功获取 300515.SZ 的数据\n", + "成功获取 300516.SZ 的数据\n", + "成功获取 300517.SZ 的数据\n", + "成功获取 300518.SZ 的数据\n", + "成功获取 300519.SZ 的数据\n", + "成功获取 300520.SZ 的数据\n", + "成功获取 300521.SZ 的数据\n", + "成功获取 300522.SZ 的数据\n", + "成功获取 300523.SZ 的数据\n", + "成功获取 300525.SZ 的数据\n", + "成功获取 300527.SZ 的数据\n", + "成功获取 300528.SZ 的数据\n", + "成功获取 300529.SZ 的数据\n", + "成功获取 300530.SZ 的数据\n", + "成功获取 300531.SZ 的数据\n", + "成功获取 300532.SZ 的数据\n", + "成功获取 300533.SZ 的数据\n", + "成功获取 300534.SZ 的数据\n", + "成功获取 300535.SZ 的数据\n", + "成功获取 300536.SZ 的数据\n", + "成功获取 300537.SZ 的数据\n", + "成功获取 300538.SZ 的数据\n", + "成功获取 300539.SZ 的数据\n", + "成功获取 300540.SZ 的数据\n", + "成功获取 300541.SZ 的数据\n", + "成功获取 300542.SZ 的数据\n", + "成功获取 300543.SZ 的数据\n", + "成功获取 300545.SZ 的数据\n", + "成功获取 300546.SZ 的数据\n", + "成功获取 300547.SZ 的数据\n", + "成功获取 300548.SZ 的数据\n", + "成功获取 300549.SZ 的数据\n", + "成功获取 300550.SZ 的数据\n", + "成功获取 300551.SZ 的数据\n", + "成功获取 300552.SZ 的数据\n", + "成功获取 300553.SZ 的数据\n", + "成功获取 300554.SZ 的数据\n", + "成功获取 300555.SZ 的数据\n", + "成功获取 300556.SZ 的数据\n", + "成功获取 300557.SZ 的数据\n", + "成功获取 300558.SZ 的数据\n", + "成功获取 300559.SZ 的数据\n", + "成功获取 300560.SZ 的数据\n", + "成功获取 300561.SZ 的数据\n", + "成功获取 300562.SZ 的数据\n", + "成功获取 300563.SZ 的数据\n", + "成功获取 300564.SZ 的数据\n", + "成功获取 300565.SZ 的数据\n", + "成功获取 300566.SZ 的数据\n", + "成功获取 300567.SZ 的数据\n", + "成功获取 300568.SZ 的数据\n", + "成功获取 300569.SZ 的数据\n", + "成功获取 300570.SZ 的数据\n", + "成功获取 300571.SZ 的数据\n", + "成功获取 300572.SZ 的数据\n", + "成功获取 300573.SZ 的数据\n", + "成功获取 300575.SZ 的数据\n", + "成功获取 300576.SZ 的数据\n", + "成功获取 300577.SZ 的数据\n", + "成功获取 300578.SZ 的数据\n", + "成功获取 300579.SZ 的数据\n", + "成功获取 300580.SZ 的数据\n", + "成功获取 300581.SZ 的数据\n", + "成功获取 300582.SZ 的数据\n", + "成功获取 300583.SZ 的数据\n", + "成功获取 300584.SZ 的数据\n", + "成功获取 300585.SZ 的数据\n", + "成功获取 300586.SZ 的数据\n", + "成功获取 300587.SZ 的数据\n", + "成功获取 300588.SZ 的数据\n", + "成功获取 300589.SZ 的数据\n", + "成功获取 300590.SZ 的数据\n", + "成功获取 300591.SZ 的数据\n", + "成功获取 300592.SZ 的数据\n", + "成功获取 300593.SZ 的数据\n", + "成功获取 300594.SZ 的数据\n", + "成功获取 300595.SZ 的数据\n", + "成功获取 300596.SZ 的数据\n", + "成功获取 300597.SZ 的数据\n", + "成功获取 300598.SZ 的数据\n", + "成功获取 300599.SZ 的数据\n", + "成功获取 300600.SZ 的数据\n", + "成功获取 300601.SZ 的数据\n", + "成功获取 300602.SZ 的数据\n", + "成功获取 300603.SZ 的数据\n", + "成功获取 300604.SZ 的数据\n", + "成功获取 300605.SZ 的数据\n", + "成功获取 300606.SZ 的数据\n", + "成功获取 300607.SZ 的数据\n", + "成功获取 300608.SZ 的数据\n", + "成功获取 300609.SZ 的数据\n", + "成功获取 300610.SZ 的数据\n", + "成功获取 300611.SZ 的数据\n", + "成功获取 300612.SZ 的数据\n", + "成功获取 300613.SZ 的数据\n", + "成功获取 300614.SZ 的数据\n", + "成功获取 300615.SZ 的数据\n", + "成功获取 300616.SZ 的数据\n", + "成功获取 300617.SZ 的数据\n", + "成功获取 300618.SZ 的数据\n", + "成功获取 300619.SZ 的数据\n", + "成功获取 300620.SZ 的数据\n", + "成功获取 300621.SZ 的数据\n", + "成功获取 300622.SZ 的数据\n", + "成功获取 300623.SZ 的数据\n", + "成功获取 300624.SZ 的数据\n", + "成功获取 300625.SZ 的数据\n", + "成功获取 300626.SZ 的数据\n", + "成功获取 300627.SZ 的数据\n", + "成功获取 300628.SZ 的数据\n", + "成功获取 300629.SZ 的数据\n", + "成功获取 300630.SZ 的数据\n", + "成功获取 300631.SZ 的数据\n", + "成功获取 300632.SZ 的数据\n", + "成功获取 300633.SZ 的数据\n", + "成功获取 300634.SZ 的数据\n", + "成功获取 300635.SZ 的数据\n", + "成功获取 300636.SZ 的数据\n", + "成功获取 300637.SZ 的数据\n", + "成功获取 300638.SZ 的数据\n", + "成功获取 300639.SZ 的数据\n", + "成功获取 300640.SZ 的数据\n", + "成功获取 300641.SZ 的数据\n", + "成功获取 300642.SZ 的数据\n", + "成功获取 300643.SZ 的数据\n", + "成功获取 300644.SZ 的数据\n", + "成功获取 300645.SZ 的数据\n", + "成功获取 300647.SZ 的数据\n", + "成功获取 300648.SZ 的数据\n", + "成功获取 300649.SZ 的数据\n", + "成功获取 300650.SZ 的数据\n", + "成功获取 300651.SZ 的数据\n", + "成功获取 300652.SZ 的数据\n", + "已调用300次API,等待 15.10 秒以满足速率限制...\n", + "成功获取 300653.SZ 的数据\n", + "成功获取 300654.SZ 的数据\n", + "成功获取 300655.SZ 的数据\n", + "成功获取 300656.SZ 的数据\n", + "成功获取 300657.SZ 的数据\n", + "成功获取 300658.SZ 的数据\n", + "成功获取 300659.SZ 的数据\n", + "成功获取 300660.SZ 的数据\n", + "成功获取 300661.SZ 的数据\n", + "成功获取 300662.SZ 的数据\n", + "成功获取 300663.SZ 的数据\n", + "成功获取 300664.SZ 的数据\n", + "成功获取 300665.SZ 的数据\n", + "成功获取 300666.SZ 的数据\n", + "成功获取 300667.SZ 的数据\n", + "成功获取 300668.SZ 的数据\n", + "成功获取 300669.SZ 的数据\n", + "成功获取 300670.SZ 的数据\n", + "成功获取 300671.SZ 的数据\n", + "成功获取 300672.SZ 的数据\n", + "成功获取 300673.SZ 的数据\n", + "成功获取 300674.SZ 的数据\n", + "成功获取 300675.SZ 的数据\n", + "成功获取 300676.SZ 的数据\n", + "成功获取 300677.SZ 的数据\n", + "成功获取 300678.SZ 的数据\n", + "成功获取 300679.SZ 的数据\n", + "成功获取 300680.SZ 的数据\n", + "成功获取 300681.SZ 的数据\n", + "成功获取 300682.SZ 的数据\n", + "成功获取 300683.SZ 的数据\n", + "成功获取 300684.SZ 的数据\n", + "成功获取 300685.SZ 的数据\n", + "成功获取 300686.SZ 的数据\n", + "成功获取 300687.SZ 的数据\n", + "成功获取 300688.SZ 的数据\n", + "成功获取 300689.SZ 的数据\n", + "成功获取 300690.SZ 的数据\n", + "成功获取 300691.SZ 的数据\n", + "成功获取 300692.SZ 的数据\n", + "成功获取 300693.SZ 的数据\n", + "成功获取 300694.SZ 的数据\n", + "成功获取 300695.SZ 的数据\n", + "成功获取 300696.SZ 的数据\n", + "成功获取 300697.SZ 的数据\n", + "成功获取 300698.SZ 的数据\n", + "成功获取 300699.SZ 的数据\n", + "成功获取 300700.SZ 的数据\n", + "成功获取 300701.SZ 的数据\n", + "成功获取 300702.SZ 的数据\n", + "成功获取 300703.SZ 的数据\n", + "成功获取 300705.SZ 的数据\n", + "成功获取 300706.SZ 的数据\n", + "成功获取 300707.SZ 的数据\n", + "成功获取 300708.SZ 的数据\n", + "成功获取 300709.SZ 的数据\n", + "成功获取 300710.SZ 的数据\n", + "成功获取 300711.SZ 的数据\n", + "成功获取 300712.SZ 的数据\n", + "成功获取 300713.SZ 的数据\n", + "成功获取 300715.SZ 的数据\n", + "成功获取 300716.SZ 的数据\n", + "成功获取 300717.SZ 的数据\n", + "成功获取 300718.SZ 的数据\n", + "成功获取 300719.SZ 的数据\n", + "成功获取 300720.SZ 的数据\n", + "成功获取 300721.SZ 的数据\n", + "成功获取 300722.SZ 的数据\n", + "成功获取 300723.SZ 的数据\n", + "成功获取 300724.SZ 的数据\n", + "成功获取 300725.SZ 的数据\n", + "成功获取 300726.SZ 的数据\n", + "成功获取 300727.SZ 的数据\n", + "成功获取 300729.SZ 的数据\n", + "成功获取 300730.SZ 的数据\n", + "成功获取 300731.SZ 的数据\n", + "成功获取 300732.SZ 的数据\n", + "成功获取 300733.SZ 的数据\n", + "成功获取 300735.SZ 的数据\n", + "成功获取 300736.SZ 的数据\n", + "成功获取 300737.SZ 的数据\n", + "成功获取 300738.SZ 的数据\n", + "成功获取 300739.SZ 的数据\n", + "成功获取 300740.SZ 的数据\n", + "成功获取 300741.SZ 的数据\n", + "成功获取 300743.SZ 的数据\n", + "成功获取 300745.SZ 的数据\n", + "成功获取 300746.SZ 的数据\n", + "成功获取 300747.SZ 的数据\n", + "成功获取 300748.SZ 的数据\n", + "成功获取 300749.SZ 的数据\n", + "成功获取 300750.SZ 的数据\n", + "成功获取 300751.SZ 的数据\n", + "成功获取 300752.SZ 的数据\n", + "成功获取 300753.SZ 的数据\n", + "成功获取 300755.SZ 的数据\n", + "成功获取 300756.SZ 的数据\n", + "成功获取 300757.SZ 的数据\n", + "成功获取 300758.SZ 的数据\n", + "成功获取 300759.SZ 的数据\n", + "成功获取 300760.SZ 的数据\n", + "成功获取 300761.SZ 的数据\n", + "成功获取 300762.SZ 的数据\n", + "成功获取 300763.SZ 的数据\n", + "成功获取 300765.SZ 的数据\n", + "成功获取 300766.SZ 的数据\n", + "成功获取 300767.SZ 的数据\n", + "成功获取 300768.SZ 的数据\n", + "成功获取 300769.SZ 的数据\n", + "成功获取 300770.SZ 的数据\n", + "成功获取 300771.SZ 的数据\n", + "成功获取 300772.SZ 的数据\n", + "成功获取 300773.SZ 的数据\n", + "成功获取 300774.SZ 的数据\n", + "成功获取 300775.SZ 的数据\n", + "成功获取 300776.SZ 的数据\n", + "成功获取 300777.SZ 的数据\n", + "成功获取 300778.SZ 的数据\n", + "成功获取 300779.SZ 的数据\n", + "成功获取 300780.SZ 的数据\n", + "成功获取 300781.SZ 的数据\n", + "成功获取 300782.SZ 的数据\n", + "成功获取 300783.SZ 的数据\n", + "成功获取 300784.SZ 的数据\n", + "成功获取 300785.SZ 的数据\n", + "成功获取 300786.SZ 的数据\n", + "成功获取 300787.SZ 的数据\n", + "成功获取 300788.SZ 的数据\n", + "成功获取 300789.SZ 的数据\n", + "成功获取 300790.SZ 的数据\n", + "成功获取 300791.SZ 的数据\n", + "成功获取 300792.SZ 的数据\n", + "成功获取 300793.SZ 的数据\n", + "成功获取 300795.SZ 的数据\n", + "成功获取 300796.SZ 的数据\n", + "成功获取 300797.SZ 的数据\n", + "成功获取 300798.SZ 的数据\n", + "成功获取 300800.SZ 的数据\n", + "成功获取 300801.SZ 的数据\n", + "成功获取 300802.SZ 的数据\n", + "成功获取 300803.SZ 的数据\n", + "成功获取 300804.SZ 的数据\n", + "成功获取 300805.SZ 的数据\n", + "成功获取 300806.SZ 的数据\n", + "成功获取 300807.SZ 的数据\n", + "成功获取 300808.SZ 的数据\n", + "成功获取 300809.SZ 的数据\n", + "成功获取 300810.SZ 的数据\n", + "成功获取 300811.SZ 的数据\n", + "成功获取 300812.SZ 的数据\n", + "成功获取 300813.SZ 的数据\n", + "成功获取 300814.SZ 的数据\n", + "成功获取 300815.SZ 的数据\n", + "成功获取 300816.SZ 的数据\n", + "成功获取 300817.SZ 的数据\n", + "成功获取 300818.SZ 的数据\n", + "成功获取 300819.SZ 的数据\n", + "成功获取 300820.SZ 的数据\n", + "成功获取 300821.SZ 的数据\n", + "成功获取 300822.SZ 的数据\n", + "成功获取 300823.SZ 的数据\n", + "成功获取 300824.SZ 的数据\n", + "成功获取 300825.SZ 的数据\n", + "成功获取 300826.SZ 的数据\n", + "成功获取 300827.SZ 的数据\n", + "成功获取 300828.SZ 的数据\n", + "成功获取 300829.SZ 的数据\n", + "成功获取 300830.SZ 的数据\n", + "成功获取 300831.SZ 的数据\n", + "成功获取 300832.SZ 的数据\n", + "成功获取 300833.SZ 的数据\n", + "成功获取 300834.SZ 的数据\n", + "成功获取 300835.SZ 的数据\n", + "成功获取 300836.SZ 的数据\n", + "成功获取 300837.SZ 的数据\n", + "成功获取 300838.SZ 的数据\n", + "成功获取 300839.SZ 的数据\n", + "成功获取 300840.SZ 的数据\n", + "成功获取 300841.SZ 的数据\n", + "成功获取 300842.SZ 的数据\n", + "成功获取 300843.SZ 的数据\n", + "成功获取 300844.SZ 的数据\n", + "成功获取 300845.SZ 的数据\n", + "成功获取 300846.SZ 的数据\n", + "成功获取 300847.SZ 的数据\n", + "成功获取 300848.SZ 的数据\n", + "成功获取 300849.SZ 的数据\n", + "成功获取 300850.SZ 的数据\n", + "成功获取 300851.SZ 的数据\n", + "成功获取 300852.SZ 的数据\n", + "成功获取 300853.SZ 的数据\n", + "成功获取 300854.SZ 的数据\n", + "成功获取 300855.SZ 的数据\n", + "成功获取 300856.SZ 的数据\n", + "成功获取 300857.SZ 的数据\n", + "成功获取 300858.SZ 的数据\n", + "成功获取 300859.SZ 的数据\n", + "成功获取 300860.SZ 的数据\n", + "成功获取 300861.SZ 的数据\n", + "成功获取 300862.SZ 的数据\n", + "成功获取 300863.SZ 的数据\n", + "成功获取 300864.SZ 的数据\n", + "成功获取 300865.SZ 的数据\n", + "成功获取 300866.SZ 的数据\n", + "成功获取 300867.SZ 的数据\n", + "成功获取 300868.SZ 的数据\n", + "成功获取 300869.SZ 的数据\n", + "成功获取 300870.SZ 的数据\n", + "成功获取 300871.SZ 的数据\n", + "成功获取 300872.SZ 的数据\n", + "成功获取 300873.SZ 的数据\n", + "成功获取 300875.SZ 的数据\n", + "成功获取 300876.SZ 的数据\n", + "成功获取 300877.SZ 的数据\n", + "成功获取 300878.SZ 的数据\n", + "成功获取 300879.SZ 的数据\n", + "成功获取 300880.SZ 的数据\n", + "成功获取 300881.SZ 的数据\n", + "成功获取 300882.SZ 的数据\n", + "成功获取 300883.SZ 的数据\n", + "成功获取 300884.SZ 的数据\n", + "成功获取 300885.SZ 的数据\n", + "成功获取 300886.SZ 的数据\n", + "成功获取 300887.SZ 的数据\n", + "成功获取 300888.SZ 的数据\n", + "成功获取 300889.SZ 的数据\n", + "成功获取 300890.SZ 的数据\n", + "成功获取 300891.SZ 的数据\n", + "成功获取 300892.SZ 的数据\n", + "成功获取 300893.SZ 的数据\n", + "成功获取 300894.SZ 的数据\n", + "成功获取 300895.SZ 的数据\n", + "成功获取 300896.SZ 的数据\n", + "成功获取 300897.SZ 的数据\n", + "成功获取 300898.SZ 的数据\n", + "成功获取 300899.SZ 的数据\n", + "成功获取 300900.SZ 的数据\n", + "成功获取 300901.SZ 的数据\n", + "成功获取 300902.SZ 的数据\n", + "成功获取 300903.SZ 的数据\n", + "成功获取 300904.SZ 的数据\n", + "成功获取 300905.SZ 的数据\n", + "成功获取 300906.SZ 的数据\n", + "成功获取 300907.SZ 的数据\n", + "成功获取 300908.SZ 的数据\n", + "成功获取 300909.SZ 的数据\n", + "成功获取 300910.SZ 的数据\n", + "成功获取 300911.SZ 的数据\n", + "成功获取 300912.SZ 的数据\n", + "成功获取 300913.SZ 的数据\n", + "成功获取 300915.SZ 的数据\n", + "成功获取 300916.SZ 的数据\n", + "成功获取 300917.SZ 的数据\n", + "成功获取 300918.SZ 的数据\n", + "成功获取 300919.SZ 的数据\n", + "成功获取 300920.SZ 的数据\n", + "成功获取 300921.SZ 的数据\n", + "成功获取 300922.SZ 的数据\n", + "成功获取 300923.SZ 的数据\n", + "成功获取 300925.SZ 的数据\n", + "成功获取 300926.SZ 的数据\n", + "成功获取 300927.SZ 的数据\n", + "成功获取 300928.SZ 的数据\n", + "成功获取 300929.SZ 的数据\n", + "成功获取 300930.SZ 的数据\n", + "成功获取 300931.SZ 的数据\n", + "成功获取 300932.SZ 的数据\n", + "成功获取 300933.SZ 的数据\n", + "成功获取 300935.SZ 的数据\n", + "成功获取 300936.SZ 的数据\n", + "成功获取 300937.SZ 的数据\n", + "成功获取 300938.SZ 的数据\n", + "成功获取 300939.SZ 的数据\n", + "成功获取 300940.SZ 的数据\n", + "成功获取 300941.SZ 的数据\n", + "成功获取 300942.SZ 的数据\n", + "成功获取 300943.SZ 的数据\n", + "成功获取 300945.SZ 的数据\n", + "成功获取 300946.SZ 的数据\n", + "成功获取 300947.SZ 的数据\n", + "成功获取 300948.SZ 的数据\n", + "成功获取 300949.SZ 的数据\n", + "成功获取 300950.SZ 的数据\n", + "成功获取 300951.SZ 的数据\n", + "成功获取 300952.SZ 的数据\n", + "成功获取 300953.SZ 的数据\n", + "成功获取 300955.SZ 的数据\n", + "成功获取 300956.SZ 的数据\n", + "成功获取 300957.SZ 的数据\n", + "成功获取 300958.SZ 的数据\n", + "成功获取 300959.SZ 的数据\n", + "成功获取 300960.SZ 的数据\n", + "成功获取 300961.SZ 的数据\n", + "成功获取 300962.SZ 的数据\n", + "成功获取 300963.SZ 的数据\n", + "成功获取 300964.SZ 的数据\n", + "成功获取 300965.SZ 的数据\n", + "成功获取 300966.SZ 的数据\n", + "成功获取 300967.SZ 的数据\n", + "成功获取 300968.SZ 的数据\n", + "已调用300次API,等待 17.43 秒以满足速率限制...\n", + "成功获取 300969.SZ 的数据\n", + "成功获取 300970.SZ 的数据\n", + "成功获取 300971.SZ 的数据\n", + "成功获取 300972.SZ 的数据\n", + "成功获取 300973.SZ 的数据\n", + "成功获取 300975.SZ 的数据\n", + "成功获取 300976.SZ 的数据\n", + "成功获取 300977.SZ 的数据\n", + "成功获取 300978.SZ 的数据\n", + "成功获取 300979.SZ 的数据\n", + "成功获取 300980.SZ 的数据\n", + "成功获取 300981.SZ 的数据\n", + "成功获取 300982.SZ 的数据\n", + "成功获取 300983.SZ 的数据\n", + "成功获取 300984.SZ 的数据\n", + "成功获取 300985.SZ 的数据\n", + "成功获取 300986.SZ 的数据\n", + "成功获取 300987.SZ 的数据\n", + "成功获取 300988.SZ 的数据\n", + "成功获取 300989.SZ 的数据\n", + "成功获取 300990.SZ 的数据\n", + "成功获取 300991.SZ 的数据\n", + "成功获取 300992.SZ 的数据\n", + "成功获取 300993.SZ 的数据\n", + "成功获取 300994.SZ 的数据\n", + "成功获取 300995.SZ 的数据\n", + "成功获取 300996.SZ 的数据\n", + "成功获取 300997.SZ 的数据\n", + "成功获取 300998.SZ 的数据\n", + "成功获取 300999.SZ 的数据\n", + "成功获取 301000.SZ 的数据\n", + "成功获取 301001.SZ 的数据\n", + "成功获取 301002.SZ 的数据\n", + "成功获取 301003.SZ 的数据\n", + "成功获取 301004.SZ 的数据\n", + "成功获取 301005.SZ 的数据\n", + "成功获取 301006.SZ 的数据\n", + "成功获取 301007.SZ 的数据\n", + "成功获取 301008.SZ 的数据\n", + "成功获取 301009.SZ 的数据\n", + "成功获取 301010.SZ 的数据\n", + "成功获取 301011.SZ 的数据\n", + "成功获取 301012.SZ 的数据\n", + "成功获取 301013.SZ 的数据\n", + "成功获取 301015.SZ 的数据\n", + "成功获取 301016.SZ 的数据\n", + "成功获取 301017.SZ 的数据\n", + "成功获取 301018.SZ 的数据\n", + "成功获取 301019.SZ 的数据\n", + "成功获取 301020.SZ 的数据\n", + "成功获取 301021.SZ 的数据\n", + "成功获取 301022.SZ 的数据\n", + "成功获取 301023.SZ 的数据\n", + "成功获取 301024.SZ 的数据\n", + "成功获取 301025.SZ 的数据\n", + "成功获取 301026.SZ 的数据\n", + "成功获取 301027.SZ 的数据\n", + "成功获取 301028.SZ 的数据\n", + "成功获取 301029.SZ 的数据\n", + "成功获取 301030.SZ 的数据\n", + "成功获取 301031.SZ 的数据\n", + "成功获取 301032.SZ 的数据\n", + "成功获取 301033.SZ 的数据\n", + "成功获取 301035.SZ 的数据\n", + "成功获取 301036.SZ 的数据\n", + "成功获取 301037.SZ 的数据\n", + "成功获取 301038.SZ 的数据\n", + "成功获取 301039.SZ 的数据\n", + "成功获取 301040.SZ 的数据\n", + "成功获取 301041.SZ 的数据\n", + "成功获取 301042.SZ 的数据\n", + "成功获取 301043.SZ 的数据\n", + "成功获取 301045.SZ 的数据\n", + "成功获取 301046.SZ 的数据\n", + "成功获取 301047.SZ 的数据\n", + "成功获取 301048.SZ 的数据\n", + "成功获取 301049.SZ 的数据\n", + "成功获取 301050.SZ 的数据\n", + "成功获取 301051.SZ 的数据\n", + "成功获取 301052.SZ 的数据\n", + "成功获取 301053.SZ 的数据\n", + "成功获取 301055.SZ 的数据\n", + "成功获取 301056.SZ 的数据\n", + "成功获取 301057.SZ 的数据\n", + "成功获取 301058.SZ 的数据\n", + "成功获取 301059.SZ 的数据\n", + "成功获取 301060.SZ 的数据\n", + "成功获取 301061.SZ 的数据\n", + "成功获取 301062.SZ 的数据\n", + "成功获取 301063.SZ 的数据\n", + "成功获取 301065.SZ 的数据\n", + "成功获取 301066.SZ 的数据\n", + "成功获取 301067.SZ 的数据\n", + "成功获取 301068.SZ 的数据\n", + "成功获取 301069.SZ 的数据\n", + "成功获取 301070.SZ 的数据\n", + "成功获取 301071.SZ 的数据\n", + "成功获取 301072.SZ 的数据\n", + "成功获取 301073.SZ 的数据\n", + "成功获取 301075.SZ 的数据\n", + "成功获取 301076.SZ 的数据\n", + "成功获取 301077.SZ 的数据\n", + "成功获取 301078.SZ 的数据\n", + "成功获取 301079.SZ 的数据\n", + "成功获取 301080.SZ 的数据\n", + "成功获取 301081.SZ 的数据\n", + "成功获取 301082.SZ 的数据\n", + "成功获取 301083.SZ 的数据\n", + "成功获取 301085.SZ 的数据\n", + "成功获取 301086.SZ 的数据\n", + "成功获取 301087.SZ 的数据\n", + "成功获取 301088.SZ 的数据\n", + "成功获取 301089.SZ 的数据\n", + "成功获取 301090.SZ 的数据\n", + "成功获取 301091.SZ 的数据\n", + "成功获取 301092.SZ 的数据\n", + "成功获取 301093.SZ 的数据\n", + "成功获取 301095.SZ 的数据\n", + "成功获取 301096.SZ 的数据\n", + "成功获取 301097.SZ 的数据\n", + "成功获取 301098.SZ 的数据\n", + "成功获取 301099.SZ 的数据\n", + "成功获取 301100.SZ 的数据\n", + "成功获取 301101.SZ 的数据\n", + "成功获取 301102.SZ 的数据\n", + "成功获取 301103.SZ 的数据\n", + "成功获取 301105.SZ 的数据\n", + "成功获取 301106.SZ 的数据\n", + "成功获取 301107.SZ 的数据\n", + "成功获取 301108.SZ 的数据\n", + "成功获取 301109.SZ 的数据\n", + "成功获取 301110.SZ 的数据\n", + "成功获取 301111.SZ 的数据\n", + "成功获取 301112.SZ 的数据\n", + "成功获取 301113.SZ 的数据\n", + "成功获取 301115.SZ 的数据\n", + "成功获取 301116.SZ 的数据\n", + "成功获取 301117.SZ 的数据\n", + "成功获取 301118.SZ 的数据\n", + "成功获取 301119.SZ 的数据\n", + "成功获取 301120.SZ 的数据\n", + "成功获取 301121.SZ 的数据\n", + "成功获取 301122.SZ 的数据\n", + "成功获取 301123.SZ 的数据\n", + "成功获取 301125.SZ 的数据\n", + "成功获取 301126.SZ 的数据\n", + "成功获取 301127.SZ 的数据\n", + "成功获取 301128.SZ 的数据\n", + "成功获取 301129.SZ 的数据\n", + "成功获取 301130.SZ 的数据\n", + "成功获取 301131.SZ 的数据\n", + "成功获取 301132.SZ 的数据\n", + "成功获取 301133.SZ 的数据\n", + "成功获取 301135.SZ 的数据\n", + "成功获取 301136.SZ 的数据\n", + "成功获取 301137.SZ 的数据\n", + "成功获取 301138.SZ 的数据\n", + "成功获取 301139.SZ 的数据\n", + "成功获取 301141.SZ 的数据\n", + "成功获取 301148.SZ 的数据\n", + "成功获取 301149.SZ 的数据\n", + "成功获取 301150.SZ 的数据\n", + "成功获取 301151.SZ 的数据\n", + "成功获取 301152.SZ 的数据\n", + "成功获取 301153.SZ 的数据\n", + "成功获取 301155.SZ 的数据\n", + "成功获取 301156.SZ 的数据\n", + "成功获取 301157.SZ 的数据\n", + "成功获取 301158.SZ 的数据\n", + "成功获取 301159.SZ 的数据\n", + "成功获取 301160.SZ 的数据\n", + "成功获取 301161.SZ 的数据\n", + "成功获取 301162.SZ 的数据\n", + "成功获取 301163.SZ 的数据\n", + "成功获取 301165.SZ 的数据\n", + "成功获取 301166.SZ 的数据\n", + "成功获取 301167.SZ 的数据\n", + "成功获取 301168.SZ 的数据\n", + "成功获取 301169.SZ 的数据\n", + "成功获取 301170.SZ 的数据\n", + "成功获取 301171.SZ 的数据\n", + "成功获取 301172.SZ 的数据\n", + "成功获取 301175.SZ 的数据\n", + "成功获取 301176.SZ 的数据\n", + "成功获取 301177.SZ 的数据\n", + "成功获取 301178.SZ 的数据\n", + "成功获取 301179.SZ 的数据\n", + "成功获取 301180.SZ 的数据\n", + "成功获取 301181.SZ 的数据\n", + "成功获取 301182.SZ 的数据\n", + "成功获取 301183.SZ 的数据\n", + "成功获取 301185.SZ 的数据\n", + "成功获取 301186.SZ 的数据\n", + "成功获取 301187.SZ 的数据\n", + "成功获取 301188.SZ 的数据\n", + "成功获取 301189.SZ 的数据\n", + "成功获取 301190.SZ 的数据\n", + "成功获取 301191.SZ 的数据\n", + "成功获取 301192.SZ 的数据\n", + "成功获取 301193.SZ 的数据\n", + "成功获取 301195.SZ 的数据\n", + "成功获取 301196.SZ 的数据\n", + "成功获取 301197.SZ 的数据\n", + "成功获取 301198.SZ 的数据\n", + "成功获取 301199.SZ 的数据\n", + "成功获取 301200.SZ 的数据\n", + "成功获取 301201.SZ 的数据\n", + "成功获取 301202.SZ 的数据\n", + "成功获取 301203.SZ 的数据\n", + "成功获取 301205.SZ 的数据\n", + "成功获取 301206.SZ 的数据\n", + "成功获取 301207.SZ 的数据\n", + "成功获取 301208.SZ 的数据\n", + "成功获取 301209.SZ 的数据\n", + "成功获取 301210.SZ 的数据\n", + "成功获取 301211.SZ 的数据\n", + "成功获取 301212.SZ 的数据\n", + "成功获取 301213.SZ 的数据\n", + "成功获取 301215.SZ 的数据\n", + "成功获取 301216.SZ 的数据\n", + "成功获取 301217.SZ 的数据\n", + "成功获取 301218.SZ 的数据\n", + "成功获取 301219.SZ 的数据\n", + "成功获取 301220.SZ 的数据\n", + "成功获取 301221.SZ 的数据\n", + "成功获取 301222.SZ 的数据\n", + "成功获取 301223.SZ 的数据\n", + "成功获取 301225.SZ 的数据\n", + "成功获取 301226.SZ 的数据\n", + "成功获取 301227.SZ 的数据\n", + "成功获取 301228.SZ 的数据\n", + "成功获取 301229.SZ 的数据\n", + "成功获取 301230.SZ 的数据\n", + "成功获取 301231.SZ 的数据\n", + "成功获取 301232.SZ 的数据\n", + "成功获取 301233.SZ 的数据\n", + "成功获取 301234.SZ 的数据\n", + "成功获取 301235.SZ 的数据\n", + "成功获取 301236.SZ 的数据\n", + "成功获取 301237.SZ 的数据\n", + "成功获取 301238.SZ 的数据\n", + "成功获取 301239.SZ 的数据\n", + "成功获取 301246.SZ 的数据\n", + "成功获取 301248.SZ 的数据\n", + "成功获取 301251.SZ 的数据\n", + "成功获取 301252.SZ 的数据\n", + "成功获取 301255.SZ 的数据\n", + "成功获取 301256.SZ 的数据\n", + "成功获取 301257.SZ 的数据\n", + "成功获取 301258.SZ 的数据\n", + "成功获取 301259.SZ 的数据\n", + "成功获取 301260.SZ 的数据\n", + "成功获取 301261.SZ 的数据\n", + "成功获取 301262.SZ 的数据\n", + "成功获取 301263.SZ 的数据\n", + "成功获取 301265.SZ 的数据\n", + "成功获取 301266.SZ 的数据\n", + "成功获取 301267.SZ 的数据\n", + "成功获取 301268.SZ 的数据\n", + "成功获取 301269.SZ 的数据\n", + "成功获取 301270.SZ 的数据\n", + "成功获取 301272.SZ 的数据\n", + "成功获取 301273.SZ 的数据\n", + "成功获取 301276.SZ 的数据\n", + "成功获取 301277.SZ 的数据\n", + "成功获取 301278.SZ 的数据\n", + "成功获取 301279.SZ 的数据\n", + "成功获取 301280.SZ 的数据\n", + "成功获取 301281.SZ 的数据\n", + "成功获取 301282.SZ 的数据\n", + "成功获取 301283.SZ 的数据\n", + "成功获取 301285.SZ 的数据\n", + "成功获取 301286.SZ 的数据\n", + "成功获取 301287.SZ 的数据\n", + "成功获取 301288.SZ 的数据\n", + "成功获取 301289.SZ 的数据\n", + "成功获取 301290.SZ 的数据\n", + "成功获取 301291.SZ 的数据\n", + "成功获取 301292.SZ 的数据\n", + "成功获取 301293.SZ 的数据\n", + "成功获取 301295.SZ 的数据\n", + "成功获取 301296.SZ 的数据\n", + "成功获取 301297.SZ 的数据\n", + "成功获取 301298.SZ 的数据\n", + "成功获取 301299.SZ 的数据\n", + "成功获取 301300.SZ 的数据\n", + "成功获取 301301.SZ 的数据\n", + "成功获取 301302.SZ 的数据\n", + "成功获取 301303.SZ 的数据\n", + "成功获取 301305.SZ 的数据\n", + "成功获取 301306.SZ 的数据\n", + "成功获取 301307.SZ 的数据\n", + "成功获取 301308.SZ 的数据\n", + "成功获取 301309.SZ 的数据\n", + "成功获取 301310.SZ 的数据\n", + "成功获取 301311.SZ 的数据\n", + "成功获取 301312.SZ 的数据\n", + "成功获取 301313.SZ 的数据\n", + "成功获取 301314.SZ 的数据\n", + "成功获取 301315.SZ 的数据\n", + "已调用300次API,等待 17.83 秒以满足速率限制...\n", + "成功获取 301316.SZ 的数据\n", + "成功获取 301317.SZ 的数据\n", + "成功获取 301318.SZ 的数据\n", + "成功获取 301319.SZ 的数据\n", + "成功获取 301320.SZ 的数据\n", + "成功获取 301321.SZ 的数据\n", + "成功获取 301322.SZ 的数据\n", + "成功获取 301323.SZ 的数据\n", + "成功获取 301325.SZ 的数据\n", + "成功获取 301326.SZ 的数据\n", + "成功获取 301327.SZ 的数据\n", + "成功获取 301328.SZ 的数据\n", + "成功获取 301329.SZ 的数据\n", + "成功获取 301330.SZ 的数据\n", + "成功获取 301331.SZ 的数据\n", + "成功获取 301332.SZ 的数据\n", + "成功获取 301333.SZ 的数据\n", + "成功获取 301335.SZ 的数据\n", + "成功获取 301336.SZ 的数据\n", + "成功获取 301337.SZ 的数据\n", + "成功获取 301338.SZ 的数据\n", + "成功获取 301339.SZ 的数据\n", + "成功获取 301345.SZ 的数据\n", + "成功获取 301348.SZ 的数据\n", + "成功获取 301349.SZ 的数据\n", + "成功获取 301353.SZ 的数据\n", + "成功获取 301355.SZ 的数据\n", + "成功获取 301356.SZ 的数据\n", + "成功获取 301357.SZ 的数据\n", + "成功获取 301358.SZ 的数据\n", + "成功获取 301359.SZ 的数据\n", + "成功获取 301360.SZ 的数据\n", + "成功获取 301361.SZ 的数据\n", + "成功获取 301362.SZ 的数据\n", + "成功获取 301363.SZ 的数据\n", + "成功获取 301365.SZ 的数据\n", + "成功获取 301366.SZ 的数据\n", + "成功获取 301367.SZ 的数据\n", + "成功获取 301368.SZ 的数据\n", + "成功获取 301369.SZ 的数据\n", + "成功获取 301370.SZ 的数据\n", + "成功获取 301371.SZ 的数据\n", + "成功获取 301372.SZ 的数据\n", + "成功获取 301373.SZ 的数据\n", + "成功获取 301376.SZ 的数据\n", + "成功获取 301377.SZ 的数据\n", + "成功获取 301378.SZ 的数据\n", + "成功获取 301379.SZ 的数据\n", + "成功获取 301380.SZ 的数据\n", + "成功获取 301381.SZ 的数据\n", + "成功获取 301382.SZ 的数据\n", + "成功获取 301383.SZ 的数据\n", + "成功获取 301386.SZ 的数据\n", + "成功获取 301387.SZ 的数据\n", + "成功获取 301388.SZ 的数据\n", + "成功获取 301389.SZ 的数据\n", + "成功获取 301390.SZ 的数据\n", + "成功获取 301391.SZ 的数据\n", + "成功获取 301392.SZ 的数据\n", + "成功获取 301393.SZ 的数据\n", + "成功获取 301395.SZ 的数据\n", + "成功获取 301396.SZ 的数据\n", + "成功获取 301397.SZ 的数据\n", + "成功获取 301398.SZ 的数据\n", + "成功获取 301399.SZ 的数据\n", + "成功获取 301408.SZ 的数据\n", + "成功获取 301413.SZ 的数据\n", + "成功获取 301418.SZ 的数据\n", + "成功获取 301419.SZ 的数据\n", + "成功获取 301421.SZ 的数据\n", + "成功获取 301428.SZ 的数据\n", + "成功获取 301429.SZ 的数据\n", + "成功获取 301439.SZ 的数据\n", + "成功获取 301446.SZ 的数据\n", + "成功获取 301448.SZ 的数据\n", + "成功获取 301456.SZ 的数据\n", + "成功获取 301458.SZ 的数据\n", + "成功获取 301459.SZ 的数据\n", + "成功获取 301468.SZ 的数据\n", + "成功获取 301469.SZ 的数据\n", + "成功获取 301486.SZ 的数据\n", + "成功获取 301487.SZ 的数据\n", + "成功获取 301488.SZ 的数据\n", + "成功获取 301489.SZ 的数据\n", + "成功获取 301498.SZ 的数据\n", + "成功获取 301499.SZ 的数据\n", + "成功获取 301500.SZ 的数据\n", + "成功获取 301502.SZ 的数据\n", + "成功获取 301503.SZ 的数据\n", + "成功获取 301505.SZ 的数据\n", + "成功获取 301507.SZ 的数据\n", + "成功获取 301508.SZ 的数据\n", + "成功获取 301509.SZ 的数据\n", + "成功获取 301510.SZ 的数据\n", + "成功获取 301511.SZ 的数据\n", + "成功获取 301512.SZ 的数据\n", + "成功获取 301515.SZ 的数据\n", + "成功获取 301516.SZ 的数据\n", + "成功获取 301517.SZ 的数据\n", + "成功获取 301518.SZ 的数据\n", + "成功获取 301519.SZ 的数据\n", + "成功获取 301520.SZ 的数据\n", + "成功获取 301522.SZ 的数据\n", + "成功获取 301525.SZ 的数据\n", + "成功获取 301526.SZ 的数据\n", + "成功获取 301528.SZ 的数据\n", + "成功获取 301529.SZ 的数据\n", + "成功获取 301533.SZ 的数据\n", + "成功获取 301536.SZ 的数据\n", + "成功获取 301538.SZ 的数据\n", + "成功获取 301539.SZ 的数据\n", + "成功获取 301548.SZ 的数据\n", + "成功获取 301550.SZ 的数据\n", + "成功获取 301551.SZ 的数据\n", + "成功获取 301552.SZ 的数据\n", + "成功获取 301555.SZ 的数据\n", + "成功获取 301556.SZ 的数据\n", + "成功获取 301558.SZ 的数据\n", + "成功获取 301559.SZ 的数据\n", + "成功获取 301565.SZ 的数据\n", + "成功获取 301566.SZ 的数据\n", + "成功获取 301567.SZ 的数据\n", + "成功获取 301568.SZ 的数据\n", + "成功获取 301571.SZ 的数据\n", + "成功获取 301577.SZ 的数据\n", + "成功获取 301578.SZ 的数据\n", + "成功获取 301580.SZ 的数据\n", + "成功获取 301581.SZ 的数据\n", + "成功获取 301585.SZ 的数据\n", + "成功获取 301586.SZ 的数据\n", + "成功获取 301587.SZ 的数据\n", + "成功获取 301588.SZ 的数据\n", + "成功获取 301589.SZ 的数据\n", + "成功获取 301591.SZ 的数据\n", + "成功获取 301592.SZ 的数据\n", + "成功获取 301596.SZ 的数据\n", + "成功获取 301598.SZ 的数据\n", + "成功获取 301600.SZ 的数据\n", + "成功获取 301601.SZ 的数据\n", + "成功获取 301602.SZ 的数据\n", + "成功获取 301603.SZ 的数据\n", + "成功获取 301606.SZ 的数据\n", + "成功获取 301607.SZ 的数据\n", + "成功获取 301608.SZ 的数据\n", + "成功获取 301611.SZ 的数据\n", + "成功获取 301613.SZ 的数据\n", + "成功获取 301617.SZ 的数据\n", + "成功获取 301618.SZ 的数据\n", + "成功获取 301622.SZ 的数据\n", + "成功获取 301626.SZ 的数据\n", + "成功获取 301628.SZ 的数据\n", + "成功获取 301631.SZ 的数据\n", + "成功获取 301633.SZ 的数据\n", + "成功获取 430017.BJ 的数据\n", + "成功获取 430047.BJ 的数据\n", + "成功获取 430090.BJ 的数据\n", + "成功获取 430139.BJ 的数据\n", + "成功获取 430198.BJ 的数据\n", + "成功获取 430300.BJ 的数据\n", + "成功获取 430418.BJ 的数据\n", + "成功获取 430425.BJ 的数据\n", + "成功获取 430476.BJ 的数据\n", + "成功获取 430478.BJ 的数据\n", + "成功获取 430489.BJ 的数据\n", + "成功获取 430510.BJ 的数据\n", + "成功获取 430556.BJ 的数据\n", + "成功获取 430564.BJ 的数据\n", + "成功获取 430685.BJ 的数据\n", + "成功获取 430718.BJ 的数据\n", + "成功获取 600000.SH 的数据\n", + "成功获取 600004.SH 的数据\n", + "成功获取 600006.SH 的数据\n", + "成功获取 600007.SH 的数据\n", + "成功获取 600008.SH 的数据\n", + "成功获取 600009.SH 的数据\n", + "成功获取 600010.SH 的数据\n", + "成功获取 600011.SH 的数据\n", + "成功获取 600012.SH 的数据\n", + "成功获取 600015.SH 的数据\n", + "成功获取 600016.SH 的数据\n", + "成功获取 600017.SH 的数据\n", + "成功获取 600018.SH 的数据\n", + "成功获取 600019.SH 的数据\n", + "成功获取 600020.SH 的数据\n", + "成功获取 600021.SH 的数据\n", + "成功获取 600022.SH 的数据\n", + "成功获取 600023.SH 的数据\n", + "成功获取 600025.SH 的数据\n", + "成功获取 600026.SH 的数据\n", + "成功获取 600027.SH 的数据\n", + "成功获取 600028.SH 的数据\n", + "成功获取 600029.SH 的数据\n", + "成功获取 600030.SH 的数据\n", + "成功获取 600031.SH 的数据\n", + "成功获取 600032.SH 的数据\n", + "成功获取 600033.SH 的数据\n", + "成功获取 600035.SH 的数据\n", + "成功获取 600036.SH 的数据\n", + "成功获取 600037.SH 的数据\n", + "成功获取 600038.SH 的数据\n", + "成功获取 600039.SH 的数据\n", + "成功获取 600048.SH 的数据\n", + "成功获取 600050.SH 的数据\n", + "成功获取 600051.SH 的数据\n", + "成功获取 600052.SH 的数据\n", + "成功获取 600053.SH 的数据\n", + "成功获取 600054.SH 的数据\n", + "成功获取 600055.SH 的数据\n", + "成功获取 600056.SH 的数据\n", + "成功获取 600057.SH 的数据\n", + "成功获取 600058.SH 的数据\n", + "成功获取 600059.SH 的数据\n", + "成功获取 600060.SH 的数据\n", + "成功获取 600061.SH 的数据\n", + "成功获取 600062.SH 的数据\n", + "成功获取 600063.SH 的数据\n", + "成功获取 600064.SH 的数据\n", + "成功获取 600066.SH 的数据\n", + "成功获取 600067.SH 的数据\n", + "成功获取 600070.SH 的数据\n", + "成功获取 600071.SH 的数据\n", + "成功获取 600072.SH 的数据\n", + "成功获取 600073.SH 的数据\n", + "成功获取 600075.SH 的数据\n", + "成功获取 600076.SH 的数据\n", + "成功获取 600078.SH 的数据\n", + "成功获取 600079.SH 的数据\n", + "成功获取 600080.SH 的数据\n", + "成功获取 600081.SH 的数据\n", + "成功获取 600082.SH 的数据\n", + "成功获取 600083.SH 的数据\n", + "成功获取 600084.SH 的数据\n", + "成功获取 600085.SH 的数据\n", + "成功获取 600088.SH 的数据\n", + "成功获取 600089.SH 的数据\n", + "成功获取 600094.SH 的数据\n", + "成功获取 600095.SH 的数据\n", + "成功获取 600096.SH 的数据\n", + "成功获取 600097.SH 的数据\n", + "成功获取 600098.SH 的数据\n", + "成功获取 600099.SH 的数据\n", + "成功获取 600100.SH 的数据\n", + "成功获取 600101.SH 的数据\n", + "成功获取 600103.SH 的数据\n", + "成功获取 600104.SH 的数据\n", + "成功获取 600105.SH 的数据\n", + "成功获取 600106.SH 的数据\n", + "成功获取 600107.SH 的数据\n", + "成功获取 600108.SH 的数据\n", + "成功获取 600109.SH 的数据\n", + "成功获取 600110.SH 的数据\n", + "成功获取 600111.SH 的数据\n", + "成功获取 600113.SH 的数据\n", + "成功获取 600114.SH 的数据\n", + "成功获取 600115.SH 的数据\n", + "成功获取 600116.SH 的数据\n", + "成功获取 600117.SH 的数据\n", + "成功获取 600118.SH 的数据\n", + "成功获取 600119.SH 的数据\n", + "成功获取 600120.SH 的数据\n", + "成功获取 600121.SH 的数据\n", + "成功获取 600123.SH 的数据\n", + "成功获取 600125.SH 的数据\n", + "成功获取 600126.SH 的数据\n", + "成功获取 600127.SH 的数据\n", + "成功获取 600128.SH 的数据\n", + "成功获取 600129.SH 的数据\n", + "成功获取 600130.SH 的数据\n", + "成功获取 600131.SH 的数据\n", + "成功获取 600132.SH 的数据\n", + "成功获取 600133.SH 的数据\n", + "成功获取 600135.SH 的数据\n", + "成功获取 600136.SH 的数据\n", + "成功获取 600137.SH 的数据\n", + "成功获取 600138.SH 的数据\n", + "成功获取 600141.SH 的数据\n", + "成功获取 600143.SH 的数据\n", + "成功获取 600148.SH 的数据\n", + "成功获取 600149.SH 的数据\n", + "成功获取 600150.SH 的数据\n", + "成功获取 600151.SH 的数据\n", + "成功获取 600152.SH 的数据\n", + "成功获取 600153.SH 的数据\n", + "成功获取 600155.SH 的数据\n", + "成功获取 600156.SH 的数据\n", + "成功获取 600157.SH 的数据\n", + "成功获取 600158.SH 的数据\n", + "成功获取 600159.SH 的数据\n", + "成功获取 600160.SH 的数据\n", + "成功获取 600161.SH 的数据\n", + "成功获取 600162.SH 的数据\n", + "成功获取 600163.SH 的数据\n", + "成功获取 600165.SH 的数据\n", + "成功获取 600166.SH 的数据\n", + "成功获取 600167.SH 的数据\n", + "成功获取 600168.SH 的数据\n", + "成功获取 600169.SH 的数据\n", + "成功获取 600170.SH 的数据\n", + "成功获取 600171.SH 的数据\n", + "成功获取 600172.SH 的数据\n", + "已调用300次API,等待 10.12 秒以满足速率限制...\n", + "成功获取 600173.SH 的数据\n", + "成功获取 600176.SH 的数据\n", + "成功获取 600177.SH 的数据\n", + "成功获取 600178.SH 的数据\n", + "成功获取 600179.SH 的数据\n", + "成功获取 600180.SH 的数据\n", + "成功获取 600182.SH 的数据\n", + "成功获取 600183.SH 的数据\n", + "成功获取 600184.SH 的数据\n", + "成功获取 600185.SH 的数据\n", + "成功获取 600186.SH 的数据\n", + "成功获取 600187.SH 的数据\n", + "成功获取 600188.SH 的数据\n", + "成功获取 600189.SH 的数据\n", + "成功获取 600190.SH 的数据\n", + "成功获取 600191.SH 的数据\n", + "成功获取 600192.SH 的数据\n", + "成功获取 600193.SH 的数据\n", + "成功获取 600195.SH 的数据\n", + "成功获取 600196.SH 的数据\n", + "成功获取 600197.SH 的数据\n", + "成功获取 600198.SH 的数据\n", + "成功获取 600199.SH 的数据\n", + "成功获取 600200.SH 的数据\n", + "成功获取 600201.SH 的数据\n", + "成功获取 600202.SH 的数据\n", + "成功获取 600203.SH 的数据\n", + "成功获取 600206.SH 的数据\n", + "成功获取 600207.SH 的数据\n", + "成功获取 600208.SH 的数据\n", + "成功获取 600210.SH 的数据\n", + "成功获取 600211.SH 的数据\n", + "成功获取 600212.SH 的数据\n", + "成功获取 600215.SH 的数据\n", + "成功获取 600216.SH 的数据\n", + "成功获取 600217.SH 的数据\n", + "成功获取 600218.SH 的数据\n", + "成功获取 600219.SH 的数据\n", + "成功获取 600221.SH 的数据\n", + "成功获取 600222.SH 的数据\n", + "成功获取 600223.SH 的数据\n", + "成功获取 600225.SH 的数据\n", + "成功获取 600226.SH 的数据\n", + "成功获取 600227.SH 的数据\n", + "成功获取 600228.SH 的数据\n", + "成功获取 600229.SH 的数据\n", + "成功获取 600230.SH 的数据\n", + "成功获取 600231.SH 的数据\n", + "成功获取 600232.SH 的数据\n", + "成功获取 600233.SH 的数据\n", + "成功获取 600234.SH 的数据\n", + "成功获取 600235.SH 的数据\n", + "成功获取 600236.SH 的数据\n", + "成功获取 600237.SH 的数据\n", + "成功获取 600238.SH 的数据\n", + "成功获取 600239.SH 的数据\n", + "成功获取 600241.SH 的数据\n", + "成功获取 600243.SH 的数据\n", + "成功获取 600246.SH 的数据\n", + "成功获取 600248.SH 的数据\n", + "成功获取 600249.SH 的数据\n", + "成功获取 600250.SH 的数据\n", + "成功获取 600251.SH 的数据\n", + "成功获取 600252.SH 的数据\n", + "成功获取 600255.SH 的数据\n", + "成功获取 600256.SH 的数据\n", + "成功获取 600257.SH 的数据\n", + "成功获取 600258.SH 的数据\n", + "成功获取 600259.SH 的数据\n", + "成功获取 600261.SH 的数据\n", + "成功获取 600262.SH 的数据\n", + "成功获取 600265.SH 的数据\n", + "成功获取 600266.SH 的数据\n", + "成功获取 600267.SH 的数据\n", + "成功获取 600268.SH 的数据\n", + "成功获取 600269.SH 的数据\n", + "成功获取 600271.SH 的数据\n", + "成功获取 600272.SH 的数据\n", + "成功获取 600273.SH 的数据\n", + "成功获取 600276.SH 的数据\n", + "成功获取 600278.SH 的数据\n", + "成功获取 600279.SH 的数据\n", + "成功获取 600280.SH 的数据\n", + "成功获取 600281.SH 的数据\n", + "成功获取 600282.SH 的数据\n", + "成功获取 600283.SH 的数据\n", + "成功获取 600284.SH 的数据\n", + "成功获取 600285.SH 的数据\n", + "成功获取 600287.SH 的数据\n", + "成功获取 600288.SH 的数据\n", + "成功获取 600289.SH 的数据\n", + "成功获取 600292.SH 的数据\n", + "成功获取 600293.SH 的数据\n", + "成功获取 600295.SH 的数据\n", + "成功获取 600298.SH 的数据\n", + "成功获取 600299.SH 的数据\n", + "成功获取 600300.SH 的数据\n", + "成功获取 600301.SH 的数据\n", + "成功获取 600302.SH 的数据\n", + "成功获取 600303.SH 的数据\n", + "成功获取 600305.SH 的数据\n", + "成功获取 600307.SH 的数据\n", + "成功获取 600308.SH 的数据\n", + "成功获取 600309.SH 的数据\n", + "成功获取 600310.SH 的数据\n", + "成功获取 600312.SH 的数据\n", + "成功获取 600313.SH 的数据\n", + "成功获取 600315.SH 的数据\n", + "成功获取 600316.SH 的数据\n", + "成功获取 600318.SH 的数据\n", + "成功获取 600319.SH 的数据\n", + "成功获取 600320.SH 的数据\n", + "成功获取 600322.SH 的数据\n", + "成功获取 600323.SH 的数据\n", + "成功获取 600325.SH 的数据\n", + "成功获取 600326.SH 的数据\n", + "成功获取 600327.SH 的数据\n", + "成功获取 600328.SH 的数据\n", + "成功获取 600329.SH 的数据\n", + "成功获取 600330.SH 的数据\n", + "成功获取 600331.SH 的数据\n", + "成功获取 600332.SH 的数据\n", + "成功获取 600333.SH 的数据\n", + "成功获取 600335.SH 的数据\n", + "成功获取 600336.SH 的数据\n", + "成功获取 600337.SH 的数据\n", + "成功获取 600338.SH 的数据\n", + "成功获取 600339.SH 的数据\n", + "成功获取 600340.SH 的数据\n", + "成功获取 600343.SH 的数据\n", + "成功获取 600345.SH 的数据\n", + "成功获取 600346.SH 的数据\n", + "成功获取 600348.SH 的数据\n", + "成功获取 600350.SH 的数据\n", + "成功获取 600351.SH 的数据\n", + "成功获取 600352.SH 的数据\n", + "成功获取 600353.SH 的数据\n", + "成功获取 600354.SH 的数据\n", + "成功获取 600355.SH 的数据\n", + "成功获取 600356.SH 的数据\n", + "成功获取 600358.SH 的数据\n", + "成功获取 600359.SH 的数据\n", + "成功获取 600360.SH 的数据\n", + "成功获取 600361.SH 的数据\n", + "成功获取 600362.SH 的数据\n", + "成功获取 600363.SH 的数据\n", + "成功获取 600365.SH 的数据\n", + "成功获取 600366.SH 的数据\n", + "成功获取 600367.SH 的数据\n", + "成功获取 600368.SH 的数据\n", + "成功获取 600369.SH 的数据\n", + "成功获取 600370.SH 的数据\n", + "成功获取 600371.SH 的数据\n", + "成功获取 600372.SH 的数据\n", + "成功获取 600373.SH 的数据\n", + "成功获取 600375.SH 的数据\n", + "成功获取 600376.SH 的数据\n", + "成功获取 600377.SH 的数据\n", + "成功获取 600378.SH 的数据\n", + "成功获取 600379.SH 的数据\n", + "成功获取 600380.SH 的数据\n", + "成功获取 600381.SH 的数据\n", + "成功获取 600382.SH 的数据\n", + "成功获取 600383.SH 的数据\n", + "成功获取 600386.SH 的数据\n", + "成功获取 600387.SH 的数据\n", + "成功获取 600388.SH 的数据\n", + "成功获取 600389.SH 的数据\n", + "成功获取 600390.SH 的数据\n", + "成功获取 600391.SH 的数据\n", + "成功获取 600392.SH 的数据\n", + "成功获取 600395.SH 的数据\n", + "成功获取 600396.SH 的数据\n", + "成功获取 600397.SH 的数据\n", + "成功获取 600398.SH 的数据\n", + "成功获取 600399.SH 的数据\n", + "成功获取 600400.SH 的数据\n", + "成功获取 600403.SH 的数据\n", + "成功获取 600405.SH 的数据\n", + "成功获取 600406.SH 的数据\n", + "成功获取 600408.SH 的数据\n", + "成功获取 600409.SH 的数据\n", + "成功获取 600410.SH 的数据\n", + "成功获取 600415.SH 的数据\n", + "成功获取 600416.SH 的数据\n", + "成功获取 600418.SH 的数据\n", + "成功获取 600419.SH 的数据\n", + "成功获取 600420.SH 的数据\n", + "成功获取 600421.SH 的数据\n", + "成功获取 600422.SH 的数据\n", + "成功获取 600423.SH 的数据\n", + "成功获取 600425.SH 的数据\n", + "成功获取 600426.SH 的数据\n", + "成功获取 600428.SH 的数据\n", + "成功获取 600429.SH 的数据\n", + "成功获取 600433.SH 的数据\n", + "成功获取 600435.SH 的数据\n", + "成功获取 600436.SH 的数据\n", + "成功获取 600438.SH 的数据\n", + "成功获取 600439.SH 的数据\n", + "成功获取 600444.SH 的数据\n", + "成功获取 600446.SH 的数据\n", + "成功获取 600448.SH 的数据\n", + "成功获取 600449.SH 的数据\n", + "成功获取 600452.SH 的数据\n", + "成功获取 600455.SH 的数据\n", + "成功获取 600456.SH 的数据\n", + "成功获取 600458.SH 的数据\n", + "成功获取 600459.SH 的数据\n", + "成功获取 600460.SH 的数据\n", + "成功获取 600461.SH 的数据\n", + "成功获取 600462.SH 的数据\n", + "成功获取 600463.SH 的数据\n", + "成功获取 600467.SH 的数据\n", + "成功获取 600468.SH 的数据\n", + "成功获取 600469.SH 的数据\n", + "成功获取 600470.SH 的数据\n", + "成功获取 600475.SH 的数据\n", + "成功获取 600476.SH 的数据\n", + "成功获取 600477.SH 的数据\n", + "成功获取 600478.SH 的数据\n", + "成功获取 600479.SH 的数据\n", + "成功获取 600480.SH 的数据\n", + "成功获取 600481.SH 的数据\n", + "成功获取 600482.SH 的数据\n", + "成功获取 600483.SH 的数据\n", + "成功获取 600486.SH 的数据\n", + "成功获取 600487.SH 的数据\n", + "成功获取 600488.SH 的数据\n", + "成功获取 600489.SH 的数据\n", + "成功获取 600490.SH 的数据\n", + "成功获取 600491.SH 的数据\n", + "成功获取 600493.SH 的数据\n", + "成功获取 600495.SH 的数据\n", + "成功获取 600496.SH 的数据\n", + "成功获取 600497.SH 的数据\n", + "成功获取 600498.SH 的数据\n", + "成功获取 600499.SH 的数据\n", + "成功获取 600500.SH 的数据\n", + "成功获取 600501.SH 的数据\n", + "成功获取 600502.SH 的数据\n", + "成功获取 600503.SH 的数据\n", + "成功获取 600505.SH 的数据\n", + "成功获取 600506.SH 的数据\n", + "成功获取 600507.SH 的数据\n", + "成功获取 600508.SH 的数据\n", + "成功获取 600509.SH 的数据\n", + "成功获取 600510.SH 的数据\n", + "成功获取 600511.SH 的数据\n", + "成功获取 600512.SH 的数据\n", + "成功获取 600513.SH 的数据\n", + "成功获取 600515.SH 的数据\n", + "成功获取 600516.SH 的数据\n", + "成功获取 600517.SH 的数据\n", + "成功获取 600518.SH 的数据\n", + "成功获取 600519.SH 的数据\n", + "成功获取 600520.SH 的数据\n", + "成功获取 600521.SH 的数据\n", + "成功获取 600522.SH 的数据\n", + "成功获取 600523.SH 的数据\n", + "成功获取 600525.SH 的数据\n", + "成功获取 600526.SH 的数据\n", + "成功获取 600527.SH 的数据\n", + "成功获取 600528.SH 的数据\n", + "成功获取 600529.SH 的数据\n", + "成功获取 600530.SH 的数据\n", + "成功获取 600531.SH 的数据\n", + "成功获取 600533.SH 的数据\n", + "成功获取 600535.SH 的数据\n", + "成功获取 600536.SH 的数据\n", + "成功获取 600537.SH 的数据\n", + "成功获取 600538.SH 的数据\n", + "成功获取 600539.SH 的数据\n", + "成功获取 600540.SH 的数据\n", + "成功获取 600543.SH 的数据\n", + "成功获取 600545.SH 的数据\n", + "成功获取 600546.SH 的数据\n", + "成功获取 600547.SH 的数据\n", + "成功获取 600548.SH 的数据\n", + "成功获取 600549.SH 的数据\n", + "成功获取 600550.SH 的数据\n", + "成功获取 600551.SH 的数据\n", + "成功获取 600552.SH 的数据\n", + "成功获取 600556.SH 的数据\n", + "成功获取 600557.SH 的数据\n", + "成功获取 600558.SH 的数据\n", + "成功获取 600559.SH 的数据\n", + "成功获取 600560.SH 的数据\n", + "成功获取 600561.SH 的数据\n", + "成功获取 600562.SH 的数据\n", + "成功获取 600563.SH 的数据\n", + "成功获取 600566.SH 的数据\n", + "成功获取 600567.SH 的数据\n", + "成功获取 600568.SH 的数据\n", + "成功获取 600569.SH 的数据\n", + "成功获取 600570.SH 的数据\n", + "成功获取 600571.SH 的数据\n", + "成功获取 600572.SH 的数据\n", + "成功获取 600573.SH 的数据\n", + "成功获取 600575.SH 的数据\n", + "已调用300次API,等待 3.24 秒以满足速率限制...\n", + "成功获取 600576.SH 的数据\n", + "成功获取 600577.SH 的数据\n", + "成功获取 600578.SH 的数据\n", + "成功获取 600579.SH 的数据\n", + "成功获取 600580.SH 的数据\n", + "成功获取 600581.SH 的数据\n", + "成功获取 600582.SH 的数据\n", + "成功获取 600583.SH 的数据\n", + "成功获取 600584.SH 的数据\n", + "成功获取 600585.SH 的数据\n", + "成功获取 600586.SH 的数据\n", + "成功获取 600587.SH 的数据\n", + "成功获取 600588.SH 的数据\n", + "成功获取 600589.SH 的数据\n", + "成功获取 600590.SH 的数据\n", + "成功获取 600592.SH 的数据\n", + "成功获取 600593.SH 的数据\n", + "成功获取 600594.SH 的数据\n", + "成功获取 600595.SH 的数据\n", + "成功获取 600596.SH 的数据\n", + "成功获取 600597.SH 的数据\n", + "成功获取 600598.SH 的数据\n", + "成功获取 600599.SH 的数据\n", + "成功获取 600600.SH 的数据\n", + "成功获取 600601.SH 的数据\n", + "成功获取 600602.SH 的数据\n", + "成功获取 600603.SH 的数据\n", + "成功获取 600604.SH 的数据\n", + "成功获取 600605.SH 的数据\n", + "成功获取 600606.SH 的数据\n", + "成功获取 600608.SH 的数据\n", + "成功获取 600609.SH 的数据\n", + "成功获取 600610.SH 的数据\n", + "成功获取 600611.SH 的数据\n", + "成功获取 600612.SH 的数据\n", + "成功获取 600613.SH 的数据\n", + "成功获取 600615.SH 的数据\n", + "成功获取 600616.SH 的数据\n", + "成功获取 600617.SH 的数据\n", + "成功获取 600618.SH 的数据\n", + "成功获取 600619.SH 的数据\n", + "成功获取 600620.SH 的数据\n", + "成功获取 600621.SH 的数据\n", + "成功获取 600622.SH 的数据\n", + "成功获取 600623.SH 的数据\n", + "成功获取 600624.SH 的数据\n", + "成功获取 600626.SH 的数据\n", + "成功获取 600628.SH 的数据\n", + "成功获取 600629.SH 的数据\n", + "成功获取 600630.SH 的数据\n", + "成功获取 600633.SH 的数据\n", + "成功获取 600635.SH 的数据\n", + "成功获取 600636.SH 的数据\n", + "成功获取 600637.SH 的数据\n", + "成功获取 600638.SH 的数据\n", + "成功获取 600639.SH 的数据\n", + "成功获取 600640.SH 的数据\n", + "成功获取 600641.SH 的数据\n", + "成功获取 600642.SH 的数据\n", + "成功获取 600643.SH 的数据\n", + "成功获取 600644.SH 的数据\n", + "成功获取 600645.SH 的数据\n", + "成功获取 600648.SH 的数据\n", + "成功获取 600649.SH 的数据\n", + "成功获取 600650.SH 的数据\n", + "成功获取 600651.SH 的数据\n", + "成功获取 600653.SH 的数据\n", + "成功获取 600654.SH 的数据\n", + "成功获取 600655.SH 的数据\n", + "成功获取 600657.SH 的数据\n", + "成功获取 600658.SH 的数据\n", + "成功获取 600660.SH 的数据\n", + "成功获取 600661.SH 的数据\n", + "成功获取 600662.SH 的数据\n", + "成功获取 600663.SH 的数据\n", + "成功获取 600664.SH 的数据\n", + "成功获取 600665.SH 的数据\n", + "成功获取 600666.SH 的数据\n", + "成功获取 600667.SH 的数据\n", + "成功获取 600668.SH 的数据\n", + "成功获取 600671.SH 的数据\n", + "成功获取 600673.SH 的数据\n", + "成功获取 600674.SH 的数据\n", + "成功获取 600675.SH 的数据\n", + "成功获取 600676.SH 的数据\n", + "成功获取 600678.SH 的数据\n", + "成功获取 600679.SH 的数据\n", + "成功获取 600681.SH 的数据\n", + "成功获取 600682.SH 的数据\n", + "成功获取 600683.SH 的数据\n", + "成功获取 600684.SH 的数据\n", + "成功获取 600685.SH 的数据\n", + "成功获取 600686.SH 的数据\n", + "成功获取 600688.SH 的数据\n", + "成功获取 600689.SH 的数据\n", + "成功获取 600690.SH 的数据\n", + "成功获取 600691.SH 的数据\n", + "成功获取 600692.SH 的数据\n", + "成功获取 600693.SH 的数据\n", + "成功获取 600694.SH 的数据\n", + "成功获取 600696.SH 的数据\n", + "成功获取 600697.SH 的数据\n", + "成功获取 600698.SH 的数据\n", + "成功获取 600699.SH 的数据\n", + "成功获取 600702.SH 的数据\n", + "成功获取 600703.SH 的数据\n", + "成功获取 600704.SH 的数据\n", + "成功获取 600705.SH 的数据\n", + "成功获取 600706.SH 的数据\n", + "成功获取 600707.SH 的数据\n", + "成功获取 600708.SH 的数据\n", + "成功获取 600710.SH 的数据\n", + "成功获取 600711.SH 的数据\n", + "成功获取 600712.SH 的数据\n", + "成功获取 600713.SH 的数据\n", + "成功获取 600714.SH 的数据\n", + "成功获取 600715.SH 的数据\n", + "成功获取 600716.SH 的数据\n", + "成功获取 600717.SH 的数据\n", + "成功获取 600718.SH 的数据\n", + "成功获取 600719.SH 的数据\n", + "成功获取 600720.SH 的数据\n", + "成功获取 600721.SH 的数据\n", + "成功获取 600722.SH 的数据\n", + "成功获取 600724.SH 的数据\n", + "成功获取 600725.SH 的数据\n", + "成功获取 600726.SH 的数据\n", + "成功获取 600727.SH 的数据\n", + "成功获取 600728.SH 的数据\n", + "成功获取 600729.SH 的数据\n", + "成功获取 600730.SH 的数据\n", + "成功获取 600731.SH 的数据\n", + "成功获取 600732.SH 的数据\n", + "成功获取 600733.SH 的数据\n", + "成功获取 600734.SH 的数据\n", + "成功获取 600735.SH 的数据\n", + "成功获取 600736.SH 的数据\n", + "成功获取 600737.SH 的数据\n", + "成功获取 600738.SH 的数据\n", + "成功获取 600739.SH 的数据\n", + "成功获取 600740.SH 的数据\n", + "成功获取 600741.SH 的数据\n", + "成功获取 600742.SH 的数据\n", + "成功获取 600743.SH 的数据\n", + "成功获取 600744.SH 的数据\n", + "成功获取 600745.SH 的数据\n", + "成功获取 600746.SH 的数据\n", + "成功获取 600748.SH 的数据\n", + "成功获取 600749.SH 的数据\n", + "成功获取 600750.SH 的数据\n", + "成功获取 600751.SH 的数据\n", + "成功获取 600753.SH 的数据\n", + "成功获取 600754.SH 的数据\n", + "成功获取 600755.SH 的数据\n", + "成功获取 600756.SH 的数据\n", + "成功获取 600757.SH 的数据\n", + "成功获取 600758.SH 的数据\n", + "成功获取 600759.SH 的数据\n", + "成功获取 600760.SH 的数据\n", + "成功获取 600761.SH 的数据\n", + "成功获取 600763.SH 的数据\n", + "成功获取 600764.SH 的数据\n", + "成功获取 600765.SH 的数据\n", + "成功获取 600768.SH 的数据\n", + "成功获取 600769.SH 的数据\n", + "成功获取 600770.SH 的数据\n", + "成功获取 600771.SH 的数据\n", + "成功获取 600773.SH 的数据\n", + "成功获取 600774.SH 的数据\n", + "成功获取 600775.SH 的数据\n", + "成功获取 600776.SH 的数据\n", + "成功获取 600777.SH 的数据\n", + "成功获取 600778.SH 的数据\n", + "成功获取 600779.SH 的数据\n", + "成功获取 600780.SH 的数据\n", + "成功获取 600782.SH 的数据\n", + "成功获取 600783.SH 的数据\n", + "成功获取 600784.SH 的数据\n", + "成功获取 600785.SH 的数据\n", + "成功获取 600787.SH 的数据\n", + "成功获取 600789.SH 的数据\n", + "成功获取 600790.SH 的数据\n", + "成功获取 600791.SH 的数据\n", + "成功获取 600792.SH 的数据\n", + "成功获取 600793.SH 的数据\n", + "成功获取 600794.SH 的数据\n", + "成功获取 600795.SH 的数据\n", + "成功获取 600796.SH 的数据\n", + "成功获取 600797.SH 的数据\n", + "成功获取 600798.SH 的数据\n", + "成功获取 600800.SH 的数据\n", + "成功获取 600801.SH 的数据\n", + "成功获取 600802.SH 的数据\n", + "成功获取 600803.SH 的数据\n", + "成功获取 600804.SH 的数据\n", + "成功获取 600805.SH 的数据\n", + "成功获取 600807.SH 的数据\n", + "成功获取 600808.SH 的数据\n", + "成功获取 600809.SH 的数据\n", + "成功获取 600810.SH 的数据\n", + "成功获取 600811.SH 的数据\n", + "成功获取 600812.SH 的数据\n", + "成功获取 600814.SH 的数据\n", + "成功获取 600815.SH 的数据\n", + "成功获取 600816.SH 的数据\n", + "成功获取 600817.SH 的数据\n", + "成功获取 600818.SH 的数据\n", + "成功获取 600819.SH 的数据\n", + "成功获取 600820.SH 的数据\n", + "成功获取 600821.SH 的数据\n", + "成功获取 600822.SH 的数据\n", + "成功获取 600824.SH 的数据\n", + "成功获取 600825.SH 的数据\n", + "成功获取 600826.SH 的数据\n", + "成功获取 600827.SH 的数据\n", + "成功获取 600828.SH 的数据\n", + "成功获取 600829.SH 的数据\n", + "成功获取 600830.SH 的数据\n", + "成功获取 600831.SH 的数据\n", + "成功获取 600833.SH 的数据\n", + "成功获取 600834.SH 的数据\n", + "成功获取 600835.SH 的数据\n", + "成功获取 600837.SH 的数据\n", + "成功获取 600838.SH 的数据\n", + "成功获取 600839.SH 的数据\n", + "成功获取 600841.SH 的数据\n", + "成功获取 600843.SH 的数据\n", + "成功获取 600844.SH 的数据\n", + "成功获取 600845.SH 的数据\n", + "成功获取 600846.SH 的数据\n", + "成功获取 600847.SH 的数据\n", + "成功获取 600848.SH 的数据\n", + "成功获取 600850.SH 的数据\n", + "成功获取 600851.SH 的数据\n", + "成功获取 600853.SH 的数据\n", + "成功获取 600854.SH 的数据\n", + "成功获取 600855.SH 的数据\n", + "成功获取 600857.SH 的数据\n", + "成功获取 600858.SH 的数据\n", + "成功获取 600859.SH 的数据\n", + "成功获取 600860.SH 的数据\n", + "成功获取 600861.SH 的数据\n", + "成功获取 600862.SH 的数据\n", + "成功获取 600863.SH 的数据\n", + "成功获取 600864.SH 的数据\n", + "成功获取 600865.SH 的数据\n", + "成功获取 600866.SH 的数据\n", + "成功获取 600867.SH 的数据\n", + "成功获取 600868.SH 的数据\n", + "成功获取 600869.SH 的数据\n", + "成功获取 600871.SH 的数据\n", + "成功获取 600872.SH 的数据\n", + "成功获取 600873.SH 的数据\n", + "成功获取 600874.SH 的数据\n", + "成功获取 600875.SH 的数据\n", + "成功获取 600876.SH 的数据\n", + "成功获取 600877.SH 的数据\n", + "成功获取 600879.SH 的数据\n", + "成功获取 600880.SH 的数据\n", + "成功获取 600881.SH 的数据\n", + "成功获取 600882.SH 的数据\n", + "成功获取 600883.SH 的数据\n", + "成功获取 600884.SH 的数据\n", + "成功获取 600885.SH 的数据\n", + "成功获取 600886.SH 的数据\n", + "成功获取 600887.SH 的数据\n", + "成功获取 600888.SH 的数据\n", + "成功获取 600889.SH 的数据\n", + "成功获取 600892.SH 的数据\n", + "成功获取 600893.SH 的数据\n", + "成功获取 600894.SH 的数据\n", + "成功获取 600895.SH 的数据\n", + "成功获取 600897.SH 的数据\n", + "成功获取 600898.SH 的数据\n", + "成功获取 600900.SH 的数据\n", + "成功获取 600901.SH 的数据\n", + "成功获取 600903.SH 的数据\n", + "成功获取 600905.SH 的数据\n", + "成功获取 600906.SH 的数据\n", + "成功获取 600908.SH 的数据\n", + "成功获取 600909.SH 的数据\n", + "成功获取 600916.SH 的数据\n", + "成功获取 600917.SH 的数据\n", + "成功获取 600918.SH 的数据\n", + "成功获取 600919.SH 的数据\n", + "成功获取 600925.SH 的数据\n", + "成功获取 600926.SH 的数据\n", + "成功获取 600927.SH 的数据\n", + "成功获取 600928.SH 的数据\n", + "成功获取 600929.SH 的数据\n", + "成功获取 600933.SH 的数据\n", + "成功获取 600935.SH 的数据\n", + "成功获取 600936.SH 的数据\n", + "成功获取 600938.SH 的数据\n", + "成功获取 600939.SH 的数据\n", + "成功获取 600941.SH 的数据\n", + "成功获取 600955.SH 的数据\n", + "成功获取 600956.SH 的数据\n", + "成功获取 600958.SH 的数据\n", + "成功获取 600959.SH 的数据\n", + "已调用300次API,等待 4.91 秒以满足速率限制...\n", + "成功获取 600960.SH 的数据\n", + "成功获取 600961.SH 的数据\n", + "成功获取 600962.SH 的数据\n", + "成功获取 600963.SH 的数据\n", + "成功获取 600965.SH 的数据\n", + "成功获取 600966.SH 的数据\n", + "成功获取 600967.SH 的数据\n", + "成功获取 600968.SH 的数据\n", + "成功获取 600969.SH 的数据\n", + "成功获取 600970.SH 的数据\n", + "成功获取 600971.SH 的数据\n", + "成功获取 600973.SH 的数据\n", + "成功获取 600975.SH 的数据\n", + "成功获取 600976.SH 的数据\n", + "成功获取 600977.SH 的数据\n", + "成功获取 600979.SH 的数据\n", + "成功获取 600980.SH 的数据\n", + "成功获取 600981.SH 的数据\n", + "成功获取 600982.SH 的数据\n", + "成功获取 600983.SH 的数据\n", + "成功获取 600984.SH 的数据\n", + "成功获取 600985.SH 的数据\n", + "成功获取 600986.SH 的数据\n", + "成功获取 600987.SH 的数据\n", + "成功获取 600988.SH 的数据\n", + "成功获取 600989.SH 的数据\n", + "成功获取 600990.SH 的数据\n", + "成功获取 600992.SH 的数据\n", + "成功获取 600993.SH 的数据\n", + "成功获取 600995.SH 的数据\n", + "成功获取 600996.SH 的数据\n", + "成功获取 600997.SH 的数据\n", + "成功获取 600998.SH 的数据\n", + "成功获取 600999.SH 的数据\n", + "成功获取 601000.SH 的数据\n", + "成功获取 601001.SH 的数据\n", + "成功获取 601002.SH 的数据\n", + "成功获取 601003.SH 的数据\n", + "成功获取 601005.SH 的数据\n", + "成功获取 601006.SH 的数据\n", + "成功获取 601007.SH 的数据\n", + "成功获取 601008.SH 的数据\n", + "成功获取 601009.SH 的数据\n", + "成功获取 601010.SH 的数据\n", + "成功获取 601011.SH 的数据\n", + "成功获取 601012.SH 的数据\n", + "成功获取 601015.SH 的数据\n", + "成功获取 601016.SH 的数据\n", + "成功获取 601018.SH 的数据\n", + "成功获取 601019.SH 的数据\n", + "成功获取 601020.SH 的数据\n", + "成功获取 601021.SH 的数据\n", + "成功获取 601022.SH 的数据\n", + "成功获取 601028.SH 的数据\n", + "成功获取 601033.SH 的数据\n", + "成功获取 601038.SH 的数据\n", + "成功获取 601058.SH 的数据\n", + "成功获取 601059.SH 的数据\n", + "成功获取 601061.SH 的数据\n", + "成功获取 601065.SH 的数据\n", + "成功获取 601066.SH 的数据\n", + "成功获取 601068.SH 的数据\n", + "成功获取 601069.SH 的数据\n", + "成功获取 601077.SH 的数据\n", + "成功获取 601083.SH 的数据\n", + "成功获取 601086.SH 的数据\n", + "成功获取 601088.SH 的数据\n", + "成功获取 601089.SH 的数据\n", + "成功获取 601096.SH 的数据\n", + "成功获取 601098.SH 的数据\n", + "成功获取 601099.SH 的数据\n", + "成功获取 601100.SH 的数据\n", + "成功获取 601101.SH 的数据\n", + "成功获取 601106.SH 的数据\n", + "成功获取 601107.SH 的数据\n", + "成功获取 601108.SH 的数据\n", + "成功获取 601111.SH 的数据\n", + "成功获取 601113.SH 的数据\n", + "成功获取 601116.SH 的数据\n", + "成功获取 601117.SH 的数据\n", + "成功获取 601118.SH 的数据\n", + "成功获取 601121.SH 的数据\n", + "成功获取 601126.SH 的数据\n", + "成功获取 601127.SH 的数据\n", + "成功获取 601128.SH 的数据\n", + "成功获取 601133.SH 的数据\n", + "成功获取 601136.SH 的数据\n", + "成功获取 601137.SH 的数据\n", + "成功获取 601138.SH 的数据\n", + "成功获取 601139.SH 的数据\n", + "成功获取 601155.SH 的数据\n", + "成功获取 601156.SH 的数据\n", + "成功获取 601158.SH 的数据\n", + "成功获取 601162.SH 的数据\n", + "成功获取 601163.SH 的数据\n", + "成功获取 601166.SH 的数据\n", + "成功获取 601168.SH 的数据\n", + "成功获取 601169.SH 的数据\n", + "成功获取 601177.SH 的数据\n", + "成功获取 601179.SH 的数据\n", + "成功获取 601186.SH 的数据\n", + "成功获取 601187.SH 的数据\n", + "成功获取 601188.SH 的数据\n", + "成功获取 601198.SH 的数据\n", + "成功获取 601199.SH 的数据\n", + "成功获取 601200.SH 的数据\n", + "成功获取 601208.SH 的数据\n", + "成功获取 601211.SH 的数据\n", + "成功获取 601212.SH 的数据\n", + "成功获取 601216.SH 的数据\n", + "成功获取 601218.SH 的数据\n", + "成功获取 601222.SH 的数据\n", + "成功获取 601225.SH 的数据\n", + "成功获取 601226.SH 的数据\n", + "成功获取 601228.SH 的数据\n", + "成功获取 601229.SH 的数据\n", + "成功获取 601231.SH 的数据\n", + "成功获取 601233.SH 的数据\n", + "成功获取 601236.SH 的数据\n", + "成功获取 601238.SH 的数据\n", + "成功获取 601279.SH 的数据\n", + "成功获取 601288.SH 的数据\n", + "成功获取 601298.SH 的数据\n", + "成功获取 601311.SH 的数据\n", + "成功获取 601318.SH 的数据\n", + "成功获取 601319.SH 的数据\n", + "成功获取 601326.SH 的数据\n", + "成功获取 601328.SH 的数据\n", + "成功获取 601330.SH 的数据\n", + "成功获取 601333.SH 的数据\n", + "成功获取 601336.SH 的数据\n", + "成功获取 601339.SH 的数据\n", + "成功获取 601360.SH 的数据\n", + "成功获取 601366.SH 的数据\n", + "成功获取 601368.SH 的数据\n", + "成功获取 601369.SH 的数据\n", + "成功获取 601375.SH 的数据\n", + "成功获取 601377.SH 的数据\n", + "成功获取 601388.SH 的数据\n", + "成功获取 601390.SH 的数据\n", + "成功获取 601398.SH 的数据\n", + "成功获取 601399.SH 的数据\n", + "成功获取 601456.SH 的数据\n", + "成功获取 601500.SH 的数据\n", + "成功获取 601512.SH 的数据\n", + "成功获取 601515.SH 的数据\n", + "成功获取 601518.SH 的数据\n", + "成功获取 601519.SH 的数据\n", + "成功获取 601528.SH 的数据\n", + "成功获取 601555.SH 的数据\n", + "成功获取 601566.SH 的数据\n", + "成功获取 601567.SH 的数据\n", + "成功获取 601568.SH 的数据\n", + "成功获取 601577.SH 的数据\n", + "成功获取 601579.SH 的数据\n", + "成功获取 601588.SH 的数据\n", + "成功获取 601595.SH 的数据\n", + "成功获取 601598.SH 的数据\n", + "成功获取 601599.SH 的数据\n", + "成功获取 601600.SH 的数据\n", + "成功获取 601601.SH 的数据\n", + "成功获取 601606.SH 的数据\n", + "成功获取 601607.SH 的数据\n", + "成功获取 601608.SH 的数据\n", + "成功获取 601609.SH 的数据\n", + "成功获取 601611.SH 的数据\n", + "成功获取 601615.SH 的数据\n", + "成功获取 601616.SH 的数据\n", + "成功获取 601618.SH 的数据\n", + "成功获取 601619.SH 的数据\n", + "成功获取 601628.SH 的数据\n", + "成功获取 601633.SH 的数据\n", + "成功获取 601636.SH 的数据\n", + "成功获取 601658.SH 的数据\n", + "成功获取 601665.SH 的数据\n", + "成功获取 601666.SH 的数据\n", + "成功获取 601668.SH 的数据\n", + "成功获取 601669.SH 的数据\n", + "成功获取 601677.SH 的数据\n", + "成功获取 601678.SH 的数据\n", + "成功获取 601686.SH 的数据\n", + "成功获取 601688.SH 的数据\n", + "成功获取 601689.SH 的数据\n", + "成功获取 601696.SH 的数据\n", + "成功获取 601698.SH 的数据\n", + "成功获取 601699.SH 的数据\n", + "成功获取 601700.SH 的数据\n", + "成功获取 601702.SH 的数据\n", + "成功获取 601717.SH 的数据\n", + "成功获取 601718.SH 的数据\n", + "成功获取 601727.SH 的数据\n", + "成功获取 601728.SH 的数据\n", + "成功获取 601766.SH 的数据\n", + "成功获取 601777.SH 的数据\n", + "成功获取 601778.SH 的数据\n", + "成功获取 601788.SH 的数据\n", + "成功获取 601789.SH 的数据\n", + "成功获取 601798.SH 的数据\n", + "成功获取 601799.SH 的数据\n", + "成功获取 601800.SH 的数据\n", + "成功获取 601801.SH 的数据\n", + "成功获取 601808.SH 的数据\n", + "成功获取 601811.SH 的数据\n", + "成功获取 601816.SH 的数据\n", + "成功获取 601818.SH 的数据\n", + "成功获取 601825.SH 的数据\n", + "成功获取 601827.SH 的数据\n", + "成功获取 601828.SH 的数据\n", + "成功获取 601838.SH 的数据\n", + "成功获取 601857.SH 的数据\n", + "成功获取 601858.SH 的数据\n", + "成功获取 601860.SH 的数据\n", + "成功获取 601865.SH 的数据\n", + "成功获取 601866.SH 的数据\n", + "成功获取 601868.SH 的数据\n", + "成功获取 601869.SH 的数据\n", + "成功获取 601872.SH 的数据\n", + "成功获取 601877.SH 的数据\n", + "成功获取 601878.SH 的数据\n", + "成功获取 601880.SH 的数据\n", + "成功获取 601881.SH 的数据\n", + "成功获取 601882.SH 的数据\n", + "成功获取 601886.SH 的数据\n", + "成功获取 601888.SH 的数据\n", + "成功获取 601890.SH 的数据\n", + "成功获取 601898.SH 的数据\n", + "成功获取 601899.SH 的数据\n", + "成功获取 601900.SH 的数据\n", + "成功获取 601901.SH 的数据\n", + "成功获取 601908.SH 的数据\n", + "成功获取 601916.SH 的数据\n", + "成功获取 601918.SH 的数据\n", + "成功获取 601919.SH 的数据\n", + "成功获取 601921.SH 的数据\n", + "成功获取 601928.SH 的数据\n", + "成功获取 601929.SH 的数据\n", + "成功获取 601933.SH 的数据\n", + "成功获取 601939.SH 的数据\n", + "成功获取 601949.SH 的数据\n", + "成功获取 601952.SH 的数据\n", + "成功获取 601956.SH 的数据\n", + "成功获取 601958.SH 的数据\n", + "成功获取 601963.SH 的数据\n", + "成功获取 601965.SH 的数据\n", + "成功获取 601966.SH 的数据\n", + "成功获取 601968.SH 的数据\n", + "成功获取 601969.SH 的数据\n", + "成功获取 601975.SH 的数据\n", + "成功获取 601985.SH 的数据\n", + "成功获取 601988.SH 的数据\n", + "成功获取 601989.SH 的数据\n", + "成功获取 601990.SH 的数据\n", + "成功获取 601991.SH 的数据\n", + "成功获取 601992.SH 的数据\n", + "成功获取 601995.SH 的数据\n", + "成功获取 601996.SH 的数据\n", + "成功获取 601997.SH 的数据\n", + "成功获取 601998.SH 的数据\n", + "成功获取 601999.SH 的数据\n", + "成功获取 603000.SH 的数据\n", + "成功获取 603001.SH 的数据\n", + "成功获取 603002.SH 的数据\n", + "成功获取 603003.SH 的数据\n", + "成功获取 603004.SH 的数据\n", + "成功获取 603005.SH 的数据\n", + "成功获取 603006.SH 的数据\n", + "成功获取 603007.SH 的数据\n", + "成功获取 603008.SH 的数据\n", + "成功获取 603009.SH 的数据\n", + "成功获取 603010.SH 的数据\n", + "成功获取 603011.SH 的数据\n", + "成功获取 603012.SH 的数据\n", + "成功获取 603013.SH 的数据\n", + "成功获取 603015.SH 的数据\n", + "成功获取 603016.SH 的数据\n", + "成功获取 603017.SH 的数据\n", + "成功获取 603018.SH 的数据\n", + "成功获取 603019.SH 的数据\n", + "成功获取 603020.SH 的数据\n", + "成功获取 603021.SH 的数据\n", + "成功获取 603022.SH 的数据\n", + "成功获取 603023.SH 的数据\n", + "成功获取 603025.SH 的数据\n", + "成功获取 603026.SH 的数据\n", + "成功获取 603027.SH 的数据\n", + "成功获取 603028.SH 的数据\n", + "成功获取 603029.SH 的数据\n", + "成功获取 603030.SH 的数据\n", + "成功获取 603031.SH 的数据\n", + "成功获取 603032.SH 的数据\n", + "成功获取 603033.SH 的数据\n", + "成功获取 603035.SH 的数据\n", + "成功获取 603036.SH 的数据\n", + "成功获取 603037.SH 的数据\n", + "成功获取 603038.SH 的数据\n", + "成功获取 603039.SH 的数据\n", + "成功获取 603040.SH 的数据\n", + "成功获取 603041.SH 的数据\n", + "成功获取 603042.SH 的数据\n", + "成功获取 603043.SH 的数据\n", + "已调用300次API,等待 9.43 秒以满足速率限制...\n", + "成功获取 603045.SH 的数据\n", + "成功获取 603048.SH 的数据\n", + "成功获取 603050.SH 的数据\n", + "成功获取 603051.SH 的数据\n", + "成功获取 603052.SH 的数据\n", + "成功获取 603053.SH 的数据\n", + "成功获取 603055.SH 的数据\n", + "成功获取 603056.SH 的数据\n", + "成功获取 603057.SH 的数据\n", + "成功获取 603058.SH 的数据\n", + "成功获取 603059.SH 的数据\n", + "成功获取 603060.SH 的数据\n", + "成功获取 603061.SH 的数据\n", + "成功获取 603062.SH 的数据\n", + "成功获取 603063.SH 的数据\n", + "成功获取 603065.SH 的数据\n", + "成功获取 603066.SH 的数据\n", + "成功获取 603067.SH 的数据\n", + "成功获取 603068.SH 的数据\n", + "成功获取 603069.SH 的数据\n", + "成功获取 603070.SH 的数据\n", + "成功获取 603071.SH 的数据\n", + "成功获取 603072.SH 的数据\n", + "成功获取 603073.SH 的数据\n", + "成功获取 603075.SH 的数据\n", + "成功获取 603076.SH 的数据\n", + "成功获取 603077.SH 的数据\n", + "成功获取 603078.SH 的数据\n", + "成功获取 603079.SH 的数据\n", + "成功获取 603080.SH 的数据\n", + "成功获取 603081.SH 的数据\n", + "成功获取 603082.SH 的数据\n", + "成功获取 603083.SH 的数据\n", + "成功获取 603085.SH 的数据\n", + "成功获取 603086.SH 的数据\n", + "成功获取 603087.SH 的数据\n", + "成功获取 603088.SH 的数据\n", + "成功获取 603089.SH 的数据\n", + "成功获取 603090.SH 的数据\n", + "成功获取 603091.SH 的数据\n", + "成功获取 603093.SH 的数据\n", + "成功获取 603095.SH 的数据\n", + "成功获取 603096.SH 的数据\n", + "成功获取 603097.SH 的数据\n", + "成功获取 603098.SH 的数据\n", + "成功获取 603099.SH 的数据\n", + "成功获取 603100.SH 的数据\n", + "成功获取 603101.SH 的数据\n", + "成功获取 603102.SH 的数据\n", + "成功获取 603103.SH 的数据\n", + "成功获取 603105.SH 的数据\n", + "成功获取 603106.SH 的数据\n", + "成功获取 603107.SH 的数据\n", + "成功获取 603108.SH 的数据\n", + "成功获取 603109.SH 的数据\n", + "成功获取 603110.SH 的数据\n", + "成功获取 603111.SH 的数据\n", + "成功获取 603112.SH 的数据\n", + "成功获取 603113.SH 的数据\n", + "成功获取 603115.SH 的数据\n", + "成功获取 603116.SH 的数据\n", + "成功获取 603117.SH 的数据\n", + "成功获取 603118.SH 的数据\n", + "成功获取 603119.SH 的数据\n", + "成功获取 603121.SH 的数据\n", + "成功获取 603122.SH 的数据\n", + "成功获取 603123.SH 的数据\n", + "成功获取 603125.SH 的数据\n", + "成功获取 603126.SH 的数据\n", + "成功获取 603127.SH 的数据\n", + "成功获取 603128.SH 的数据\n", + "成功获取 603129.SH 的数据\n", + "成功获取 603130.SH 的数据\n", + "成功获取 603131.SH 的数据\n", + "成功获取 603132.SH 的数据\n", + "成功获取 603135.SH 的数据\n", + "成功获取 603136.SH 的数据\n", + "成功获取 603137.SH 的数据\n", + "成功获取 603138.SH 的数据\n", + "成功获取 603139.SH 的数据\n", + "成功获取 603150.SH 的数据\n", + "成功获取 603151.SH 的数据\n", + "成功获取 603153.SH 的数据\n", + "成功获取 603155.SH 的数据\n", + "成功获取 603156.SH 的数据\n", + "成功获取 603158.SH 的数据\n", + "成功获取 603159.SH 的数据\n", + "成功获取 603160.SH 的数据\n", + "成功获取 603161.SH 的数据\n", + "成功获取 603162.SH 的数据\n", + "成功获取 603163.SH 的数据\n", + "成功获取 603165.SH 的数据\n", + "成功获取 603166.SH 的数据\n", + "成功获取 603167.SH 的数据\n", + "成功获取 603168.SH 的数据\n", + "成功获取 603169.SH 的数据\n", + "成功获取 603170.SH 的数据\n", + "成功获取 603171.SH 的数据\n", + "成功获取 603172.SH 的数据\n", + "成功获取 603173.SH 的数据\n", + "成功获取 603176.SH 的数据\n", + "成功获取 603177.SH 的数据\n", + "成功获取 603178.SH 的数据\n", + "成功获取 603179.SH 的数据\n", + "成功获取 603180.SH 的数据\n", + "成功获取 603181.SH 的数据\n", + "成功获取 603182.SH 的数据\n", + "成功获取 603183.SH 的数据\n", + "成功获取 603185.SH 的数据\n", + "成功获取 603186.SH 的数据\n", + "成功获取 603187.SH 的数据\n", + "成功获取 603188.SH 的数据\n", + "成功获取 603189.SH 的数据\n", + "成功获取 603190.SH 的数据\n", + "成功获取 603191.SH 的数据\n", + "成功获取 603192.SH 的数据\n", + "成功获取 603193.SH 的数据\n", + "成功获取 603194.SH 的数据\n", + "成功获取 603195.SH 的数据\n", + "成功获取 603196.SH 的数据\n", + "成功获取 603197.SH 的数据\n", + "成功获取 603198.SH 的数据\n", + "成功获取 603199.SH 的数据\n", + "成功获取 603200.SH 的数据\n", + "成功获取 603201.SH 的数据\n", + "成功获取 603203.SH 的数据\n", + "成功获取 603205.SH 的数据\n", + "成功获取 603206.SH 的数据\n", + "成功获取 603207.SH 的数据\n", + "成功获取 603208.SH 的数据\n", + "成功获取 603209.SH 的数据\n", + "成功获取 603211.SH 的数据\n", + "成功获取 603212.SH 的数据\n", + "成功获取 603213.SH 的数据\n", + "成功获取 603214.SH 的数据\n", + "成功获取 603215.SH 的数据\n", + "成功获取 603216.SH 的数据\n", + "成功获取 603217.SH 的数据\n", + "成功获取 603218.SH 的数据\n", + "成功获取 603219.SH 的数据\n", + "成功获取 603220.SH 的数据\n", + "成功获取 603221.SH 的数据\n", + "成功获取 603222.SH 的数据\n", + "成功获取 603223.SH 的数据\n", + "成功获取 603225.SH 的数据\n", + "成功获取 603226.SH 的数据\n", + "成功获取 603227.SH 的数据\n", + "成功获取 603228.SH 的数据\n", + "成功获取 603229.SH 的数据\n", + "成功获取 603230.SH 的数据\n", + "成功获取 603231.SH 的数据\n", + "成功获取 603232.SH 的数据\n", + "成功获取 603233.SH 的数据\n", + "成功获取 603235.SH 的数据\n", + "成功获取 603236.SH 的数据\n", + "成功获取 603237.SH 的数据\n", + "成功获取 603238.SH 的数据\n", + "成功获取 603239.SH 的数据\n", + "成功获取 603255.SH 的数据\n", + "成功获取 603256.SH 的数据\n", + "成功获取 603258.SH 的数据\n", + "成功获取 603259.SH 的数据\n", + "成功获取 603260.SH 的数据\n", + "成功获取 603261.SH 的数据\n", + "成功获取 603266.SH 的数据\n", + "成功获取 603267.SH 的数据\n", + "成功获取 603268.SH 的数据\n", + "成功获取 603269.SH 的数据\n", + "成功获取 603270.SH 的数据\n", + "成功获取 603272.SH 的数据\n", + "成功获取 603273.SH 的数据\n", + "成功获取 603275.SH 的数据\n", + "成功获取 603276.SH 的数据\n", + "成功获取 603277.SH 的数据\n", + "成功获取 603278.SH 的数据\n", + "成功获取 603279.SH 的数据\n", + "成功获取 603280.SH 的数据\n", + "成功获取 603281.SH 的数据\n", + "成功获取 603282.SH 的数据\n", + "成功获取 603283.SH 的数据\n", + "成功获取 603285.SH 的数据\n", + "成功获取 603286.SH 的数据\n", + "成功获取 603288.SH 的数据\n", + "成功获取 603289.SH 的数据\n", + "成功获取 603290.SH 的数据\n", + "成功获取 603291.SH 的数据\n", + "成功获取 603296.SH 的数据\n", + "成功获取 603297.SH 的数据\n", + "成功获取 603298.SH 的数据\n", + "成功获取 603299.SH 的数据\n", + "成功获取 603300.SH 的数据\n", + "成功获取 603301.SH 的数据\n", + "成功获取 603303.SH 的数据\n", + "成功获取 603305.SH 的数据\n", + "成功获取 603306.SH 的数据\n", + "成功获取 603307.SH 的数据\n", + "成功获取 603308.SH 的数据\n", + "成功获取 603309.SH 的数据\n", + "成功获取 603310.SH 的数据\n", + "成功获取 603311.SH 的数据\n", + "成功获取 603312.SH 的数据\n", + "成功获取 603313.SH 的数据\n", + "成功获取 603315.SH 的数据\n", + "成功获取 603316.SH 的数据\n", + "成功获取 603317.SH 的数据\n", + "成功获取 603318.SH 的数据\n", + "成功获取 603319.SH 的数据\n", + "成功获取 603320.SH 的数据\n", + "成功获取 603321.SH 的数据\n", + "成功获取 603322.SH 的数据\n", + "成功获取 603323.SH 的数据\n", + "成功获取 603324.SH 的数据\n", + "成功获取 603325.SH 的数据\n", + "成功获取 603326.SH 的数据\n", + "成功获取 603327.SH 的数据\n", + "成功获取 603328.SH 的数据\n", + "成功获取 603329.SH 的数据\n", + "成功获取 603330.SH 的数据\n", + "成功获取 603331.SH 的数据\n", + "成功获取 603332.SH 的数据\n", + "成功获取 603333.SH 的数据\n", + "成功获取 603335.SH 的数据\n", + "成功获取 603336.SH 的数据\n", + "成功获取 603337.SH 的数据\n", + "成功获取 603338.SH 的数据\n", + "成功获取 603339.SH 的数据\n", + "成功获取 603341.SH 的数据\n", + "成功获取 603344.SH 的数据\n", + "成功获取 603345.SH 的数据\n", + "成功获取 603348.SH 的数据\n", + "成功获取 603350.SH 的数据\n", + "成功获取 603351.SH 的数据\n", + "成功获取 603353.SH 的数据\n", + "成功获取 603355.SH 的数据\n", + "成功获取 603356.SH 的数据\n", + "成功获取 603357.SH 的数据\n", + "成功获取 603358.SH 的数据\n", + "成功获取 603359.SH 的数据\n", + "成功获取 603360.SH 的数据\n", + "成功获取 603363.SH 的数据\n", + "成功获取 603365.SH 的数据\n", + "成功获取 603366.SH 的数据\n", + "成功获取 603367.SH 的数据\n", + "成功获取 603368.SH 的数据\n", + "成功获取 603369.SH 的数据\n", + "成功获取 603373.SH 的数据\n", + "成功获取 603375.SH 的数据\n", + "成功获取 603377.SH 的数据\n", + "成功获取 603378.SH 的数据\n", + "成功获取 603379.SH 的数据\n", + "成功获取 603380.SH 的数据\n", + "成功获取 603381.SH 的数据\n", + "成功获取 603383.SH 的数据\n", + "成功获取 603385.SH 的数据\n", + "成功获取 603386.SH 的数据\n", + "成功获取 603387.SH 的数据\n", + "成功获取 603388.SH 的数据\n", + "成功获取 603389.SH 的数据\n", + "成功获取 603390.SH 的数据\n", + "成功获取 603391.SH 的数据\n", + "成功获取 603392.SH 的数据\n", + "成功获取 603393.SH 的数据\n", + "成功获取 603395.SH 的数据\n", + "成功获取 603396.SH 的数据\n", + "成功获取 603398.SH 的数据\n", + "成功获取 603399.SH 的数据\n", + "成功获取 603408.SH 的数据\n", + "成功获取 603416.SH 的数据\n", + "成功获取 603421.SH 的数据\n", + "成功获取 603429.SH 的数据\n", + "成功获取 603439.SH 的数据\n", + "成功获取 603444.SH 的数据\n", + "成功获取 603456.SH 的数据\n", + "成功获取 603458.SH 的数据\n", + "成功获取 603466.SH 的数据\n", + "成功获取 603477.SH 的数据\n", + "成功获取 603486.SH 的数据\n", + "成功获取 603488.SH 的数据\n", + "成功获取 603489.SH 的数据\n", + "成功获取 603496.SH 的数据\n", + "成功获取 603499.SH 的数据\n", + "成功获取 603500.SH 的数据\n", + "成功获取 603501.SH 的数据\n", + "成功获取 603505.SH 的数据\n", + "成功获取 603506.SH 的数据\n", + "成功获取 603507.SH 的数据\n", + "成功获取 603508.SH 的数据\n", + "成功获取 603511.SH 的数据\n", + "成功获取 603515.SH 的数据\n", + "成功获取 603516.SH 的数据\n", + "成功获取 603517.SH 的数据\n", + "成功获取 603518.SH 的数据\n", + "成功获取 603519.SH 的数据\n", + "成功获取 603520.SH 的数据\n", + "成功获取 603527.SH 的数据\n", + "成功获取 603528.SH 的数据\n", + "成功获取 603529.SH 的数据\n", + "成功获取 603530.SH 的数据\n", + "成功获取 603533.SH 的数据\n", + "成功获取 603535.SH 的数据\n", + "已调用300次API,等待 15.20 秒以满足速率限制...\n", + "成功获取 603536.SH 的数据\n", + "成功获取 603538.SH 的数据\n", + "成功获取 603551.SH 的数据\n", + "成功获取 603556.SH 的数据\n", + "成功获取 603557.SH 的数据\n", + "成功获取 603558.SH 的数据\n", + "成功获取 603559.SH 的数据\n", + "成功获取 603565.SH 的数据\n", + "成功获取 603566.SH 的数据\n", + "成功获取 603567.SH 的数据\n", + "成功获取 603568.SH 的数据\n", + "成功获取 603569.SH 的数据\n", + "成功获取 603577.SH 的数据\n", + "成功获取 603578.SH 的数据\n", + "成功获取 603579.SH 的数据\n", + "成功获取 603580.SH 的数据\n", + "成功获取 603583.SH 的数据\n", + "成功获取 603585.SH 的数据\n", + "成功获取 603586.SH 的数据\n", + "成功获取 603587.SH 的数据\n", + "成功获取 603588.SH 的数据\n", + "成功获取 603589.SH 的数据\n", + "成功获取 603590.SH 的数据\n", + "成功获取 603595.SH 的数据\n", + "成功获取 603596.SH 的数据\n", + "成功获取 603598.SH 的数据\n", + "成功获取 603599.SH 的数据\n", + "成功获取 603600.SH 的数据\n", + "成功获取 603601.SH 的数据\n", + "成功获取 603602.SH 的数据\n", + "成功获取 603605.SH 的数据\n", + "成功获取 603606.SH 的数据\n", + "成功获取 603607.SH 的数据\n", + "成功获取 603608.SH 的数据\n", + "成功获取 603609.SH 的数据\n", + "成功获取 603610.SH 的数据\n", + "成功获取 603611.SH 的数据\n", + "成功获取 603612.SH 的数据\n", + "成功获取 603613.SH 的数据\n", + "成功获取 603615.SH 的数据\n", + "成功获取 603616.SH 的数据\n", + "成功获取 603617.SH 的数据\n", + "成功获取 603618.SH 的数据\n", + "成功获取 603619.SH 的数据\n", + "成功获取 603626.SH 的数据\n", + "成功获取 603628.SH 的数据\n", + "成功获取 603629.SH 的数据\n", + "成功获取 603630.SH 的数据\n", + "成功获取 603633.SH 的数据\n", + "成功获取 603636.SH 的数据\n", + "成功获取 603637.SH 的数据\n", + "成功获取 603638.SH 的数据\n", + "成功获取 603639.SH 的数据\n", + "成功获取 603648.SH 的数据\n", + "成功获取 603650.SH 的数据\n", + "成功获取 603655.SH 的数据\n", + "成功获取 603656.SH 的数据\n", + "成功获取 603657.SH 的数据\n", + "成功获取 603658.SH 的数据\n", + "成功获取 603659.SH 的数据\n", + "成功获取 603660.SH 的数据\n", + "成功获取 603661.SH 的数据\n", + "成功获取 603662.SH 的数据\n", + "成功获取 603663.SH 的数据\n", + "成功获取 603665.SH 的数据\n", + "成功获取 603666.SH 的数据\n", + "成功获取 603667.SH 的数据\n", + "成功获取 603668.SH 的数据\n", + "成功获取 603669.SH 的数据\n", + "成功获取 603676.SH 的数据\n", + "成功获取 603677.SH 的数据\n", + "成功获取 603678.SH 的数据\n", + "成功获取 603679.SH 的数据\n", + "成功获取 603680.SH 的数据\n", + "成功获取 603681.SH 的数据\n", + "成功获取 603682.SH 的数据\n", + "成功获取 603683.SH 的数据\n", + "成功获取 603685.SH 的数据\n", + "成功获取 603686.SH 的数据\n", + "成功获取 603687.SH 的数据\n", + "成功获取 603688.SH 的数据\n", + "成功获取 603689.SH 的数据\n", + "成功获取 603690.SH 的数据\n", + "成功获取 603693.SH 的数据\n", + "成功获取 603696.SH 的数据\n", + "成功获取 603697.SH 的数据\n", + "成功获取 603698.SH 的数据\n", + "成功获取 603699.SH 的数据\n", + "成功获取 603700.SH 的数据\n", + "成功获取 603701.SH 的数据\n", + "成功获取 603703.SH 的数据\n", + "成功获取 603706.SH 的数据\n", + "成功获取 603707.SH 的数据\n", + "成功获取 603708.SH 的数据\n", + "成功获取 603709.SH 的数据\n", + "成功获取 603711.SH 的数据\n", + "成功获取 603712.SH 的数据\n", + "成功获取 603713.SH 的数据\n", + "成功获取 603716.SH 的数据\n", + "成功获取 603717.SH 的数据\n", + "成功获取 603718.SH 的数据\n", + "成功获取 603719.SH 的数据\n", + "成功获取 603721.SH 的数据\n", + "成功获取 603722.SH 的数据\n", + "成功获取 603725.SH 的数据\n", + "成功获取 603726.SH 的数据\n", + "成功获取 603727.SH 的数据\n", + "成功获取 603728.SH 的数据\n", + "成功获取 603729.SH 的数据\n", + "成功获取 603730.SH 的数据\n", + "成功获取 603733.SH 的数据\n", + "成功获取 603737.SH 的数据\n", + "成功获取 603738.SH 的数据\n", + "成功获取 603739.SH 的数据\n", + "成功获取 603755.SH 的数据\n", + "成功获取 603757.SH 的数据\n", + "成功获取 603758.SH 的数据\n", + "成功获取 603759.SH 的数据\n", + "成功获取 603766.SH 的数据\n", + "成功获取 603767.SH 的数据\n", + "成功获取 603768.SH 的数据\n", + "成功获取 603773.SH 的数据\n", + "成功获取 603776.SH 的数据\n", + "成功获取 603777.SH 的数据\n", + "成功获取 603778.SH 的数据\n", + "成功获取 603779.SH 的数据\n", + "成功获取 603786.SH 的数据\n", + "成功获取 603787.SH 的数据\n", + "成功获取 603788.SH 的数据\n", + "成功获取 603789.SH 的数据\n", + "成功获取 603790.SH 的数据\n", + "成功获取 603797.SH 的数据\n", + "成功获取 603798.SH 的数据\n", + "成功获取 603799.SH 的数据\n", + "成功获取 603800.SH 的数据\n", + "成功获取 603801.SH 的数据\n", + "成功获取 603803.SH 的数据\n", + "成功获取 603806.SH 的数据\n", + "成功获取 603808.SH 的数据\n", + "成功获取 603809.SH 的数据\n", + "成功获取 603810.SH 的数据\n", + "成功获取 603811.SH 的数据\n", + "成功获取 603813.SH 的数据\n", + "成功获取 603815.SH 的数据\n", + "成功获取 603816.SH 的数据\n", + "成功获取 603817.SH 的数据\n", + "成功获取 603818.SH 的数据\n", + "成功获取 603819.SH 的数据\n", + "成功获取 603822.SH 的数据\n", + "成功获取 603823.SH 的数据\n", + "成功获取 603825.SH 的数据\n", + "成功获取 603826.SH 的数据\n", + "成功获取 603828.SH 的数据\n", + "成功获取 603829.SH 的数据\n", + "成功获取 603833.SH 的数据\n", + "成功获取 603836.SH 的数据\n", + "成功获取 603838.SH 的数据\n", + "成功获取 603839.SH 的数据\n", + "成功获取 603843.SH 的数据\n", + "成功获取 603848.SH 的数据\n", + "成功获取 603855.SH 的数据\n", + "成功获取 603856.SH 的数据\n", + "成功获取 603858.SH 的数据\n", + "成功获取 603859.SH 的数据\n", + "成功获取 603860.SH 的数据\n", + "成功获取 603861.SH 的数据\n", + "成功获取 603863.SH 的数据\n", + "成功获取 603866.SH 的数据\n", + "成功获取 603867.SH 的数据\n", + "成功获取 603868.SH 的数据\n", + "成功获取 603869.SH 的数据\n", + "成功获取 603871.SH 的数据\n", + "成功获取 603876.SH 的数据\n", + "成功获取 603877.SH 的数据\n", + "成功获取 603878.SH 的数据\n", + "成功获取 603879.SH 的数据\n", + "成功获取 603880.SH 的数据\n", + "成功获取 603881.SH 的数据\n", + "成功获取 603882.SH 的数据\n", + "成功获取 603883.SH 的数据\n", + "成功获取 603885.SH 的数据\n", + "成功获取 603886.SH 的数据\n", + "成功获取 603887.SH 的数据\n", + "成功获取 603888.SH 的数据\n", + "成功获取 603889.SH 的数据\n", + "成功获取 603890.SH 的数据\n", + "成功获取 603893.SH 的数据\n", + "成功获取 603895.SH 的数据\n", + "成功获取 603896.SH 的数据\n", + "成功获取 603897.SH 的数据\n", + "成功获取 603898.SH 的数据\n", + "成功获取 603899.SH 的数据\n", + "成功获取 603900.SH 的数据\n", + "成功获取 603901.SH 的数据\n", + "成功获取 603903.SH 的数据\n", + "成功获取 603906.SH 的数据\n", + "成功获取 603908.SH 的数据\n", + "成功获取 603909.SH 的数据\n", + "成功获取 603912.SH 的数据\n", + "成功获取 603915.SH 的数据\n", + "成功获取 603916.SH 的数据\n", + "成功获取 603917.SH 的数据\n", + "成功获取 603918.SH 的数据\n", + "成功获取 603919.SH 的数据\n", + "成功获取 603920.SH 的数据\n", + "成功获取 603922.SH 的数据\n", + "成功获取 603926.SH 的数据\n", + "成功获取 603927.SH 的数据\n", + "成功获取 603928.SH 的数据\n", + "成功获取 603929.SH 的数据\n", + "成功获取 603931.SH 的数据\n", + "成功获取 603933.SH 的数据\n", + "成功获取 603936.SH 的数据\n", + "成功获取 603937.SH 的数据\n", + "成功获取 603938.SH 的数据\n", + "成功获取 603939.SH 的数据\n", + "成功获取 603948.SH 的数据\n", + "成功获取 603949.SH 的数据\n", + "成功获取 603950.SH 的数据\n", + "成功获取 603955.SH 的数据\n", + "成功获取 603956.SH 的数据\n", + "成功获取 603958.SH 的数据\n", + "成功获取 603959.SH 的数据\n", + "成功获取 603960.SH 的数据\n", + "成功获取 603963.SH 的数据\n", + "成功获取 603966.SH 的数据\n", + "成功获取 603967.SH 的数据\n", + "成功获取 603968.SH 的数据\n", + "成功获取 603969.SH 的数据\n", + "成功获取 603970.SH 的数据\n", + "成功获取 603976.SH 的数据\n", + "成功获取 603977.SH 的数据\n", + "成功获取 603978.SH 的数据\n", + "成功获取 603979.SH 的数据\n", + "成功获取 603980.SH 的数据\n", + "成功获取 603982.SH 的数据\n", + "成功获取 603983.SH 的数据\n", + "成功获取 603985.SH 的数据\n", + "成功获取 603986.SH 的数据\n", + "成功获取 603987.SH 的数据\n", + "成功获取 603988.SH 的数据\n", + "成功获取 603989.SH 的数据\n", + "成功获取 603990.SH 的数据\n", + "成功获取 603991.SH 的数据\n", + "成功获取 603992.SH 的数据\n", + "成功获取 603993.SH 的数据\n", + "成功获取 603995.SH 的数据\n", + "成功获取 603997.SH 的数据\n", + "成功获取 603998.SH 的数据\n", + "成功获取 603999.SH 的数据\n", + "成功获取 605001.SH 的数据\n", + "成功获取 605003.SH 的数据\n", + "成功获取 605005.SH 的数据\n", + "成功获取 605006.SH 的数据\n", + "成功获取 605007.SH 的数据\n", + "成功获取 605008.SH 的数据\n", + "成功获取 605009.SH 的数据\n", + "成功获取 605011.SH 的数据\n", + "成功获取 605016.SH 的数据\n", + "成功获取 605018.SH 的数据\n", + "成功获取 605020.SH 的数据\n", + "成功获取 605028.SH 的数据\n", + "成功获取 605033.SH 的数据\n", + "成功获取 605050.SH 的数据\n", + "成功获取 605055.SH 的数据\n", + "成功获取 605056.SH 的数据\n", + "成功获取 605058.SH 的数据\n", + "成功获取 605060.SH 的数据\n", + "成功获取 605066.SH 的数据\n", + "成功获取 605068.SH 的数据\n", + "成功获取 605069.SH 的数据\n", + "成功获取 605077.SH 的数据\n", + "成功获取 605080.SH 的数据\n", + "成功获取 605081.SH 的数据\n", + "成功获取 605086.SH 的数据\n", + "成功获取 605088.SH 的数据\n", + "成功获取 605089.SH 的数据\n", + "成功获取 605090.SH 的数据\n", + "成功获取 605098.SH 的数据\n", + "成功获取 605099.SH 的数据\n", + "成功获取 605100.SH 的数据\n", + "成功获取 605108.SH 的数据\n", + "成功获取 605111.SH 的数据\n", + "成功获取 605116.SH 的数据\n", + "成功获取 605117.SH 的数据\n", + "成功获取 605118.SH 的数据\n", + "成功获取 605122.SH 的数据\n", + "成功获取 605123.SH 的数据\n", + "成功获取 605128.SH 的数据\n", + "成功获取 605133.SH 的数据\n", + "成功获取 605136.SH 的数据\n", + "成功获取 605138.SH 的数据\n", + "成功获取 605151.SH 的数据\n", + "成功获取 605155.SH 的数据\n", + "成功获取 605158.SH 的数据\n", + "成功获取 605162.SH 的数据\n", + "成功获取 605166.SH 的数据\n", + "成功获取 605167.SH 的数据\n", + "成功获取 605168.SH 的数据\n", + "成功获取 605169.SH 的数据\n", + "已调用300次API,等待 16.68 秒以满足速率限制...\n", + "成功获取 605177.SH 的数据\n", + "成功获取 605178.SH 的数据\n", + "成功获取 605179.SH 的数据\n", + "成功获取 605180.SH 的数据\n", + "成功获取 605183.SH 的数据\n", + "成功获取 605186.SH 的数据\n", + "成功获取 605188.SH 的数据\n", + "成功获取 605189.SH 的数据\n", + "成功获取 605196.SH 的数据\n", + "成功获取 605198.SH 的数据\n", + "成功获取 605199.SH 的数据\n", + "成功获取 605208.SH 的数据\n", + "成功获取 605218.SH 的数据\n", + "成功获取 605222.SH 的数据\n", + "成功获取 605228.SH 的数据\n", + "成功获取 605255.SH 的数据\n", + "成功获取 605258.SH 的数据\n", + "成功获取 605259.SH 的数据\n", + "成功获取 605266.SH 的数据\n", + "成功获取 605268.SH 的数据\n", + "成功获取 605277.SH 的数据\n", + "成功获取 605286.SH 的数据\n", + "成功获取 605287.SH 的数据\n", + "成功获取 605288.SH 的数据\n", + "成功获取 605289.SH 的数据\n", + "成功获取 605296.SH 的数据\n", + "成功获取 605298.SH 的数据\n", + "成功获取 605299.SH 的数据\n", + "成功获取 605300.SH 的数据\n", + "成功获取 605303.SH 的数据\n", + "成功获取 605305.SH 的数据\n", + "成功获取 605318.SH 的数据\n", + "成功获取 605319.SH 的数据\n", + "成功获取 605333.SH 的数据\n", + "成功获取 605336.SH 的数据\n", + "成功获取 605337.SH 的数据\n", + "成功获取 605338.SH 的数据\n", + "成功获取 605339.SH 的数据\n", + "成功获取 605358.SH 的数据\n", + "成功获取 605365.SH 的数据\n", + "成功获取 605366.SH 的数据\n", + "成功获取 605368.SH 的数据\n", + "成功获取 605369.SH 的数据\n", + "成功获取 605376.SH 的数据\n", + "成功获取 605377.SH 的数据\n", + "成功获取 605378.SH 的数据\n", + "成功获取 605388.SH 的数据\n", + "成功获取 605389.SH 的数据\n", + "成功获取 605398.SH 的数据\n", + "成功获取 605399.SH 的数据\n", + "成功获取 605488.SH 的数据\n", + "成功获取 605499.SH 的数据\n", + "成功获取 605500.SH 的数据\n", + "成功获取 605507.SH 的数据\n", + "成功获取 605555.SH 的数据\n", + "成功获取 605566.SH 的数据\n", + "成功获取 605567.SH 的数据\n", + "成功获取 605577.SH 的数据\n", + "成功获取 605580.SH 的数据\n", + "成功获取 605588.SH 的数据\n", + "成功获取 605589.SH 的数据\n", + "成功获取 605598.SH 的数据\n", + "成功获取 605599.SH 的数据\n", + "成功获取 688001.SH 的数据\n", + "成功获取 688002.SH 的数据\n", + "成功获取 688003.SH 的数据\n", + "成功获取 688004.SH 的数据\n", + "成功获取 688005.SH 的数据\n", + "成功获取 688006.SH 的数据\n", + "成功获取 688007.SH 的数据\n", + "成功获取 688008.SH 的数据\n", + "成功获取 688009.SH 的数据\n", + "成功获取 688010.SH 的数据\n", + "成功获取 688011.SH 的数据\n", + "成功获取 688012.SH 的数据\n", + "成功获取 688013.SH 的数据\n", + "成功获取 688015.SH 的数据\n", + "成功获取 688016.SH 的数据\n", + "成功获取 688017.SH 的数据\n", + "成功获取 688018.SH 的数据\n", + "成功获取 688019.SH 的数据\n", + "成功获取 688020.SH 的数据\n", + "成功获取 688021.SH 的数据\n", + "成功获取 688022.SH 的数据\n", + "成功获取 688023.SH 的数据\n", + "成功获取 688025.SH 的数据\n", + "成功获取 688026.SH 的数据\n", + "成功获取 688027.SH 的数据\n", + "成功获取 688028.SH 的数据\n", + "成功获取 688029.SH 的数据\n", + "成功获取 688030.SH 的数据\n", + "成功获取 688031.SH 的数据\n", + "成功获取 688032.SH 的数据\n", + "成功获取 688033.SH 的数据\n", + "成功获取 688035.SH 的数据\n", + "成功获取 688036.SH 的数据\n", + "成功获取 688037.SH 的数据\n", + "成功获取 688038.SH 的数据\n", + "成功获取 688039.SH 的数据\n", + "成功获取 688041.SH 的数据\n", + "成功获取 688045.SH 的数据\n", + "成功获取 688046.SH 的数据\n", + "成功获取 688047.SH 的数据\n", + "成功获取 688048.SH 的数据\n", + "成功获取 688049.SH 的数据\n", + "成功获取 688050.SH 的数据\n", + "成功获取 688051.SH 的数据\n", + "成功获取 688052.SH 的数据\n", + "成功获取 688053.SH 的数据\n", + "成功获取 688055.SH 的数据\n", + "成功获取 688056.SH 的数据\n", + "成功获取 688057.SH 的数据\n", + "成功获取 688058.SH 的数据\n", + "成功获取 688059.SH 的数据\n", + "成功获取 688060.SH 的数据\n", + "成功获取 688061.SH 的数据\n", + "成功获取 688062.SH 的数据\n", + "成功获取 688063.SH 的数据\n", + "成功获取 688065.SH 的数据\n", + "成功获取 688066.SH 的数据\n", + "成功获取 688067.SH 的数据\n", + "成功获取 688068.SH 的数据\n", + "成功获取 688069.SH 的数据\n", + "成功获取 688070.SH 的数据\n", + "成功获取 688071.SH 的数据\n", + "成功获取 688072.SH 的数据\n", + "成功获取 688073.SH 的数据\n", + "成功获取 688075.SH 的数据\n", + "成功获取 688076.SH 的数据\n", + "成功获取 688077.SH 的数据\n", + "成功获取 688078.SH 的数据\n", + "成功获取 688079.SH 的数据\n", + "成功获取 688080.SH 的数据\n", + "成功获取 688081.SH 的数据\n", + "成功获取 688082.SH 的数据\n", + "成功获取 688083.SH 的数据\n", + "成功获取 688084.SH 的数据\n", + "成功获取 688085.SH 的数据\n", + "成功获取 688087.SH 的数据\n", + "成功获取 688088.SH 的数据\n", + "成功获取 688089.SH 的数据\n", + "成功获取 688090.SH 的数据\n", + "成功获取 688091.SH 的数据\n", + "成功获取 688092.SH 的数据\n", + "成功获取 688093.SH 的数据\n", + "成功获取 688095.SH 的数据\n", + "成功获取 688096.SH 的数据\n", + "成功获取 688097.SH 的数据\n", + "成功获取 688098.SH 的数据\n", + "成功获取 688099.SH 的数据\n", + "成功获取 688100.SH 的数据\n", + "成功获取 688101.SH 的数据\n", + "成功获取 688102.SH 的数据\n", + "成功获取 688103.SH 的数据\n", + "成功获取 688105.SH 的数据\n", + "成功获取 688106.SH 的数据\n", + "成功获取 688107.SH 的数据\n", + "成功获取 688108.SH 的数据\n", + "成功获取 688109.SH 的数据\n", + "成功获取 688110.SH 的数据\n", + "成功获取 688111.SH 的数据\n", + "成功获取 688112.SH 的数据\n", + "成功获取 688113.SH 的数据\n", + "成功获取 688114.SH 的数据\n", + "成功获取 688115.SH 的数据\n", + "成功获取 688116.SH 的数据\n", + "成功获取 688117.SH 的数据\n", + "成功获取 688118.SH 的数据\n", + "成功获取 688119.SH 的数据\n", + "成功获取 688120.SH 的数据\n", + "成功获取 688121.SH 的数据\n", + "成功获取 688122.SH 的数据\n", + "成功获取 688123.SH 的数据\n", + "成功获取 688125.SH 的数据\n", + "成功获取 688126.SH 的数据\n", + "成功获取 688127.SH 的数据\n", + "成功获取 688128.SH 的数据\n", + "成功获取 688129.SH 的数据\n", + "成功获取 688130.SH 的数据\n", + "成功获取 688131.SH 的数据\n", + "成功获取 688132.SH 的数据\n", + "成功获取 688133.SH 的数据\n", + "成功获取 688135.SH 的数据\n", + "成功获取 688136.SH 的数据\n", + "成功获取 688137.SH 的数据\n", + "成功获取 688138.SH 的数据\n", + "成功获取 688139.SH 的数据\n", + "成功获取 688141.SH 的数据\n", + "成功获取 688143.SH 的数据\n", + "成功获取 688146.SH 的数据\n", + "成功获取 688147.SH 的数据\n", + "成功获取 688148.SH 的数据\n", + "成功获取 688150.SH 的数据\n", + "成功获取 688151.SH 的数据\n", + "成功获取 688152.SH 的数据\n", + "成功获取 688153.SH 的数据\n", + "成功获取 688155.SH 的数据\n", + "成功获取 688156.SH 的数据\n", + "成功获取 688157.SH 的数据\n", + "成功获取 688158.SH 的数据\n", + "成功获取 688159.SH 的数据\n", + "成功获取 688160.SH 的数据\n", + "成功获取 688161.SH 的数据\n", + "成功获取 688162.SH 的数据\n", + "成功获取 688163.SH 的数据\n", + "成功获取 688165.SH 的数据\n", + "成功获取 688166.SH 的数据\n", + "成功获取 688167.SH 的数据\n", + "成功获取 688168.SH 的数据\n", + "成功获取 688169.SH 的数据\n", + "成功获取 688170.SH 的数据\n", + "成功获取 688171.SH 的数据\n", + "成功获取 688172.SH 的数据\n", + "成功获取 688173.SH 的数据\n", + "成功获取 688175.SH 的数据\n", + "成功获取 688176.SH 的数据\n", + "成功获取 688177.SH 的数据\n", + "成功获取 688178.SH 的数据\n", + "成功获取 688179.SH 的数据\n", + "成功获取 688180.SH 的数据\n", + "成功获取 688181.SH 的数据\n", + "成功获取 688182.SH 的数据\n", + "成功获取 688183.SH 的数据\n", + "成功获取 688184.SH 的数据\n", + "成功获取 688185.SH 的数据\n", + "成功获取 688186.SH 的数据\n", + "成功获取 688187.SH 的数据\n", + "成功获取 688188.SH 的数据\n", + "成功获取 688189.SH 的数据\n", + "成功获取 688190.SH 的数据\n", + "成功获取 688191.SH 的数据\n", + "成功获取 688192.SH 的数据\n", + "成功获取 688193.SH 的数据\n", + "成功获取 688195.SH 的数据\n", + "成功获取 688196.SH 的数据\n", + "成功获取 688197.SH 的数据\n", + "成功获取 688198.SH 的数据\n", + "成功获取 688199.SH 的数据\n", + "成功获取 688200.SH 的数据\n", + "成功获取 688201.SH 的数据\n", + "成功获取 688202.SH 的数据\n", + "成功获取 688203.SH 的数据\n", + "成功获取 688205.SH 的数据\n", + "成功获取 688206.SH 的数据\n", + "成功获取 688207.SH 的数据\n", + "成功获取 688208.SH 的数据\n", + "成功获取 688209.SH 的数据\n", + "成功获取 688210.SH 的数据\n", + "成功获取 688211.SH 的数据\n", + "成功获取 688212.SH 的数据\n", + "成功获取 688213.SH 的数据\n", + "成功获取 688215.SH 的数据\n", + "成功获取 688216.SH 的数据\n", + "成功获取 688217.SH 的数据\n", + "成功获取 688218.SH 的数据\n", + "成功获取 688219.SH 的数据\n", + "成功获取 688220.SH 的数据\n", + "成功获取 688221.SH 的数据\n", + "成功获取 688222.SH 的数据\n", + "成功获取 688223.SH 的数据\n", + "成功获取 688225.SH 的数据\n", + "成功获取 688226.SH 的数据\n", + "成功获取 688227.SH 的数据\n", + "成功获取 688228.SH 的数据\n", + "成功获取 688229.SH 的数据\n", + "成功获取 688230.SH 的数据\n", + "成功获取 688231.SH 的数据\n", + "成功获取 688232.SH 的数据\n", + "成功获取 688233.SH 的数据\n", + "成功获取 688234.SH 的数据\n", + "成功获取 688235.SH 的数据\n", + "成功获取 688236.SH 的数据\n", + "成功获取 688237.SH 的数据\n", + "成功获取 688238.SH 的数据\n", + "成功获取 688239.SH 的数据\n", + "成功获取 688244.SH 的数据\n", + "成功获取 688246.SH 的数据\n", + "成功获取 688247.SH 的数据\n", + "成功获取 688248.SH 的数据\n", + "成功获取 688249.SH 的数据\n", + "成功获取 688251.SH 的数据\n", + "成功获取 688252.SH 的数据\n", + "成功获取 688253.SH 的数据\n", + "成功获取 688255.SH 的数据\n", + "成功获取 688256.SH 的数据\n", + "成功获取 688257.SH 的数据\n", + "成功获取 688258.SH 的数据\n", + "成功获取 688259.SH 的数据\n", + "成功获取 688260.SH 的数据\n", + "成功获取 688261.SH 的数据\n", + "成功获取 688262.SH 的数据\n", + "成功获取 688265.SH 的数据\n", + "成功获取 688266.SH 的数据\n", + "成功获取 688267.SH 的数据\n", + "成功获取 688268.SH 的数据\n", + "成功获取 688269.SH 的数据\n", + "成功获取 688270.SH 的数据\n", + "成功获取 688271.SH 的数据\n", + "成功获取 688272.SH 的数据\n", + "成功获取 688273.SH 的数据\n", + "已调用300次API,等待 16.82 秒以满足速率限制...\n", + "成功获取 688275.SH 的数据\n", + "成功获取 688276.SH 的数据\n", + "成功获取 688277.SH 的数据\n", + "成功获取 688278.SH 的数据\n", + "成功获取 688279.SH 的数据\n", + "成功获取 688280.SH 的数据\n", + "成功获取 688281.SH 的数据\n", + "成功获取 688282.SH 的数据\n", + "成功获取 688283.SH 的数据\n", + "成功获取 688285.SH 的数据\n", + "成功获取 688286.SH 的数据\n", + "成功获取 688287.SH 的数据\n", + "成功获取 688288.SH 的数据\n", + "成功获取 688289.SH 的数据\n", + "成功获取 688290.SH 的数据\n", + "成功获取 688291.SH 的数据\n", + "成功获取 688292.SH 的数据\n", + "成功获取 688293.SH 的数据\n", + "成功获取 688295.SH 的数据\n", + "成功获取 688296.SH 的数据\n", + "成功获取 688297.SH 的数据\n", + "成功获取 688298.SH 的数据\n", + "成功获取 688299.SH 的数据\n", + "成功获取 688300.SH 的数据\n", + "成功获取 688301.SH 的数据\n", + "成功获取 688302.SH 的数据\n", + "成功获取 688303.SH 的数据\n", + "成功获取 688305.SH 的数据\n", + "成功获取 688306.SH 的数据\n", + "成功获取 688307.SH 的数据\n", + "成功获取 688308.SH 的数据\n", + "成功获取 688309.SH 的数据\n", + "成功获取 688310.SH 的数据\n", + "成功获取 688311.SH 的数据\n", + "成功获取 688312.SH 的数据\n", + "成功获取 688313.SH 的数据\n", + "成功获取 688314.SH 的数据\n", + "成功获取 688315.SH 的数据\n", + "成功获取 688316.SH 的数据\n", + "成功获取 688317.SH 的数据\n", + "成功获取 688318.SH 的数据\n", + "成功获取 688319.SH 的数据\n", + "成功获取 688320.SH 的数据\n", + "成功获取 688321.SH 的数据\n", + "成功获取 688322.SH 的数据\n", + "成功获取 688323.SH 的数据\n", + "成功获取 688325.SH 的数据\n", + "成功获取 688326.SH 的数据\n", + "成功获取 688327.SH 的数据\n", + "成功获取 688328.SH 的数据\n", + "成功获取 688329.SH 的数据\n", + "成功获取 688330.SH 的数据\n", + "成功获取 688331.SH 的数据\n", + "成功获取 688332.SH 的数据\n", + "成功获取 688333.SH 的数据\n", + "成功获取 688334.SH 的数据\n", + "成功获取 688335.SH 的数据\n", + "成功获取 688336.SH 的数据\n", + "成功获取 688337.SH 的数据\n", + "成功获取 688338.SH 的数据\n", + "成功获取 688339.SH 的数据\n", + "成功获取 688343.SH 的数据\n", + "成功获取 688345.SH 的数据\n", + "成功获取 688347.SH 的数据\n", + "成功获取 688348.SH 的数据\n", + "成功获取 688349.SH 的数据\n", + "成功获取 688350.SH 的数据\n", + "成功获取 688351.SH 的数据\n", + "成功获取 688352.SH 的数据\n", + "成功获取 688353.SH 的数据\n", + "成功获取 688355.SH 的数据\n", + "成功获取 688356.SH 的数据\n", + "成功获取 688357.SH 的数据\n", + "成功获取 688358.SH 的数据\n", + "成功获取 688359.SH 的数据\n", + "成功获取 688360.SH 的数据\n", + "成功获取 688361.SH 的数据\n", + "成功获取 688362.SH 的数据\n", + "成功获取 688363.SH 的数据\n", + "成功获取 688365.SH 的数据\n", + "成功获取 688366.SH 的数据\n", + "成功获取 688367.SH 的数据\n", + "成功获取 688368.SH 的数据\n", + "成功获取 688369.SH 的数据\n", + "成功获取 688370.SH 的数据\n", + "成功获取 688371.SH 的数据\n", + "成功获取 688372.SH 的数据\n", + "成功获取 688373.SH 的数据\n", + "成功获取 688375.SH 的数据\n", + "成功获取 688376.SH 的数据\n", + "成功获取 688377.SH 的数据\n", + "成功获取 688378.SH 的数据\n", + "成功获取 688379.SH 的数据\n", + "成功获取 688380.SH 的数据\n", + "成功获取 688381.SH 的数据\n", + "成功获取 688382.SH 的数据\n", + "成功获取 688383.SH 的数据\n", + "成功获取 688385.SH 的数据\n", + "成功获取 688386.SH 的数据\n", + "成功获取 688387.SH 的数据\n", + "成功获取 688388.SH 的数据\n", + "成功获取 688389.SH 的数据\n", + "成功获取 688390.SH 的数据\n", + "成功获取 688391.SH 的数据\n", + "成功获取 688392.SH 的数据\n", + "成功获取 688393.SH 的数据\n", + "成功获取 688395.SH 的数据\n", + "成功获取 688396.SH 的数据\n", + "成功获取 688398.SH 的数据\n", + "成功获取 688399.SH 的数据\n", + "成功获取 688400.SH 的数据\n", + "成功获取 688401.SH 的数据\n", + "成功获取 688403.SH 的数据\n", + "成功获取 688408.SH 的数据\n", + "成功获取 688409.SH 的数据\n", + "成功获取 688410.SH 的数据\n", + "成功获取 688411.SH 的数据\n", + "成功获取 688416.SH 的数据\n", + "成功获取 688418.SH 的数据\n", + "成功获取 688419.SH 的数据\n", + "成功获取 688420.SH 的数据\n", + "成功获取 688425.SH 的数据\n", + "成功获取 688426.SH 的数据\n", + "成功获取 688428.SH 的数据\n", + "成功获取 688429.SH 的数据\n", + "成功获取 688432.SH 的数据\n", + "成功获取 688433.SH 的数据\n", + "成功获取 688435.SH 的数据\n", + "成功获取 688439.SH 的数据\n", + "成功获取 688443.SH 的数据\n", + "成功获取 688448.SH 的数据\n", + "成功获取 688449.SH 的数据\n", + "成功获取 688450.SH 的数据\n", + "成功获取 688455.SH 的数据\n", + "成功获取 688456.SH 的数据\n", + "成功获取 688458.SH 的数据\n", + "成功获取 688459.SH 的数据\n", + "成功获取 688466.SH 的数据\n", + "成功获取 688468.SH 的数据\n", + "成功获取 688469.SH 的数据\n", + "成功获取 688472.SH 的数据\n", + "成功获取 688475.SH 的数据\n", + "成功获取 688478.SH 的数据\n", + "成功获取 688479.SH 的数据\n", + "成功获取 688480.SH 的数据\n", + "成功获取 688484.SH 的数据\n", + "成功获取 688485.SH 的数据\n", + "成功获取 688486.SH 的数据\n", + "成功获取 688488.SH 的数据\n", + "成功获取 688489.SH 的数据\n", + "成功获取 688496.SH 的数据\n", + "成功获取 688498.SH 的数据\n", + "成功获取 688499.SH 的数据\n", + "成功获取 688500.SH 的数据\n", + "成功获取 688501.SH 的数据\n", + "成功获取 688502.SH 的数据\n", + "成功获取 688503.SH 的数据\n", + "成功获取 688505.SH 的数据\n", + "成功获取 688506.SH 的数据\n", + "成功获取 688507.SH 的数据\n", + "成功获取 688508.SH 的数据\n", + "成功获取 688509.SH 的数据\n", + "成功获取 688510.SH 的数据\n", + "成功获取 688511.SH 的数据\n", + "成功获取 688512.SH 的数据\n", + "成功获取 688513.SH 的数据\n", + "成功获取 688515.SH 的数据\n", + "成功获取 688516.SH 的数据\n", + "成功获取 688517.SH 的数据\n", + "成功获取 688518.SH 的数据\n", + "成功获取 688519.SH 的数据\n", + "成功获取 688520.SH 的数据\n", + "成功获取 688521.SH 的数据\n", + "成功获取 688522.SH 的数据\n", + "成功获取 688523.SH 的数据\n", + "成功获取 688525.SH 的数据\n", + "成功获取 688526.SH 的数据\n", + "成功获取 688528.SH 的数据\n", + "成功获取 688529.SH 的数据\n", + "成功获取 688530.SH 的数据\n", + "成功获取 688531.SH 的数据\n", + "成功获取 688533.SH 的数据\n", + "成功获取 688535.SH 的数据\n", + "成功获取 688536.SH 的数据\n", + "成功获取 688538.SH 的数据\n", + "成功获取 688539.SH 的数据\n", + "成功获取 688543.SH 的数据\n", + "成功获取 688545.SH 的数据\n", + "成功获取 688548.SH 的数据\n", + "成功获取 688549.SH 的数据\n", + "成功获取 688550.SH 的数据\n", + "成功获取 688551.SH 的数据\n", + "成功获取 688552.SH 的数据\n", + "成功获取 688553.SH 的数据\n", + "成功获取 688556.SH 的数据\n", + "成功获取 688557.SH 的数据\n", + "成功获取 688558.SH 的数据\n", + "成功获取 688559.SH 的数据\n", + "成功获取 688560.SH 的数据\n", + "成功获取 688561.SH 的数据\n", + "成功获取 688562.SH 的数据\n", + "成功获取 688563.SH 的数据\n", + "成功获取 688565.SH 的数据\n", + "成功获取 688566.SH 的数据\n", + "成功获取 688567.SH 的数据\n", + "成功获取 688568.SH 的数据\n", + "成功获取 688569.SH 的数据\n", + "成功获取 688570.SH 的数据\n", + "成功获取 688571.SH 的数据\n", + "成功获取 688573.SH 的数据\n", + "成功获取 688575.SH 的数据\n", + "成功获取 688576.SH 的数据\n", + "成功获取 688577.SH 的数据\n", + "成功获取 688578.SH 的数据\n", + "成功获取 688579.SH 的数据\n", + "成功获取 688580.SH 的数据\n", + "成功获取 688581.SH 的数据\n", + "成功获取 688582.SH 的数据\n", + "成功获取 688583.SH 的数据\n", + "成功获取 688584.SH 的数据\n", + "成功获取 688585.SH 的数据\n", + "成功获取 688586.SH 的数据\n", + "成功获取 688588.SH 的数据\n", + "成功获取 688589.SH 的数据\n", + "成功获取 688590.SH 的数据\n", + "成功获取 688591.SH 的数据\n", + "成功获取 688592.SH 的数据\n", + "成功获取 688593.SH 的数据\n", + "成功获取 688595.SH 的数据\n", + "成功获取 688596.SH 的数据\n", + "成功获取 688597.SH 的数据\n", + "成功获取 688598.SH 的数据\n", + "成功获取 688599.SH 的数据\n", + "成功获取 688600.SH 的数据\n", + "成功获取 688601.SH 的数据\n", + "成功获取 688602.SH 的数据\n", + "成功获取 688603.SH 的数据\n", + "成功获取 688605.SH 的数据\n", + "成功获取 688606.SH 的数据\n", + "成功获取 688607.SH 的数据\n", + "成功获取 688608.SH 的数据\n", + "成功获取 688609.SH 的数据\n", + "成功获取 688610.SH 的数据\n", + "成功获取 688611.SH 的数据\n", + "成功获取 688612.SH 的数据\n", + "成功获取 688613.SH 的数据\n", + "成功获取 688615.SH 的数据\n", + "成功获取 688616.SH 的数据\n", + "成功获取 688617.SH 的数据\n", + "成功获取 688618.SH 的数据\n", + "成功获取 688619.SH 的数据\n", + "成功获取 688620.SH 的数据\n", + "成功获取 688621.SH 的数据\n", + "成功获取 688622.SH 的数据\n", + "成功获取 688623.SH 的数据\n", + "成功获取 688625.SH 的数据\n", + "成功获取 688626.SH 的数据\n", + "成功获取 688627.SH 的数据\n", + "成功获取 688628.SH 的数据\n", + "成功获取 688629.SH 的数据\n", + "成功获取 688630.SH 的数据\n", + "成功获取 688631.SH 的数据\n", + "成功获取 688633.SH 的数据\n", + "成功获取 688636.SH 的数据\n", + "成功获取 688638.SH 的数据\n", + "成功获取 688639.SH 的数据\n", + "成功获取 688646.SH 的数据\n", + "成功获取 688648.SH 的数据\n", + "成功获取 688651.SH 的数据\n", + "成功获取 688652.SH 的数据\n", + "成功获取 688653.SH 的数据\n", + "成功获取 688655.SH 的数据\n", + "成功获取 688656.SH 的数据\n", + "成功获取 688657.SH 的数据\n", + "成功获取 688658.SH 的数据\n", + "成功获取 688659.SH 的数据\n", + "成功获取 688660.SH 的数据\n", + "成功获取 688661.SH 的数据\n", + "成功获取 688662.SH 的数据\n", + "成功获取 688663.SH 的数据\n", + "成功获取 688665.SH 的数据\n", + "成功获取 688667.SH 的数据\n", + "成功获取 688668.SH 的数据\n", + "成功获取 688669.SH 的数据\n", + "成功获取 688670.SH 的数据\n", + "成功获取 688671.SH 的数据\n", + "成功获取 688676.SH 的数据\n", + "成功获取 688677.SH 的数据\n", + "成功获取 688678.SH 的数据\n", + "成功获取 688679.SH 的数据\n", + "成功获取 688680.SH 的数据\n", + "成功获取 688681.SH 的数据\n", + "成功获取 688682.SH 的数据\n", + "成功获取 688683.SH 的数据\n", + "成功获取 688685.SH 的数据\n", + "成功获取 688686.SH 的数据\n", + "成功获取 688687.SH 的数据\n", + "成功获取 688689.SH 的数据\n", + "成功获取 688690.SH 的数据\n", + "成功获取 688691.SH 的数据\n", + "已调用300次API,等待 19.71 秒以满足速率限制...\n", + "成功获取 688692.SH 的数据\n", + "成功获取 688693.SH 的数据\n", + "成功获取 688695.SH 的数据\n", + "成功获取 688696.SH 的数据\n", + "成功获取 688697.SH 的数据\n", + "成功获取 688698.SH 的数据\n", + "成功获取 688699.SH 的数据\n", + "成功获取 688700.SH 的数据\n", + "成功获取 688701.SH 的数据\n", + "成功获取 688702.SH 的数据\n", + "成功获取 688707.SH 的数据\n", + "成功获取 688708.SH 的数据\n", + "成功获取 688709.SH 的数据\n", + "成功获取 688710.SH 的数据\n", + "成功获取 688711.SH 的数据\n", + "成功获取 688716.SH 的数据\n", + "成功获取 688717.SH 的数据\n", + "成功获取 688718.SH 的数据\n", + "成功获取 688719.SH 的数据\n", + "成功获取 688720.SH 的数据\n", + "成功获取 688721.SH 的数据\n", + "成功获取 688722.SH 的数据\n", + "成功获取 688726.SH 的数据\n", + "成功获取 688728.SH 的数据\n", + "成功获取 688733.SH 的数据\n", + "成功获取 688737.SH 的数据\n", + "成功获取 688739.SH 的数据\n", + "成功获取 688750.SH 的数据\n", + "成功获取 688758.SH 的数据\n", + "成功获取 688766.SH 的数据\n", + "成功获取 688767.SH 的数据\n", + "成功获取 688768.SH 的数据\n", + "成功获取 688772.SH 的数据\n", + "成功获取 688776.SH 的数据\n", + "成功获取 688777.SH 的数据\n", + "成功获取 688778.SH 的数据\n", + "成功获取 688779.SH 的数据\n", + "成功获取 688786.SH 的数据\n", + "成功获取 688787.SH 的数据\n", + "成功获取 688788.SH 的数据\n", + "成功获取 688789.SH 的数据\n", + "成功获取 688793.SH 的数据\n", + "成功获取 688798.SH 的数据\n", + "成功获取 688799.SH 的数据\n", + "成功获取 688800.SH 的数据\n", + "成功获取 688819.SH 的数据\n", + "成功获取 688981.SH 的数据\n", + "成功获取 830779.BJ 的数据\n", + "成功获取 830799.BJ 的数据\n", + "成功获取 830809.BJ 的数据\n", + "成功获取 830832.BJ 的数据\n", + "成功获取 830839.BJ 的数据\n", + "成功获取 830879.BJ 的数据\n", + "成功获取 830896.BJ 的数据\n", + "成功获取 830946.BJ 的数据\n", + "成功获取 830964.BJ 的数据\n", + "成功获取 830974.BJ 的数据\n", + "成功获取 831010.BJ 的数据\n", + "成功获取 831039.BJ 的数据\n", + "成功获取 831087.BJ 的数据\n", + "成功获取 831152.BJ 的数据\n", + "成功获取 831167.BJ 的数据\n", + "成功获取 831175.BJ 的数据\n", + "成功获取 831195.BJ 的数据\n", + "成功获取 831278.BJ 的数据\n", + "成功获取 831304.BJ 的数据\n", + "成功获取 831305.BJ 的数据\n", + "成功获取 831370.BJ 的数据\n", + "成功获取 831396.BJ 的数据\n", + "成功获取 831445.BJ 的数据\n", + "成功获取 831526.BJ 的数据\n", + "成功获取 831627.BJ 的数据\n", + "成功获取 831641.BJ 的数据\n", + "成功获取 831689.BJ 的数据\n", + "成功获取 831726.BJ 的数据\n", + "成功获取 831768.BJ 的数据\n", + "成功获取 831832.BJ 的数据\n", + "成功获取 831834.BJ 的数据\n", + "成功获取 831855.BJ 的数据\n", + "成功获取 831856.BJ 的数据\n", + "成功获取 831906.BJ 的数据\n", + "成功获取 831961.BJ 的数据\n", + "成功获取 832000.BJ 的数据\n", + "成功获取 832023.BJ 的数据\n", + "成功获取 832089.BJ 的数据\n", + "成功获取 832110.BJ 的数据\n", + "成功获取 832145.BJ 的数据\n", + "成功获取 832149.BJ 的数据\n", + "成功获取 832171.BJ 的数据\n", + "成功获取 832175.BJ 的数据\n", + "成功获取 832225.BJ 的数据\n", + "成功获取 832278.BJ 的数据\n", + "成功获取 832419.BJ 的数据\n", + "成功获取 832469.BJ 的数据\n", + "成功获取 832471.BJ 的数据\n", + "成功获取 832491.BJ 的数据\n", + "成功获取 832522.BJ 的数据\n", + "成功获取 832566.BJ 的数据\n", + "成功获取 832651.BJ 的数据\n", + "成功获取 832662.BJ 的数据\n", + "成功获取 832735.BJ 的数据\n", + "成功获取 832786.BJ 的数据\n", + "成功获取 832802.BJ 的数据\n", + "成功获取 832876.BJ 的数据\n", + "成功获取 832885.BJ 的数据\n", + "成功获取 832978.BJ 的数据\n", + "成功获取 832982.BJ 的数据\n", + "成功获取 833030.BJ 的数据\n", + "成功获取 833075.BJ 的数据\n", + "成功获取 833171.BJ 的数据\n", + "成功获取 833230.BJ 的数据\n", + "成功获取 833266.BJ 的数据\n", + "成功获取 833284.BJ 的数据\n", + "成功获取 833346.BJ 的数据\n", + "成功获取 833394.BJ 的数据\n", + "成功获取 833427.BJ 的数据\n", + "成功获取 833429.BJ 的数据\n", + "成功获取 833454.BJ 的数据\n", + "成功获取 833455.BJ 的数据\n", + "成功获取 833509.BJ 的数据\n", + "成功获取 833523.BJ 的数据\n", + "成功获取 833533.BJ 的数据\n", + "成功获取 833575.BJ 的数据\n", + "成功获取 833580.BJ 的数据\n", + "成功获取 833751.BJ 的数据\n", + "成功获取 833781.BJ 的数据\n", + "成功获取 833819.BJ 的数据\n", + "成功获取 833873.BJ 的数据\n", + "成功获取 833914.BJ 的数据\n", + "成功获取 833943.BJ 的数据\n", + "成功获取 834014.BJ 的数据\n", + "成功获取 834021.BJ 的数据\n", + "成功获取 834033.BJ 的数据\n", + "成功获取 834058.BJ 的数据\n", + "成功获取 834062.BJ 的数据\n", + "成功获取 834261.BJ 的数据\n", + "成功获取 834407.BJ 的数据\n", + "成功获取 834415.BJ 的数据\n", + "成功获取 834475.BJ 的数据\n", + "成功获取 834599.BJ 的数据\n", + "成功获取 834639.BJ 的数据\n", + "成功获取 834682.BJ 的数据\n", + "成功获取 834765.BJ 的数据\n", + "成功获取 834770.BJ 的数据\n", + "成功获取 834950.BJ 的数据\n", + "成功获取 835174.BJ 的数据\n", + "成功获取 835179.BJ 的数据\n", + "成功获取 835184.BJ 的数据\n", + "成功获取 835185.BJ 的数据\n", + "成功获取 835207.BJ 的数据\n", + "成功获取 835237.BJ 的数据\n", + "成功获取 835305.BJ 的数据\n", + "成功获取 835368.BJ 的数据\n", + "成功获取 835438.BJ 的数据\n", + "成功获取 835508.BJ 的数据\n", + "成功获取 835579.BJ 的数据\n", + "成功获取 835640.BJ 的数据\n", + "成功获取 835670.BJ 的数据\n", + "成功获取 835857.BJ 的数据\n", + "成功获取 835892.BJ 的数据\n", + "成功获取 835985.BJ 的数据\n", + "成功获取 836077.BJ 的数据\n", + "成功获取 836149.BJ 的数据\n", + "成功获取 836208.BJ 的数据\n", + "成功获取 836221.BJ 的数据\n", + "成功获取 836239.BJ 的数据\n", + "成功获取 836247.BJ 的数据\n", + "成功获取 836260.BJ 的数据\n", + "成功获取 836263.BJ 的数据\n", + "成功获取 836270.BJ 的数据\n", + "成功获取 836395.BJ 的数据\n", + "成功获取 836414.BJ 的数据\n", + "成功获取 836419.BJ 的数据\n", + "成功获取 836422.BJ 的数据\n", + "成功获取 836433.BJ 的数据\n", + "成功获取 836504.BJ 的数据\n", + "成功获取 836547.BJ 的数据\n", + "成功获取 836675.BJ 的数据\n", + "成功获取 836699.BJ 的数据\n", + "成功获取 836717.BJ 的数据\n", + "成功获取 836720.BJ 的数据\n", + "成功获取 836807.BJ 的数据\n", + "成功获取 836826.BJ 的数据\n", + "成功获取 836871.BJ 的数据\n", + "成功获取 836892.BJ 的数据\n", + "成功获取 836942.BJ 的数据\n", + "成功获取 836957.BJ 的数据\n", + "成功获取 836961.BJ 的数据\n", + "成功获取 837006.BJ 的数据\n", + "成功获取 837023.BJ 的数据\n", + "成功获取 837046.BJ 的数据\n", + "成功获取 837092.BJ 的数据\n", + "成功获取 837174.BJ 的数据\n", + "成功获取 837212.BJ 的数据\n", + "成功获取 837242.BJ 的数据\n", + "成功获取 837344.BJ 的数据\n", + "成功获取 837403.BJ 的数据\n", + "成功获取 837592.BJ 的数据\n", + "成功获取 837663.BJ 的数据\n", + "成功获取 837748.BJ 的数据\n", + "成功获取 837821.BJ 的数据\n", + "成功获取 838030.BJ 的数据\n", + "成功获取 838163.BJ 的数据\n", + "成功获取 838171.BJ 的数据\n", + "成功获取 838227.BJ 的数据\n", + "成功获取 838262.BJ 的数据\n", + "成功获取 838275.BJ 的数据\n", + "成功获取 838402.BJ 的数据\n", + "成功获取 838670.BJ 的数据\n", + "成功获取 838701.BJ 的数据\n", + "成功获取 838810.BJ 的数据\n", + "成功获取 838837.BJ 的数据\n", + "成功获取 838924.BJ 的数据\n", + "成功获取 838971.BJ 的数据\n", + "成功获取 839167.BJ 的数据\n", + "成功获取 839273.BJ 的数据\n", + "成功获取 839371.BJ 的数据\n", + "成功获取 839493.BJ 的数据\n", + "成功获取 839680.BJ 的数据\n", + "成功获取 839719.BJ 的数据\n", + "成功获取 839725.BJ 的数据\n", + "成功获取 839729.BJ 的数据\n", + "成功获取 839790.BJ 的数据\n", + "成功获取 839792.BJ 的数据\n", + "成功获取 839946.BJ 的数据\n", + "成功获取 870199.BJ 的数据\n", + "成功获取 870204.BJ 的数据\n", + "成功获取 870299.BJ 的数据\n", + "成功获取 870357.BJ 的数据\n", + "成功获取 870436.BJ 的数据\n", + "成功获取 870508.BJ 的数据\n", + "成功获取 870656.BJ 的数据\n", + "成功获取 870726.BJ 的数据\n", + "成功获取 870866.BJ 的数据\n", + "成功获取 870976.BJ 的数据\n", + "成功获取 871245.BJ 的数据\n", + "成功获取 871263.BJ 的数据\n", + "成功获取 871396.BJ 的数据\n", + "成功获取 871478.BJ 的数据\n", + "成功获取 871553.BJ 的数据\n", + "成功获取 871634.BJ 的数据\n", + "成功获取 871642.BJ 的数据\n", + "成功获取 871694.BJ 的数据\n", + "成功获取 871753.BJ 的数据\n", + "成功获取 871857.BJ 的数据\n", + "成功获取 871970.BJ 的数据\n", + "成功获取 871981.BJ 的数据\n", + "成功获取 872190.BJ 的数据\n", + "成功获取 872351.BJ 的数据\n", + "成功获取 872374.BJ 的数据\n", + "成功获取 872392.BJ 的数据\n", + "成功获取 872541.BJ 的数据\n", + "成功获取 872808.BJ 的数据\n", + "成功获取 872895.BJ 的数据\n", + "成功获取 872925.BJ 的数据\n", + "成功获取 872931.BJ 的数据\n", + "成功获取 872953.BJ 的数据\n", + "成功获取 873001.BJ 的数据\n", + "成功获取 873122.BJ 的数据\n", + "成功获取 873132.BJ 的数据\n", + "成功获取 873152.BJ 的数据\n", + "成功获取 873167.BJ 的数据\n", + "成功获取 873169.BJ 的数据\n", + "成功获取 873223.BJ 的数据\n", + "成功获取 873305.BJ 的数据\n", + "成功获取 873339.BJ 的数据\n", + "成功获取 873527.BJ 的数据\n", + "成功获取 873570.BJ 的数据\n", + "成功获取 873576.BJ 的数据\n", + "成功获取 873593.BJ 的数据\n", + "成功获取 873665.BJ 的数据\n", + "成功获取 873679.BJ 的数据\n", + "成功获取 873690.BJ 的数据\n", + "成功获取 873693.BJ 的数据\n", + "成功获取 873703.BJ 的数据\n", + "成功获取 873706.BJ 的数据\n", + "成功获取 873726.BJ 的数据\n", + "成功获取 873806.BJ 的数据\n", + "成功获取 873833.BJ 的数据\n", + "成功获取 920002.BJ 的数据\n", + "成功获取 920008.BJ 的数据\n", + "成功获取 920016.BJ 的数据\n", + "成功获取 920019.BJ 的数据\n", + "成功获取 920060.BJ 的数据\n", + "成功获取 920066.BJ 的数据\n", + "成功获取 920082.BJ 的数据\n", + "成功获取 920088.BJ 的数据\n", + "成功获取 920098.BJ 的数据\n", + "成功获取 920099.BJ 的数据\n", + "成功获取 920106.BJ 的数据\n", + "成功获取 920108.BJ 的数据\n", + "成功获取 920111.BJ 的数据\n", + "成功获取 920116.BJ 的数据\n", + "成功获取 920118.BJ 的数据\n", + "成功获取 920128.BJ 的数据\n", + "成功获取 689009.SH 的数据\n", + "成功获取 000003.SZ 的数据\n", + "成功获取 000005.SZ 的数据\n", + "成功获取 000013.SZ 的数据\n", + "成功获取 000015.SZ 的数据\n", + "已调用300次API,等待 17.18 秒以满足速率限制...\n", + "成功获取 000018.SZ 的数据\n", + "成功获取 000023.SZ 的数据\n", + "成功获取 000024.SZ 的数据\n", + "成功获取 000033.SZ 的数据\n", + "成功获取 000038.SZ 的数据\n", + "成功获取 000046.SZ 的数据\n", + "成功获取 000047.SZ 的数据\n", + "成功获取 000150.SZ 的数据\n", + "成功获取 000405.SZ 的数据\n", + "成功获取 000406.SZ 的数据\n", + "成功获取 000412.SZ 的数据\n", + "成功获取 000413.SZ 的数据\n", + "成功获取 000416.SZ 的数据\n", + "成功获取 000418.SZ 的数据\n", + "成功获取 000502.SZ 的数据\n", + "成功获取 000508.SZ 的数据\n", + "成功获取 000511.SZ 的数据\n", + "成功获取 000515.SZ 的数据\n", + "成功获取 000522.SZ 的数据\n", + "成功获取 000527.SZ 的数据\n", + "成功获取 000535.SZ 的数据\n", + "成功获取 000540.SZ 的数据\n", + "成功获取 000542.SZ 的数据\n", + "成功获取 000549.SZ 的数据\n", + "成功获取 000556.SZ 的数据\n", + "成功获取 000562.SZ 的数据\n", + "成功获取 000569.SZ 的数据\n", + "成功获取 000578.SZ 的数据\n", + "成功获取 000583.SZ 的数据\n", + "成功获取 000585.SZ 的数据\n", + "成功获取 000587.SZ 的数据\n", + "成功获取 000588.SZ 的数据\n", + "成功获取 000594.SZ 的数据\n", + "成功获取 000602.SZ 的数据\n", + "成功获取 000606.SZ 的数据\n", + "成功获取 000611.SZ 的数据\n", + "成功获取 000613.SZ 的数据\n", + "成功获取 000616.SZ 的数据\n", + "成功获取 000618.SZ 的数据\n", + "成功获取 000621.SZ 的数据\n", + "成功获取 000653.SZ 的数据\n", + "成功获取 000658.SZ 的数据\n", + "成功获取 000660.SZ 的数据\n", + "成功获取 000662.SZ 的数据\n", + "成功获取 000666.SZ 的数据\n", + "成功获取 000667.SZ 的数据\n", + "成功获取 000671.SZ 的数据\n", + "成功获取 000673.SZ 的数据\n", + "成功获取 000675.SZ 的数据\n", + "成功获取 000687.SZ 的数据\n", + "成功获取 000689.SZ 的数据\n", + "成功获取 000693.SZ 的数据\n", + "成功获取 000699.SZ 的数据\n", + "成功获取 000730.SZ 的数据\n", + "成功获取 000732.SZ 的数据\n", + "成功获取 000748.SZ 的数据\n", + "成功获取 000760.SZ 的数据\n", + "成功获取 000763.SZ 的数据\n", + "成功获取 000765.SZ 的数据\n", + "成功获取 000769.SZ 的数据\n", + "成功获取 000780.SZ 的数据\n", + "成功获取 000787.SZ 的数据\n", + "成功获取 000805.SZ 的数据\n", + "成功获取 000806.SZ 的数据\n", + "成功获取 000817.SZ 的数据\n", + "成功获取 000827.SZ 的数据\n", + "成功获取 000832.SZ 的数据\n", + "成功获取 000835.SZ 的数据\n", + "成功获取 000836.SZ 的数据\n", + "成功获取 000861.SZ 的数据\n", + "成功获取 000866.SZ 的数据\n", + "成功获取 000916.SZ 的数据\n", + "成功获取 000918.SZ 的数据\n", + "成功获取 000939.SZ 的数据\n", + "成功获取 000956.SZ 的数据\n", + "成功获取 000961.SZ 的数据\n", + "成功获取 000971.SZ 的数据\n", + "成功获取 000976.SZ 的数据\n", + "成功获取 000979.SZ 的数据\n", + "成功获取 000982.SZ 的数据\n", + "成功获取 000996.SZ 的数据\n", + "成功获取 002002.SZ 的数据\n", + "成功获取 002013.SZ 的数据\n", + "成功获取 002018.SZ 的数据\n", + "成功获取 002070.SZ 的数据\n", + "成功获取 002071.SZ 的数据\n", + "成功获取 002087.SZ 的数据\n", + "成功获取 002089.SZ 的数据\n", + "成功获取 002113.SZ 的数据\n", + "成功获取 002118.SZ 的数据\n", + "成功获取 002143.SZ 的数据\n", + "成功获取 002147.SZ 的数据\n", + "成功获取 002220.SZ 的数据\n", + "成功获取 002260.SZ 的数据\n", + "成功获取 002280.SZ 的数据\n", + "成功获取 002288.SZ 的数据\n", + "成功获取 002308.SZ 的数据\n", + "成功获取 002325.SZ 的数据\n", + "成功获取 002341.SZ 的数据\n", + "成功获取 002359.SZ 的数据\n", + "成功获取 002411.SZ 的数据\n", + "成功获取 002417.SZ 的数据\n", + "成功获取 002433.SZ 的数据\n", + "成功获取 002435.SZ 的数据\n", + "成功获取 002447.SZ 的数据\n", + "成功获取 002450.SZ 的数据\n", + "成功获取 002464.SZ 的数据\n", + "成功获取 002473.SZ 的数据\n", + "成功获取 002477.SZ 的数据\n", + "成功获取 002499.SZ 的数据\n", + "成功获取 002502.SZ 的数据\n", + "成功获取 002503.SZ 的数据\n", + "成功获取 002504.SZ 的数据\n", + "成功获取 002505.SZ 的数据\n", + "成功获取 002509.SZ 的数据\n", + "成功获取 002604.SZ 的数据\n", + "成功获取 002610.SZ 的数据\n", + "成功获取 002618.SZ 的数据\n", + "成功获取 002619.SZ 的数据\n", + "成功获取 002621.SZ 的数据\n", + "成功获取 002665.SZ 的数据\n", + "成功获取 002680.SZ 的数据\n", + "成功获取 002684.SZ 的数据\n", + "成功获取 002699.SZ 的数据\n", + "成功获取 002711.SZ 的数据\n", + "成功获取 002740.SZ 的数据\n", + "成功获取 002751.SZ 的数据\n", + "成功获取 002770.SZ 的数据\n", + "成功获取 002776.SZ 的数据\n", + "成功获取 002781.SZ 的数据\n", + "成功获取 300023.SZ 的数据\n", + "成功获取 300028.SZ 的数据\n", + "成功获取 300038.SZ 的数据\n", + "成功获取 300064.SZ 的数据\n", + "成功获取 300089.SZ 的数据\n", + "成功获取 300090.SZ 的数据\n", + "成功获取 300104.SZ 的数据\n", + "成功获取 300116.SZ 的数据\n", + "成功获取 300156.SZ 的数据\n", + "成功获取 300178.SZ 的数据\n", + "成功获取 300186.SZ 的数据\n", + "成功获取 300202.SZ 的数据\n", + "成功获取 300216.SZ 的数据\n", + "成功获取 300262.SZ 的数据\n", + "成功获取 300273.SZ 的数据\n", + "成功获取 300282.SZ 的数据\n", + "成功获取 300297.SZ 的数据\n", + "成功获取 300309.SZ 的数据\n", + "成功获取 300312.SZ 的数据\n", + "成功获取 300325.SZ 的数据\n", + "成功获取 300330.SZ 的数据\n", + "成功获取 300336.SZ 的数据\n", + "成功获取 300356.SZ 的数据\n", + "成功获取 300362.SZ 的数据\n", + "成功获取 300367.SZ 的数据\n", + "成功获取 300372.SZ 的数据\n", + "成功获取 300392.SZ 的数据\n", + "成功获取 300431.SZ 的数据\n", + "成功获取 300495.SZ 的数据\n", + "成功获取 300526.SZ 的数据\n", + "成功获取 300742.SZ 的数据\n", + "成功获取 300799.SZ 的数据\n", + "成功获取 600001.SH 的数据\n", + "成功获取 600002.SH 的数据\n", + "成功获取 600003.SH 的数据\n", + "成功获取 600005.SH 的数据\n", + "成功获取 600065.SH 的数据\n", + "成功获取 600068.SH 的数据\n", + "成功获取 600069.SH 的数据\n", + "成功获取 600074.SH 的数据\n", + "成功获取 600077.SH 的数据\n", + "成功获取 600086.SH 的数据\n", + "成功获取 600087.SH 的数据\n", + "成功获取 600090.SH 的数据\n", + "成功获取 600091.SH 的数据\n", + "成功获取 600092.SH 的数据\n", + "成功获取 600093.SH 的数据\n", + "成功获取 600102.SH 的数据\n", + "成功获取 600112.SH 的数据\n", + "成功获取 600122.SH 的数据\n", + "成功获取 600139.SH 的数据\n", + "成功获取 600145.SH 的数据\n", + "成功获取 600146.SH 的数据\n", + "成功获取 600175.SH 的数据\n", + "成功获取 600181.SH 的数据\n", + "成功获取 600205.SH 的数据\n", + "成功获取 600209.SH 的数据\n", + "成功获取 600213.SH 的数据\n", + "成功获取 600220.SH 的数据\n", + "成功获取 600240.SH 的数据\n", + "成功获取 600242.SH 的数据\n", + "成功获取 600247.SH 的数据\n", + "成功获取 600253.SH 的数据\n", + "成功获取 600260.SH 的数据\n", + "成功获取 600263.SH 的数据\n", + "成功获取 600270.SH 的数据\n", + "成功获取 600275.SH 的数据\n", + "成功获取 600277.SH 的数据\n", + "成功获取 600286.SH 的数据\n", + "成功获取 600290.SH 的数据\n", + "成功获取 600291.SH 的数据\n", + "成功获取 600296.SH 的数据\n", + "成功获取 600297.SH 的数据\n", + "成功获取 600306.SH 的数据\n", + "成功获取 600311.SH 的数据\n", + "成功获取 600317.SH 的数据\n", + "成功获取 600321.SH 的数据\n", + "成功获取 600357.SH 的数据\n", + "成功获取 600385.SH 的数据\n", + "成功获取 600393.SH 的数据\n", + "成功获取 600401.SH 的数据\n", + "成功获取 600432.SH 的数据\n", + "成功获取 600466.SH 的数据\n", + "成功获取 600472.SH 的数据\n", + "成功获取 600485.SH 的数据\n", + "成功获取 600532.SH 的数据\n", + "成功获取 600553.SH 的数据\n", + "成功获取 600555.SH 的数据\n", + "成功获取 600565.SH 的数据\n", + "成功获取 600591.SH 的数据\n", + "成功获取 600607.SH 的数据\n", + "成功获取 600614.SH 的数据\n", + "成功获取 600625.SH 的数据\n", + "成功获取 600627.SH 的数据\n", + "成功获取 600631.SH 的数据\n", + "成功获取 600632.SH 的数据\n", + "成功获取 600634.SH 的数据\n", + "成功获取 600646.SH 的数据\n", + "成功获取 600647.SH 的数据\n", + "成功获取 600652.SH 的数据\n", + "成功获取 600656.SH 的数据\n", + "成功获取 600659.SH 的数据\n", + "成功获取 600669.SH 的数据\n", + "成功获取 600670.SH 的数据\n", + "成功获取 600672.SH 的数据\n", + "成功获取 600677.SH 的数据\n", + "成功获取 600680.SH 的数据\n", + "成功获取 600687.SH 的数据\n", + "成功获取 600695.SH 的数据\n", + "成功获取 600700.SH 的数据\n", + "成功获取 600701.SH 的数据\n", + "成功获取 600709.SH 的数据\n", + "成功获取 600723.SH 的数据\n", + "成功获取 600747.SH 的数据\n", + "成功获取 600752.SH 的数据\n", + "成功获取 600762.SH 的数据\n", + "成功获取 600766.SH 的数据\n", + "成功获取 600767.SH 的数据\n", + "成功获取 600772.SH 的数据\n", + "成功获取 600781.SH 的数据\n", + "成功获取 600786.SH 的数据\n", + "成功获取 600788.SH 的数据\n", + "成功获取 600799.SH 的数据\n", + "成功获取 600806.SH 的数据\n", + "成功获取 600813.SH 的数据\n", + "成功获取 600823.SH 的数据\n", + "成功获取 600832.SH 的数据\n", + "成功获取 600836.SH 的数据\n", + "成功获取 600840.SH 的数据\n", + "成功获取 600842.SH 的数据\n", + "成功获取 600852.SH 的数据\n", + "成功获取 600856.SH 的数据\n", + "成功获取 600870.SH 的数据\n", + "成功获取 600878.SH 的数据\n", + "成功获取 600890.SH 的数据\n", + "成功获取 600891.SH 的数据\n", + "成功获取 600896.SH 的数据\n", + "成功获取 600899.SH 的数据\n", + "成功获取 600978.SH 的数据\n", + "成功获取 600991.SH 的数据\n", + "成功获取 601258.SH 的数据\n", + "成功获取 601268.SH 的数据\n", + "成功获取 601299.SH 的数据\n", + "成功获取 601558.SH 的数据\n", + "成功获取 603133.SH 的数据\n", + "成功获取 603157.SH 的数据\n", + "成功获取 603555.SH 的数据\n", + "成功获取 603603.SH 的数据\n", + "成功获取 603996.SH 的数据\n", + "成功获取 688086.SH 的数据\n", + "成功获取 688555.SH 的数据\n", + "成功获取 832317.BJ 的数据\n", + "成功获取 833874.BJ 的数据\n", + "成功获取 833994.BJ 的数据\n", + "成功获取 T00018.SH 的数据\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_23876\\238708065.py:40: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + " all_cashflow = pd.concat(cashflow_list, ignore_index=True)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "所有日线数据已保存到 cashflow.h5\n" + ] + } + ], + "source": [ + "\n", + "\n", + "# 读取本地保存的股票列表 CSV 文件(假设文件名为 stocks_data.csv)\n", + "stocks_df = pd.read_csv('../../stocks_list.csv', encoding='utf-8-sig')\n", + "\n", + "# 用于存放所有股票的日线数据(每次获取的 DataFrame)\n", + "cashflow_list = []\n", + "\n", + "# API 调用计数和时间控制变量\n", + "api_call_count = 0\n", + "batch_start_time = time.time()\n", + "\n", + "# 循环遍历每个股票代码并获取数据\n", + "for idx, row in stocks_df.iterrows():\n", + " ts_code = row['ts_code'] # 假设股票代码列名为 ts_code\n", + " try:\n", + " # 调用 tushare 接口获取该股票自 2017 年以来的日线数据\n", + " cashflow = pro.cashflow(ts_code=ts_code)\n", + " # 如果返回数据不为空,则添加一列标识股票代码\n", + " if not cashflow.empty:\n", + " cashflow['ts_code'] = ts_code\n", + " cashflow_list.append(cashflow)\n", + " print(f\"成功获取 {ts_code} 的数据\")\n", + " except Exception as e:\n", + " print(f\"获取 {ts_code} 数据时出错: {e}\")\n", + "\n", + " # 计数一次 API 调用\n", + " api_call_count += 1\n", + "\n", + " # 每调用300次,检查时间是否少于1分钟,如果少于则等待剩余时间\n", + " if api_call_count % 300 == 0:\n", + " elapsed = time.time() - batch_start_time\n", + " if elapsed < 60:\n", + " sleep_time = 60 - elapsed\n", + " print(f\"已调用300次API,等待 {sleep_time:.2f} 秒以满足速率限制...\")\n", + " time.sleep(sleep_time)\n", + " # 重置批次起始时间\n", + " batch_start_time = time.time()\n", + "\n", + "# 合并所有获取到的日线数据\n", + "if cashflow_list:\n", + " all_cashflow = pd.concat(cashflow_list, ignore_index=True)\n", + " all_cashflow.to_hdf('../../data/cashflow.h5', key='cashflow', mode='w', format='table')\n", + " print(\"所有日线数据已保存到 cashflow.h5\")\n", + "else:\n", + " print(\"未获取到任何日线数据。\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "85bdf760cb83fbd3", + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-10T15:47:42.761559200Z", + "start_time": "2025-02-07T16:24:09.366158Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "成功获取 000001.SZ 的数据\n", + "成功获取 000002.SZ 的数据\n", + "成功获取 000004.SZ 的数据\n", + "成功获取 000006.SZ 的数据\n", + "成功获取 000007.SZ 的数据\n", + "成功获取 000008.SZ 的数据\n", + "成功获取 000009.SZ 的数据\n", + "成功获取 000010.SZ 的数据\n", + "成功获取 000011.SZ 的数据\n", + "成功获取 000012.SZ 的数据\n", + "成功获取 000014.SZ 的数据\n", + "成功获取 000016.SZ 的数据\n", + "成功获取 000017.SZ 的数据\n", + "成功获取 000019.SZ 的数据\n", + "成功获取 000020.SZ 的数据\n", + "成功获取 000021.SZ 的数据\n", + "成功获取 000025.SZ 的数据\n", + "成功获取 000026.SZ 的数据\n", + "成功获取 000027.SZ 的数据\n", + "成功获取 000028.SZ 的数据\n", + "成功获取 000029.SZ 的数据\n", + "成功获取 000030.SZ 的数据\n", + "成功获取 000031.SZ 的数据\n", + "成功获取 000032.SZ 的数据\n", + "成功获取 000034.SZ 的数据\n", + "成功获取 000035.SZ 的数据\n", + "成功获取 000036.SZ 的数据\n", + "成功获取 000037.SZ 的数据\n", + "成功获取 000039.SZ 的数据\n", + "成功获取 000040.SZ 的数据\n", + "成功获取 000042.SZ 的数据\n", + "成功获取 000045.SZ 的数据\n", + "成功获取 000048.SZ 的数据\n", + "成功获取 000049.SZ 的数据\n", + "成功获取 000050.SZ 的数据\n", + "成功获取 000055.SZ 的数据\n", + "成功获取 000056.SZ 的数据\n", + "成功获取 000058.SZ 的数据\n", + "成功获取 000059.SZ 的数据\n", + "成功获取 000060.SZ 的数据\n", + "成功获取 000061.SZ 的数据\n", + "成功获取 000062.SZ 的数据\n", + "成功获取 000063.SZ 的数据\n", + "成功获取 000065.SZ 的数据\n", + "成功获取 000066.SZ 的数据\n", + "成功获取 000068.SZ 的数据\n", + "成功获取 000069.SZ 的数据\n", + "成功获取 000070.SZ 的数据\n", + "成功获取 000078.SZ 的数据\n", + "成功获取 000088.SZ 的数据\n", + "成功获取 000089.SZ 的数据\n", + "成功获取 000090.SZ 的数据\n", + "成功获取 000096.SZ 的数据\n", + "成功获取 000099.SZ 的数据\n", + "成功获取 000100.SZ 的数据\n", + "成功获取 000151.SZ 的数据\n", + "成功获取 000153.SZ 的数据\n", + "成功获取 000155.SZ 的数据\n", + "成功获取 000156.SZ 的数据\n", + "成功获取 000157.SZ 的数据\n", + "成功获取 000158.SZ 的数据\n", + "成功获取 000159.SZ 的数据\n", + "成功获取 000166.SZ 的数据\n", + "成功获取 000301.SZ 的数据\n", + "成功获取 000333.SZ 的数据\n", + "成功获取 000338.SZ 的数据\n", + "成功获取 000400.SZ 的数据\n", + "成功获取 000401.SZ 的数据\n", + "成功获取 000402.SZ 的数据\n", + "成功获取 000403.SZ 的数据\n", + "成功获取 000404.SZ 的数据\n", + "成功获取 000407.SZ 的数据\n", + "成功获取 000408.SZ 的数据\n", + "成功获取 000409.SZ 的数据\n", + "成功获取 000410.SZ 的数据\n", + "成功获取 000411.SZ 的数据\n", + "成功获取 000415.SZ 的数据\n", + "成功获取 000417.SZ 的数据\n", + "成功获取 000419.SZ 的数据\n", + "成功获取 000420.SZ 的数据\n", + "成功获取 000421.SZ 的数据\n", + "成功获取 000422.SZ 的数据\n", + "成功获取 000423.SZ 的数据\n", + "成功获取 000425.SZ 的数据\n", + "成功获取 000426.SZ 的数据\n", + "成功获取 000428.SZ 的数据\n", + "成功获取 000429.SZ 的数据\n", + "成功获取 000430.SZ 的数据\n", + "成功获取 000488.SZ 的数据\n", + "成功获取 000498.SZ 的数据\n", + "成功获取 000501.SZ 的数据\n", + "成功获取 000503.SZ 的数据\n", + "成功获取 000504.SZ 的数据\n", + "成功获取 000505.SZ 的数据\n", + "成功获取 000506.SZ 的数据\n", + "成功获取 000507.SZ 的数据\n", + "成功获取 000509.SZ 的数据\n", + "成功获取 000510.SZ 的数据\n", + "成功获取 000513.SZ 的数据\n", + "成功获取 000514.SZ 的数据\n", + "成功获取 000516.SZ 的数据\n", + "成功获取 000517.SZ 的数据\n", + "成功获取 000518.SZ 的数据\n", + "成功获取 000519.SZ 的数据\n", + "成功获取 000520.SZ 的数据\n", + "成功获取 000521.SZ 的数据\n", + "成功获取 000523.SZ 的数据\n", + "成功获取 000524.SZ 的数据\n", + "成功获取 000525.SZ 的数据\n", + "成功获取 000526.SZ 的数据\n", + "成功获取 000528.SZ 的数据\n", + "成功获取 000529.SZ 的数据\n", + "成功获取 000530.SZ 的数据\n", + "成功获取 000531.SZ 的数据\n", + "成功获取 000532.SZ 的数据\n", + "成功获取 000533.SZ 的数据\n", + "成功获取 000534.SZ 的数据\n", + "成功获取 000536.SZ 的数据\n", + "成功获取 000537.SZ 的数据\n", + "成功获取 000538.SZ 的数据\n", + "成功获取 000539.SZ 的数据\n", + "成功获取 000541.SZ 的数据\n", + "成功获取 000543.SZ 的数据\n", + "成功获取 000544.SZ 的数据\n", + "成功获取 000545.SZ 的数据\n", + "成功获取 000546.SZ 的数据\n", + "成功获取 000547.SZ 的数据\n", + "成功获取 000548.SZ 的数据\n", + "成功获取 000550.SZ 的数据\n", + "成功获取 000551.SZ 的数据\n", + "成功获取 000552.SZ 的数据\n", + "成功获取 000553.SZ 的数据\n", + "成功获取 000554.SZ 的数据\n", + "成功获取 000555.SZ 的数据\n", + "成功获取 000557.SZ 的数据\n", + "成功获取 000558.SZ 的数据\n", + "成功获取 000559.SZ 的数据\n", + "成功获取 000560.SZ 的数据\n", + "成功获取 000561.SZ 的数据\n", + "成功获取 000563.SZ 的数据\n", + "成功获取 000564.SZ 的数据\n", + "成功获取 000565.SZ 的数据\n", + "成功获取 000566.SZ 的数据\n", + "成功获取 000567.SZ 的数据\n", + "成功获取 000568.SZ 的数据\n", + "成功获取 000570.SZ 的数据\n", + "成功获取 000571.SZ 的数据\n", + "成功获取 000572.SZ 的数据\n", + "成功获取 000573.SZ 的数据\n", + "成功获取 000576.SZ 的数据\n", + "成功获取 000581.SZ 的数据\n", + "成功获取 000582.SZ 的数据\n", + "成功获取 000584.SZ 的数据\n", + "成功获取 000586.SZ 的数据\n", + "成功获取 000589.SZ 的数据\n", + "成功获取 000590.SZ 的数据\n", + "成功获取 000591.SZ 的数据\n", + "成功获取 000592.SZ 的数据\n", + "成功获取 000593.SZ 的数据\n", + "成功获取 000595.SZ 的数据\n", + "成功获取 000596.SZ 的数据\n", + "成功获取 000597.SZ 的数据\n", + "成功获取 000598.SZ 的数据\n", + "成功获取 000599.SZ 的数据\n", + "成功获取 000600.SZ 的数据\n", + "成功获取 000601.SZ 的数据\n", + "成功获取 000603.SZ 的数据\n", + "成功获取 000605.SZ 的数据\n", + "成功获取 000607.SZ 的数据\n", + "成功获取 000608.SZ 的数据\n", + "成功获取 000609.SZ 的数据\n", + "成功获取 000610.SZ 的数据\n", + "成功获取 000612.SZ 的数据\n", + "成功获取 000615.SZ 的数据\n", + "成功获取 000617.SZ 的数据\n", + "成功获取 000619.SZ 的数据\n", + "成功获取 000620.SZ 的数据\n", + "成功获取 000622.SZ 的数据\n", + "成功获取 000623.SZ 的数据\n", + "成功获取 000625.SZ 的数据\n", + "成功获取 000626.SZ 的数据\n", + "成功获取 000627.SZ 的数据\n", + "成功获取 000628.SZ 的数据\n", + "成功获取 000629.SZ 的数据\n", + "成功获取 000630.SZ 的数据\n", + "成功获取 000631.SZ 的数据\n", + "成功获取 000632.SZ 的数据\n", + "成功获取 000633.SZ 的数据\n", + "成功获取 000635.SZ 的数据\n", + "成功获取 000636.SZ 的数据\n", + "成功获取 000637.SZ 的数据\n", + "成功获取 000638.SZ 的数据\n", + "成功获取 000639.SZ 的数据\n", + "成功获取 000650.SZ 的数据\n", + "成功获取 000651.SZ 的数据\n", + "成功获取 000652.SZ 的数据\n", + "成功获取 000655.SZ 的数据\n", + "成功获取 000656.SZ 的数据\n", + "成功获取 000657.SZ 的数据\n", + "成功获取 000659.SZ 的数据\n", + "成功获取 000661.SZ 的数据\n", + "成功获取 000663.SZ 的数据\n", + "成功获取 000665.SZ 的数据\n", + "成功获取 000668.SZ 的数据\n", + "成功获取 000669.SZ 的数据\n", + "成功获取 000670.SZ 的数据\n", + "成功获取 000672.SZ 的数据\n", + "成功获取 000676.SZ 的数据\n", + "成功获取 000677.SZ 的数据\n", + "成功获取 000678.SZ 的数据\n", + "成功获取 000679.SZ 的数据\n", + "成功获取 000680.SZ 的数据\n", + "成功获取 000681.SZ 的数据\n", + "成功获取 000682.SZ 的数据\n", + "成功获取 000683.SZ 的数据\n", + "成功获取 000685.SZ 的数据\n", + "成功获取 000686.SZ 的数据\n", + "成功获取 000688.SZ 的数据\n", + "成功获取 000690.SZ 的数据\n", + "成功获取 000691.SZ 的数据\n", + "成功获取 000692.SZ 的数据\n", + "成功获取 000695.SZ 的数据\n", + "成功获取 000697.SZ 的数据\n", + "成功获取 000698.SZ 的数据\n", + "成功获取 000700.SZ 的数据\n", + "成功获取 000701.SZ 的数据\n", + "成功获取 000702.SZ 的数据\n", + "成功获取 000703.SZ 的数据\n", + "成功获取 000705.SZ 的数据\n", + "成功获取 000707.SZ 的数据\n", + "成功获取 000708.SZ 的数据\n", + "成功获取 000709.SZ 的数据\n", + "成功获取 000710.SZ 的数据\n", + "成功获取 000711.SZ 的数据\n", + "成功获取 000712.SZ 的数据\n", + "成功获取 000713.SZ 的数据\n", + "成功获取 000715.SZ 的数据\n", + "成功获取 000716.SZ 的数据\n", + "成功获取 000717.SZ 的数据\n", + "成功获取 000718.SZ 的数据\n", + "成功获取 000719.SZ 的数据\n", + "成功获取 000720.SZ 的数据\n", + "成功获取 000721.SZ 的数据\n", + "成功获取 000722.SZ 的数据\n", + "成功获取 000723.SZ 的数据\n", + "成功获取 000725.SZ 的数据\n", + "成功获取 000726.SZ 的数据\n", + "成功获取 000727.SZ 的数据\n", + "成功获取 000728.SZ 的数据\n", + "成功获取 000729.SZ 的数据\n", + "成功获取 000731.SZ 的数据\n", + "成功获取 000733.SZ 的数据\n", + "成功获取 000735.SZ 的数据\n", + "成功获取 000736.SZ 的数据\n", + "成功获取 000737.SZ 的数据\n", + "成功获取 000738.SZ 的数据\n", + "成功获取 000739.SZ 的数据\n", + "成功获取 000750.SZ 的数据\n", + "成功获取 000751.SZ 的数据\n", + "成功获取 000752.SZ 的数据\n", + "成功获取 000753.SZ 的数据\n", + "成功获取 000755.SZ 的数据\n", + "成功获取 000756.SZ 的数据\n", + "成功获取 000757.SZ 的数据\n", + "成功获取 000758.SZ 的数据\n", + "成功获取 000759.SZ 的数据\n", + "成功获取 000761.SZ 的数据\n", + "成功获取 000762.SZ 的数据\n", + "成功获取 000766.SZ 的数据\n", + "成功获取 000767.SZ 的数据\n", + "成功获取 000768.SZ 的数据\n", + "成功获取 000776.SZ 的数据\n", + "成功获取 000777.SZ 的数据\n", + "成功获取 000778.SZ 的数据\n", + "成功获取 000779.SZ 的数据\n", + "成功获取 000782.SZ 的数据\n", + "成功获取 000783.SZ 的数据\n", + "成功获取 000785.SZ 的数据\n", + "成功获取 000786.SZ 的数据\n", + "成功获取 000788.SZ 的数据\n", + "成功获取 000789.SZ 的数据\n", + "成功获取 000790.SZ 的数据\n", + "成功获取 000791.SZ 的数据\n", + "成功获取 000792.SZ 的数据\n", + "成功获取 000793.SZ 的数据\n", + "成功获取 000795.SZ 的数据\n", + "成功获取 000796.SZ 的数据\n", + "成功获取 000797.SZ 的数据\n", + "成功获取 000798.SZ 的数据\n", + "成功获取 000799.SZ 的数据\n", + "成功获取 000800.SZ 的数据\n", + "成功获取 000801.SZ 的数据\n", + "成功获取 000802.SZ 的数据\n", + "成功获取 000803.SZ 的数据\n", + "成功获取 000807.SZ 的数据\n", + "成功获取 000809.SZ 的数据\n", + "成功获取 000810.SZ 的数据\n", + "成功获取 000811.SZ 的数据\n", + "成功获取 000812.SZ 的数据\n", + "成功获取 000813.SZ 的数据\n", "成功获取 000815.SZ 的数据\n", "成功获取 000816.SZ 的数据\n", "成功获取 000818.SZ 的数据\n", @@ -659,6 +6444,7 @@ "成功获取 002085.SZ 的数据\n", "成功获取 002086.SZ 的数据\n", "成功获取 002088.SZ 的数据\n", + "已调用300次API,等待 5.16 秒以满足速率限制...\n", "成功获取 002090.SZ 的数据\n", "成功获取 002091.SZ 的数据\n", "成功获取 002092.SZ 的数据\n", @@ -959,6 +6745,7 @@ "成功获取 002400.SZ 的数据\n", "成功获取 002401.SZ 的数据\n", "成功获取 002402.SZ 的数据\n", + "已调用300次API,等待 0.03 秒以满足速率限制...\n", "成功获取 002403.SZ 的数据\n", "成功获取 002404.SZ 的数据\n", "成功获取 002405.SZ 的数据\n", @@ -1559,7 +7346,7 @@ "成功获取 300014.SZ 的数据\n", "成功获取 300015.SZ 的数据\n", "成功获取 300016.SZ 的数据\n", - "已调用300次API,等待 1.88 秒以满足速率限制...\n", + "已调用300次API,等待 3.26 秒以满足速率限制...\n", "成功获取 300017.SZ 的数据\n", "成功获取 300018.SZ 的数据\n", "成功获取 300019.SZ 的数据\n", @@ -2160,7 +7947,6 @@ "成功获取 300650.SZ 的数据\n", "成功获取 300651.SZ 的数据\n", "成功获取 300652.SZ 的数据\n", - "已调用300次API,等待 0.89 秒以满足速率限制...\n", "成功获取 300653.SZ 的数据\n", "成功获取 300654.SZ 的数据\n", "成功获取 300655.SZ 的数据\n", @@ -2461,7 +8247,7 @@ "成功获取 300966.SZ 的数据\n", "成功获取 300967.SZ 的数据\n", "成功获取 300968.SZ 的数据\n", - "已调用300次API,等待 2.56 秒以满足速率限制...\n", + "已调用300次API,等待 9.20 秒以满足速率限制...\n", "成功获取 300969.SZ 的数据\n", "成功获取 300970.SZ 的数据\n", "成功获取 300971.SZ 的数据\n", @@ -2762,7 +8548,6 @@ "成功获取 301313.SZ 的数据\n", "成功获取 301314.SZ 的数据\n", "成功获取 301315.SZ 的数据\n", - "已调用300次API,等待 3.25 秒以满足速率限制...\n", "成功获取 301316.SZ 的数据\n", "成功获取 301317.SZ 的数据\n", "成功获取 301318.SZ 的数据\n", @@ -3963,6 +9748,7 @@ "成功获取 603041.SH 的数据\n", "成功获取 603042.SH 的数据\n", "成功获取 603043.SH 的数据\n", + "已调用300次API,等待 0.90 秒以满足速率限制...\n", "成功获取 603045.SH 的数据\n", "成功获取 603048.SH 的数据\n", "成功获取 603050.SH 的数据\n", @@ -4263,7 +10049,7 @@ "成功获取 603530.SH 的数据\n", "成功获取 603533.SH 的数据\n", "成功获取 603535.SH 的数据\n", - "已调用300次API,等待 3.10 秒以满足速率限制...\n", + "已调用300次API,等待 4.00 秒以满足速率限制...\n", "成功获取 603536.SH 的数据\n", "成功获取 603538.SH 的数据\n", "成功获取 603551.SH 的数据\n", @@ -4564,7 +10350,7 @@ "成功获取 605167.SH 的数据\n", "成功获取 605168.SH 的数据\n", "成功获取 605169.SH 的数据\n", - "已调用300次API,等待 1.72 秒以满足速率限制...\n", + "已调用300次API,等待 5.85 秒以满足速率限制...\n", "成功获取 605177.SH 的数据\n", "成功获取 605178.SH 的数据\n", "成功获取 605179.SH 的数据\n", @@ -4865,7 +10651,7 @@ "成功获取 688271.SH 的数据\n", "成功获取 688272.SH 的数据\n", "成功获取 688273.SH 的数据\n", - "已调用300次API,等待 1.17 秒以满足速率限制...\n", + "已调用300次API,等待 14.28 秒以满足速率限制...\n", "成功获取 688275.SH 的数据\n", "成功获取 688276.SH 的数据\n", "成功获取 688277.SH 的数据\n", @@ -5166,7 +10952,7 @@ "成功获取 688689.SH 的数据\n", "成功获取 688690.SH 的数据\n", "成功获取 688691.SH 的数据\n", - "已调用300次API,等待 0.58 秒以满足速率限制...\n", + "已调用300次API,等待 13.31 秒以满足速率限制...\n", "成功获取 688692.SH 的数据\n", "成功获取 688693.SH 的数据\n", "成功获取 688695.SH 的数据\n", @@ -5467,6 +11253,7 @@ "成功获取 000005.SZ 的数据\n", "成功获取 000013.SZ 的数据\n", "成功获取 000015.SZ 的数据\n", + "已调用300次API,等待 12.71 秒以满足速率限制...\n", "成功获取 000018.SZ 的数据\n", "成功获取 000023.SZ 的数据\n", "成功获取 000024.SZ 的数据\n", @@ -5758,83 +11545,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_16220\\823660297.py:40: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " all_fina_indicator = pd.concat(cashflow_list, ignore_index=True)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "所有日线数据已保存到 cashflow.h5\n" - ] - } - ], - "source": [ - "\n", - "\n", - "# 读取本地保存的股票列表 CSV 文件(假设文件名为 stocks_data.csv)\n", - "stocks_df = pd.read_csv('../../stocks_list.csv', encoding='utf-8-sig')\n", - "\n", - "# 用于存放所有股票的日线数据(每次获取的 DataFrame)\n", - "cashflow_list = []\n", - "\n", - "# API 调用计数和时间控制变量\n", - "api_call_count = 0\n", - "batch_start_time = time.time()\n", - "\n", - "# 循环遍历每个股票代码并获取数据\n", - "for idx, row in stocks_df.iterrows():\n", - " ts_code = row['ts_code'] # 假设股票代码列名为 ts_code\n", - " try:\n", - " # 调用 tushare 接口获取该股票自 2017 年以来的日线数据\n", - " cashflow = pro.cashflow(ts_code=ts_code)\n", - " # 如果返回数据不为空,则添加一列标识股票代码\n", - " if not cashflow.empty:\n", - " cashflow['ts_code'] = ts_code\n", - " cashflow_list.append(cashflow)\n", - " print(f\"成功获取 {ts_code} 的数据\")\n", - " except Exception as e:\n", - " print(f\"获取 {ts_code} 数据时出错: {e}\")\n", - "\n", - " # 计数一次 API 调用\n", - " api_call_count += 1\n", - "\n", - " # 每调用300次,检查时间是否少于1分钟,如果少于则等待剩余时间\n", - " if api_call_count % 300 == 0:\n", - " elapsed = time.time() - batch_start_time\n", - " if elapsed < 60:\n", - " sleep_time = 60 - elapsed\n", - " print(f\"已调用300次API,等待 {sleep_time:.2f} 秒以满足速率限制...\")\n", - " time.sleep(sleep_time)\n", - " # 重置批次起始时间\n", - " batch_start_time = time.time()\n", - "\n", - "# 合并所有获取到的日线数据\n", - "if cashflow_list:\n", - " all_cashflow = pd.concat(cashflow_list, ignore_index=True)\n", - " all_cashflow.to_hdf('../../data/cashflow.h5', key='cashflow', mode='w', format='table')\n", - " print(\"所有日线数据已保存到 cashflow.h5\")\n", - "else:\n", - " print(\"未获取到任何日线数据。\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "85bdf760cb83fbd3", - "metadata": { - "ExecuteTime": { - "end_time": "2025-02-10T15:47:42.761559200Z", - "start_time": "2025-02-07T16:24:09.366158Z" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_27304\\2498023504.py:3: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_23876\\3311990243.py:40: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", " all_fina_indicator = pd.concat(fina_indicator_list, ignore_index=True)\n" ] }, @@ -5897,7 +11608,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "id": "83403f50", "metadata": {}, "outputs": [ @@ -6505,6 +12216,7 @@ "成功获取 002085.SZ 的数据\n", "成功获取 002086.SZ 的数据\n", "成功获取 002088.SZ 的数据\n", + "已调用300次API,等待 4.07 秒以满足速率限制...\n", "成功获取 002090.SZ 的数据\n", "成功获取 002091.SZ 的数据\n", "成功获取 002092.SZ 的数据\n", @@ -7405,6 +13117,7 @@ "成功获取 300014.SZ 的数据\n", "成功获取 300015.SZ 的数据\n", "成功获取 300016.SZ 的数据\n", + "已调用300次API,等待 10.83 秒以满足速率限制...\n", "成功获取 300017.SZ 的数据\n", "成功获取 300018.SZ 的数据\n", "成功获取 300019.SZ 的数据\n", @@ -7705,6 +13418,7 @@ "成功获取 300337.SZ 的数据\n", "成功获取 300338.SZ 的数据\n", "成功获取 300339.SZ 的数据\n", + "已调用300次API,等待 0.77 秒以满足速率限制...\n", "成功获取 300340.SZ 的数据\n", "成功获取 300341.SZ 的数据\n", "成功获取 300342.SZ 的数据\n", @@ -8005,6 +13719,7 @@ "成功获取 300650.SZ 的数据\n", "成功获取 300651.SZ 的数据\n", "成功获取 300652.SZ 的数据\n", + "已调用300次API,等待 4.82 秒以满足速率限制...\n", "成功获取 300653.SZ 的数据\n", "成功获取 300654.SZ 的数据\n", "成功获取 300655.SZ 的数据\n", @@ -8305,7 +14020,7 @@ "成功获取 300966.SZ 的数据\n", "成功获取 300967.SZ 的数据\n", "成功获取 300968.SZ 的数据\n", - "已调用300次API,等待 3.29 秒以满足速率限制...\n", + "已调用300次API,等待 15.11 秒以满足速率限制...\n", "成功获取 300969.SZ 的数据\n", "成功获取 300970.SZ 的数据\n", "成功获取 300971.SZ 的数据\n", @@ -8606,7 +14321,7 @@ "成功获取 301313.SZ 的数据\n", "成功获取 301314.SZ 的数据\n", "成功获取 301315.SZ 的数据\n", - "已调用300次API,等待 2.17 秒以满足速率限制...\n", + "已调用300次API,等待 17.18 秒以满足速率限制...\n", "成功获取 301316.SZ 的数据\n", "成功获取 301317.SZ 的数据\n", "成功获取 301318.SZ 的数据\n", @@ -8907,6 +14622,7 @@ "成功获取 600170.SH 的数据\n", "成功获取 600171.SH 的数据\n", "成功获取 600172.SH 的数据\n", + "已调用300次API,等待 7.70 秒以满足速率限制...\n", "成功获取 600173.SH 的数据\n", "成功获取 600176.SH 的数据\n", "成功获取 600177.SH 的数据\n", @@ -9807,6 +15523,7 @@ "成功获取 603041.SH 的数据\n", "成功获取 603042.SH 的数据\n", "成功获取 603043.SH 的数据\n", + "已调用300次API,等待 0.50 秒以满足速率限制...\n", "成功获取 603045.SH 的数据\n", "成功获取 603048.SH 的数据\n", "成功获取 603050.SH 的数据\n", @@ -10107,7 +15824,7 @@ "成功获取 603530.SH 的数据\n", "成功获取 603533.SH 的数据\n", "成功获取 603535.SH 的数据\n", - "已调用300次API,等待 0.04 秒以满足速率限制...\n", + "已调用300次API,等待 9.64 秒以满足速率限制...\n", "成功获取 603536.SH 的数据\n", "成功获取 603538.SH 的数据\n", "成功获取 603551.SH 的数据\n", @@ -10408,6 +16125,7 @@ "成功获取 605167.SH 的数据\n", "成功获取 605168.SH 的数据\n", "成功获取 605169.SH 的数据\n", + "已调用300次API,等待 12.57 秒以满足速率限制...\n", "成功获取 605177.SH 的数据\n", "成功获取 605178.SH 的数据\n", "成功获取 605179.SH 的数据\n", @@ -10708,7 +16426,7 @@ "成功获取 688271.SH 的数据\n", "成功获取 688272.SH 的数据\n", "成功获取 688273.SH 的数据\n", - "已调用300次API,等待 2.28 秒以满足速率限制...\n", + "已调用300次API,等待 16.15 秒以满足速率限制...\n", "成功获取 688275.SH 的数据\n", "成功获取 688276.SH 的数据\n", "成功获取 688277.SH 的数据\n", @@ -11009,7 +16727,7 @@ "成功获取 688689.SH 的数据\n", "成功获取 688690.SH 的数据\n", "成功获取 688691.SH 的数据\n", - "已调用300次API,等待 3.96 秒以满足速率限制...\n", + "已调用300次API,等待 7.15 秒以满足速率限制...\n", "成功获取 688692.SH 的数据\n", "成功获取 688693.SH 的数据\n", "成功获取 688695.SH 的数据\n", @@ -11310,7 +17028,7 @@ "成功获取 000005.SZ 的数据\n", "成功获取 000013.SZ 的数据\n", "成功获取 000015.SZ 的数据\n", - "已调用300次API,等待 2.74 秒以满足速率限制...\n", + "已调用300次API,等待 13.13 秒以满足速率限制...\n", "成功获取 000018.SZ 的数据\n", "成功获取 000023.SZ 的数据\n", "成功获取 000024.SZ 的数据\n", @@ -11602,7 +17320,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_16220\\3217625028.py:40: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_23876\\3217625028.py:40: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", " all_balancesheet = pd.concat(balancesheet_list, ignore_index=True)\n" ] }, @@ -11665,7 +17383,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "id": "b27bb37b", "metadata": {}, "outputs": [ @@ -11679,12 +17397,12 @@ "3 5.272164e+12\n", "4 5.243822e+12\n", " ... \n", - "372441 1.150050e+09\n", - "372442 9.132874e+08\n", - "372443 4.395018e+08\n", - "372444 4.792661e+08\n", - "372445 3.738566e+08\n", - "Name: total_liab, Length: 372446, dtype: float64\n" + "372450 1.150050e+09\n", + "372451 9.132874e+08\n", + "372452 4.395018e+08\n", + "372453 4.792661e+08\n", + "372454 3.738566e+08\n", + "Name: total_liab, Length: 372455, dtype: float64\n" ] } ], diff --git a/main/data/index_and_industry.ipynb b/main/data/index_and_industry.ipynb index 743ffda..d92be32 100644 --- a/main/data/index_and_industry.ipynb +++ b/main/data/index_and_industry.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "initial_id", "metadata": { "ExecuteTime": { @@ -9,6 +10,7 @@ "start_time": "2025-04-09T14:57:26.124592Z" } }, + "outputs": [], "source": [ "from operator import index\n", "\n", @@ -18,12 +20,11 @@ "\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "code", + "execution_count": 2, "id": "f448da220816bf98", "metadata": { "ExecuteTime": { @@ -31,6 +32,23 @@ "start_time": "2025-04-09T14:57:27.392846Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "数据已经成功存储到index_data.h5文件中\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_28220\\1832869062.py:13: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + " final_df = pd.concat(all_data, ignore_index=True)\n" + ] + } + ], "source": [ "# 定义四个指数\n", "index_list = ['399300.SH', '000905.SH', '000852.SH', '399006.SZ']\n", @@ -50,28 +68,11 @@ "final_df.to_hdf('../../data/index_data.h5', key='index_data', mode='w')\n", "\n", "print(\"数据已经成功存储到index_data.h5文件中\")" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "数据已经成功存储到index_data.h5文件中\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_15500\\3209233630.py:13: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " final_df = pd.concat(all_data, ignore_index=True)\n" - ] - } - ], - "execution_count": 2 + ] }, { "cell_type": "code", + "execution_count": 3, "id": "907f732d3c397bf", "metadata": { "ExecuteTime": { @@ -79,54 +80,53 @@ "start_time": "2025-04-09T14:57:37.695917Z" } }, - "source": [ - "h5_filename = '../../data/index_data.h5'\n", - "key = '/index_data'\n", - "with pd.HDFStore(h5_filename, mode='r') as store:\n", - " df = store[key]\n", - " print(df)\n" - ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ts_code trade_date close open high low \\\n", - "0 000905.SH 20250409 5439.7716 5249.6841 5465.1449 5135.9655 \n", - "1 000905.SH 20250408 5326.9140 5279.7566 5371.1834 5249.2318 \n", - "2 000905.SH 20250407 5287.0333 5523.9636 5587.8502 5212.6773 \n", - "3 000905.SH 20250403 5845.5045 5842.6167 5906.7057 5817.9662 \n", - "4 000905.SH 20250402 5899.0865 5884.8925 5936.6467 5884.1126 \n", + "0 000905.SH 20250506 5740.3338 5668.8762 5740.3338 5666.4698 \n", + "1 000905.SH 20250430 5631.8249 5604.6537 5647.7821 5603.1718 \n", + "2 000905.SH 20250429 5604.9057 5583.7186 5622.0220 5571.2363 \n", + "3 000905.SH 20250428 5598.2951 5624.4166 5628.0778 5587.7857 \n", + "4 000905.SH 20250425 5627.1804 5613.1407 5661.5869 5596.5266 \n", "... ... ... ... ... ... ... \n", - "13444 399006.SZ 20100607 1069.4680 1005.0280 1075.2250 1001.7020 \n", - "13445 399006.SZ 20100604 1027.6810 989.6810 1027.6810 986.5040 \n", - "13446 399006.SZ 20100603 998.3940 1002.3550 1026.7020 997.7750 \n", - "13447 399006.SZ 20100602 997.1190 967.6090 997.1190 952.6110 \n", - "13448 399006.SZ 20100601 973.2330 986.0150 994.7930 948.1180 \n", + "13492 399006.SZ 20100607 1069.4680 1005.0280 1075.2250 1001.7020 \n", + "13493 399006.SZ 20100604 1027.6810 989.6810 1027.6810 986.5040 \n", + "13494 399006.SZ 20100603 998.3940 1002.3550 1026.7020 997.7750 \n", + "13495 399006.SZ 20100602 997.1190 967.6090 997.1190 952.6110 \n", + "13496 399006.SZ 20100601 973.2330 986.0150 994.7930 948.1180 \n", "\n", " pre_close change pct_chg vol amount \n", - "0 5326.9140 112.8576 2.1186 2.451180e+08 2.882574e+08 \n", - "1 5287.0333 39.8807 0.7543 2.238407e+08 2.618753e+08 \n", - "2 5845.5045 -558.4712 -9.5539 2.365227e+08 2.673974e+08 \n", - "3 5899.0865 -53.5820 -0.9083 1.349386e+08 1.736621e+08 \n", - "4 5892.8502 6.2363 0.1058 1.121600e+08 1.406421e+08 \n", + "0 5631.8249 108.5089 1.9267 1.627736e+08 2.170600e+08 \n", + "1 5604.9057 26.9192 0.4803 1.383866e+08 1.816166e+08 \n", + "2 5598.2951 6.6106 0.1181 1.267429e+08 1.580330e+08 \n", + "3 5627.1804 -28.8853 -0.5133 1.362181e+08 1.676163e+08 \n", + "4 5605.8796 21.3008 0.3800 1.400008e+08 1.719338e+08 \n", "... ... ... ... ... ... \n", - "13444 1027.6810 41.7870 4.0661 2.655275e+06 9.106095e+06 \n", - "13445 998.3940 29.2870 2.9334 1.500295e+06 5.269441e+06 \n", - "13446 997.1190 1.2750 0.1279 1.616805e+06 6.240835e+06 \n", - "13447 973.2330 23.8860 2.4543 1.074628e+06 4.001206e+06 \n", - "13448 1000.0000 -26.7670 -2.6767 1.356285e+06 4.924177e+06 \n", + "13492 1027.6810 41.7870 4.0661 2.655275e+06 9.106095e+06 \n", + "13493 998.3940 29.2870 2.9334 1.500295e+06 5.269441e+06 \n", + "13494 997.1190 1.2750 0.1279 1.616805e+06 6.240835e+06 \n", + "13495 973.2330 23.8860 2.4543 1.074628e+06 4.001206e+06 \n", + "13496 1000.0000 -26.7670 -2.6767 1.356285e+06 4.924177e+06 \n", "\n", - "[13449 rows x 11 columns]\n" + "[13497 rows x 11 columns]\n" ] } ], - "execution_count": 3 + "source": [ + "h5_filename = '../../data/index_data.h5'\n", + "key = '/index_data'\n", + "with pd.HDFStore(h5_filename, mode='r') as store:\n", + " df = store[key]\n", + " print(df)\n" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "new_trader", "language": "python", "name": "python3" }, diff --git a/main/data/name_change.ipynb b/main/data/name_change.ipynb index 367c985..4d94328 100644 --- a/main/data/name_change.ipynb +++ b/main/data/name_change.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "94412ea8-aad7-47fb-8597-d80adef21a8b", "metadata": { "ExecuteTime": { @@ -9,70 +10,24 @@ "start_time": "2025-03-01T09:19:23.930364Z" } }, + "outputs": [], "source": [ "import tushare as ts\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "code", + "execution_count": 2, "id": "9067006f-6352-4fe6-9295-22208f40f235", "metadata": { - "scrolled": true, "ExecuteTime": { "end_time": "2025-03-01T09:56:42.369757Z", "start_time": "2025-03-01T09:19:24.709524Z" - } + }, + "scrolled": true }, - "source": [ - "from tqdm import tqdm\n", - "import pandas as pd\n", - "import time\n", - "\n", - "# 读取本地保存的股票列表 CSV 文件(假设文件名为 stocks_data.csv)\n", - "stocks_df = pd.read_csv('../../stocks_list.csv', encoding='utf-8-sig')\n", - "\n", - "# 用于存放所有股票的日线数据(每次获取的 DataFrame)\n", - "name_change_data_list = []\n", - "\n", - "# API 调用计数和时间控制变量\n", - "api_call_count = 0\n", - "batch_start_time = time.time()\n", - "\n", - "# 循环遍历每个股票代码并获取数据\n", - "for idx, row in stocks_df.iterrows():\n", - " ts_code = row['ts_code'] # 假设股票代码列名为 ts_code\n", - " try:\n", - " # 调用 tushare 接口获取该股票自 2017 年以来的日线数据\n", - " name_change_data = pro.namechange(ts_code=ts_code, fields='ts_code,name,start_date,end_date,change_reason')\n", - " # 如果返回数据不为空,则添加一列标识股票代码\n", - " if not name_change_data.empty:\n", - " name_change_data_list.append(name_change_data)\n", - " print(f\"成功获取 {ts_code} 的数据\")\n", - " except Exception as e:\n", - " print(f\"获取 {ts_code} 数据时出错: {e}\")\n", - "\n", - " # 计数一次 API 调用\n", - " api_call_count += 1\n", - "\n", - " # 每调用300次,检查时间是否少于1分钟,如果少于则等待剩余时间\n", - " if api_call_count % 150 == 0:\n", - " elapsed = time.time() - batch_start_time\n", - " if elapsed < 60:\n", - " sleep_time = 60 - elapsed\n", - " print(f\"已调用300次API,等待 {sleep_time:.2f} 秒以满足速率限制...\")\n", - " time.sleep(sleep_time)\n", - " # 重置批次起始时间\n", - " batch_start_time = time.time()\n", - "\n", - "name_change_df = pd.concat(name_change_data_list, ignore_index=True)\n", - "# 输出部分结果\n", - "print(name_change_df.head())\n", - "print(f\"名称变化记录总数: {len(name_change_df)}\")\n" - ], "outputs": [ { "name": "stdout", @@ -228,7 +183,7 @@ "成功获取 000572.SZ 的数据\n", "成功获取 000573.SZ 的数据\n", "成功获取 000576.SZ 的数据\n", - "已调用300次API,等待 41.14 秒以满足速率限制...\n", + "已调用300次API,等待 38.79 秒以满足速率限制...\n", "成功获取 000581.SZ 的数据\n", "成功获取 000582.SZ 的数据\n", "成功获取 000584.SZ 的数据\n", @@ -379,7 +334,7 @@ "成功获取 000811.SZ 的数据\n", "成功获取 000812.SZ 的数据\n", "成功获取 000813.SZ 的数据\n", - "已调用300次API,等待 40.78 秒以满足速率限制...\n", + "已调用300次API,等待 38.14 秒以满足速率限制...\n", "成功获取 000815.SZ 的数据\n", "成功获取 000816.SZ 的数据\n", "成功获取 000818.SZ 的数据\n", @@ -530,7 +485,7 @@ "成功获取 001238.SZ 的数据\n", "成功获取 001239.SZ 的数据\n", "成功获取 001255.SZ 的数据\n", - "已调用300次API,等待 40.77 秒以满足速率限制...\n", + "已调用300次API,等待 38.70 秒以满足速率限制...\n", "成功获取 001256.SZ 的数据\n", "成功获取 001258.SZ 的数据\n", "成功获取 001259.SZ 的数据\n", @@ -681,7 +636,7 @@ "成功获取 002085.SZ 的数据\n", "成功获取 002086.SZ 的数据\n", "成功获取 002088.SZ 的数据\n", - "已调用300次API,等待 40.70 秒以满足速率限制...\n", + "已调用300次API,等待 38.23 秒以满足速率限制...\n", "成功获取 002090.SZ 的数据\n", "成功获取 002091.SZ 的数据\n", "成功获取 002092.SZ 的数据\n", @@ -832,7 +787,7 @@ "成功获取 002242.SZ 的数据\n", "成功获取 002243.SZ 的数据\n", "成功获取 002244.SZ 的数据\n", - "已调用300次API,等待 40.20 秒以满足速率限制...\n", + "已调用300次API,等待 38.48 秒以满足速率限制...\n", "成功获取 002245.SZ 的数据\n", "成功获取 002246.SZ 的数据\n", "成功获取 002247.SZ 的数据\n", @@ -983,7 +938,7 @@ "成功获取 002400.SZ 的数据\n", "成功获取 002401.SZ 的数据\n", "成功获取 002402.SZ 的数据\n", - "已调用300次API,等待 40.84 秒以满足速率限制...\n", + "已调用300次API,等待 38.28 秒以满足速率限制...\n", "成功获取 002403.SZ 的数据\n", "成功获取 002404.SZ 的数据\n", "成功获取 002405.SZ 的数据\n", @@ -1134,7 +1089,7 @@ "成功获取 002566.SZ 的数据\n", "成功获取 002567.SZ 的数据\n", "成功获取 002568.SZ 的数据\n", - "已调用300次API,等待 41.66 秒以满足速率限制...\n", + "已调用300次API,等待 38.10 秒以满足速率限制...\n", "成功获取 002569.SZ 的数据\n", "成功获取 002570.SZ 的数据\n", "成功获取 002571.SZ 的数据\n", @@ -1285,7 +1240,7 @@ "成功获取 002729.SZ 的数据\n", "成功获取 002730.SZ 的数据\n", "成功获取 002731.SZ 的数据\n", - "已调用300次API,等待 40.74 秒以满足速率限制...\n", + "已调用300次API,等待 39.07 秒以满足速率限制...\n", "成功获取 002732.SZ 的数据\n", "成功获取 002733.SZ 的数据\n", "成功获取 002734.SZ 的数据\n", @@ -1436,7 +1391,7 @@ "成功获取 002896.SZ 的数据\n", "成功获取 002897.SZ 的数据\n", "成功获取 002898.SZ 的数据\n", - "已调用300次API,等待 41.14 秒以满足速率限制...\n", + "已调用300次API,等待 38.58 秒以满足速率限制...\n", "成功获取 002899.SZ 的数据\n", "成功获取 002900.SZ 的数据\n", "成功获取 002901.SZ 的数据\n", @@ -1587,7 +1542,7 @@ "成功获取 300014.SZ 的数据\n", "成功获取 300015.SZ 的数据\n", "成功获取 300016.SZ 的数据\n", - "已调用300次API,等待 40.57 秒以满足速率限制...\n", + "已调用300次API,等待 39.18 秒以满足速率限制...\n", "成功获取 300017.SZ 的数据\n", "成功获取 300018.SZ 的数据\n", "成功获取 300019.SZ 的数据\n", @@ -1738,7 +1693,7 @@ "成功获取 300174.SZ 的数据\n", "成功获取 300175.SZ 的数据\n", "成功获取 300176.SZ 的数据\n", - "已调用300次API,等待 41.05 秒以满足速率限制...\n", + "已调用300次API,等待 38.05 秒以满足速率限制...\n", "成功获取 300177.SZ 的数据\n", "成功获取 300179.SZ 的数据\n", "成功获取 300180.SZ 的数据\n", @@ -1889,7 +1844,7 @@ "成功获取 300337.SZ 的数据\n", "成功获取 300338.SZ 的数据\n", "成功获取 300339.SZ 的数据\n", - "已调用300次API,等待 40.69 秒以满足速率限制...\n", + "已调用300次API,等待 38.83 秒以满足速率限制...\n", "成功获取 300340.SZ 的数据\n", "成功获取 300341.SZ 的数据\n", "成功获取 300342.SZ 的数据\n", @@ -2040,7 +1995,7 @@ "成功获取 300494.SZ 的数据\n", "成功获取 300496.SZ 的数据\n", "成功获取 300497.SZ 的数据\n", - "已调用300次API,等待 40.51 秒以满足速率限制...\n", + "已调用300次API,等待 38.36 秒以满足速率限制...\n", "成功获取 300498.SZ 的数据\n", "成功获取 300499.SZ 的数据\n", "成功获取 300500.SZ 的数据\n", @@ -2191,7 +2146,7 @@ "成功获取 300650.SZ 的数据\n", "成功获取 300651.SZ 的数据\n", "成功获取 300652.SZ 的数据\n", - "已调用300次API,等待 39.15 秒以满足速率限制...\n", + "已调用300次API,等待 39.00 秒以满足速率限制...\n", "成功获取 300653.SZ 的数据\n", "成功获取 300654.SZ 的数据\n", "成功获取 300655.SZ 的数据\n", @@ -2342,7 +2297,7 @@ "成功获取 300810.SZ 的数据\n", "成功获取 300811.SZ 的数据\n", "成功获取 300812.SZ 的数据\n", - "已调用300次API,等待 38.87 秒以满足速率限制...\n", + "已调用300次API,等待 39.10 秒以满足速率限制...\n", "成功获取 300813.SZ 的数据\n", "成功获取 300814.SZ 的数据\n", "成功获取 300815.SZ 的数据\n", @@ -2493,7 +2448,7 @@ "成功获取 300966.SZ 的数据\n", "成功获取 300967.SZ 的数据\n", "成功获取 300968.SZ 的数据\n", - "已调用300次API,等待 40.54 秒以满足速率限制...\n", + "已调用300次API,等待 38.14 秒以满足速率限制...\n", "成功获取 300969.SZ 的数据\n", "成功获取 300970.SZ 的数据\n", "成功获取 300971.SZ 的数据\n", @@ -2644,7 +2599,7 @@ "成功获取 301128.SZ 的数据\n", "成功获取 301129.SZ 的数据\n", "成功获取 301130.SZ 的数据\n", - "已调用300次API,等待 41.03 秒以满足速率限制...\n", + "已调用300次API,等待 38.08 秒以满足速率限制...\n", "成功获取 301131.SZ 的数据\n", "成功获取 301132.SZ 的数据\n", "成功获取 301133.SZ 的数据\n", @@ -2795,7 +2750,7 @@ "成功获取 301313.SZ 的数据\n", "成功获取 301314.SZ 的数据\n", "成功获取 301315.SZ 的数据\n", - "已调用300次API,等待 40.99 秒以满足速率限制...\n", + "已调用300次API,等待 38.67 秒以满足速率限制...\n", "成功获取 301316.SZ 的数据\n", "成功获取 301317.SZ 的数据\n", "成功获取 301318.SZ 的数据\n", @@ -2946,7 +2901,7 @@ "成功获取 301618.SZ 的数据\n", "成功获取 301622.SZ 的数据\n", "成功获取 301626.SZ 的数据\n", - "已调用300次API,等待 41.17 秒以满足速率限制...\n", + "已调用300次API,等待 39.59 秒以满足速率限制...\n", "成功获取 301628.SZ 的数据\n", "成功获取 301631.SZ 的数据\n", "成功获取 301633.SZ 的数据\n", @@ -3097,7 +3052,7 @@ "成功获取 600170.SH 的数据\n", "成功获取 600171.SH 的数据\n", "成功获取 600172.SH 的数据\n", - "已调用300次API,等待 40.74 秒以满足速率限制...\n", + "已调用300次API,等待 38.63 秒以满足速率限制...\n", "成功获取 600173.SH 的数据\n", "成功获取 600176.SH 的数据\n", "成功获取 600177.SH 的数据\n", @@ -3248,7 +3203,7 @@ "成功获取 600366.SH 的数据\n", "成功获取 600367.SH 的数据\n", "成功获取 600368.SH 的数据\n", - "已调用300次API,等待 41.16 秒以满足速率限制...\n", + "已调用300次API,等待 38.00 秒以满足速率限制...\n", "成功获取 600369.SH 的数据\n", "成功获取 600370.SH 的数据\n", "成功获取 600371.SH 的数据\n", @@ -3399,7 +3354,7 @@ "成功获取 600572.SH 的数据\n", "成功获取 600573.SH 的数据\n", "成功获取 600575.SH 的数据\n", - "已调用300次API,等待 40.45 秒以满足速率限制...\n", + "已调用300次API,等待 36.61 秒以满足速率限制...\n", "成功获取 600576.SH 的数据\n", "成功获取 600577.SH 的数据\n", "成功获取 600578.SH 的数据\n", @@ -3550,7 +3505,7 @@ "成功获取 600748.SH 的数据\n", "成功获取 600749.SH 的数据\n", "成功获取 600750.SH 的数据\n", - "已调用300次API,等待 41.00 秒以满足速率限制...\n", + "已调用300次API,等待 38.88 秒以满足速率限制...\n", "成功获取 600751.SH 的数据\n", "成功获取 600753.SH 的数据\n", "成功获取 600754.SH 的数据\n", @@ -3701,7 +3656,7 @@ "成功获取 600956.SH 的数据\n", "成功获取 600958.SH 的数据\n", "成功获取 600959.SH 的数据\n", - "已调用300次API,等待 41.08 秒以满足速率限制...\n", + "已调用300次API,等待 38.49 秒以满足速率限制...\n", "成功获取 600960.SH 的数据\n", "成功获取 600961.SH 的数据\n", "成功获取 600962.SH 的数据\n", @@ -3852,7 +3807,7 @@ "成功获取 601519.SH 的数据\n", "成功获取 601528.SH 的数据\n", "成功获取 601555.SH 的数据\n", - "已调用300次API,等待 41.02 秒以满足速率限制...\n", + "已调用300次API,等待 38.62 秒以满足速率限制...\n", "成功获取 601566.SH 的数据\n", "成功获取 601567.SH 的数据\n", "成功获取 601568.SH 的数据\n", @@ -4003,7 +3958,7 @@ "成功获取 603041.SH 的数据\n", "成功获取 603042.SH 的数据\n", "成功获取 603043.SH 的数据\n", - "已调用300次API,等待 40.67 秒以满足速率限制...\n", + "已调用300次API,等待 38.79 秒以满足速率限制...\n", "成功获取 603045.SH 的数据\n", "成功获取 603048.SH 的数据\n", "成功获取 603050.SH 的数据\n", @@ -4154,7 +4109,7 @@ "成功获取 603228.SH 的数据\n", "成功获取 603229.SH 的数据\n", "成功获取 603230.SH 的数据\n", - "已调用300次API,等待 41.24 秒以满足速率限制...\n", + "已调用300次API,等待 39.75 秒以满足速率限制...\n", "成功获取 603231.SH 的数据\n", "成功获取 603232.SH 的数据\n", "成功获取 603233.SH 的数据\n", @@ -4305,7 +4260,7 @@ "成功获取 603530.SH 的数据\n", "成功获取 603533.SH 的数据\n", "成功获取 603535.SH 的数据\n", - "已调用300次API,等待 40.73 秒以满足速率限制...\n", + "已调用300次API,等待 38.97 秒以满足速率限制...\n", "成功获取 603536.SH 的数据\n", "成功获取 603538.SH 的数据\n", "成功获取 603551.SH 的数据\n", @@ -4456,7 +4411,7 @@ "成功获取 603819.SH 的数据\n", "成功获取 603822.SH 的数据\n", "成功获取 603823.SH 的数据\n", - "已调用300次API,等待 41.30 秒以满足速率限制...\n", + "已调用300次API,等待 39.13 秒以满足速率限制...\n", "成功获取 603825.SH 的数据\n", "成功获取 603826.SH 的数据\n", "成功获取 603828.SH 的数据\n", @@ -4607,7 +4562,7 @@ "成功获取 605167.SH 的数据\n", "成功获取 605168.SH 的数据\n", "成功获取 605169.SH 的数据\n", - "已调用300次API,等待 40.75 秒以满足速率限制...\n", + "已调用300次API,等待 39.25 秒以满足速率限制...\n", "成功获取 605177.SH 的数据\n", "成功获取 605178.SH 的数据\n", "成功获取 605179.SH 的数据\n", @@ -4758,7 +4713,7 @@ "成功获取 688097.SH 的数据\n", "成功获取 688098.SH 的数据\n", "成功获取 688099.SH 的数据\n", - "已调用300次API,等待 41.17 秒以满足速率限制...\n", + "已调用300次API,等待 38.88 秒以满足速率限制...\n", "成功获取 688100.SH 的数据\n", "成功获取 688101.SH 的数据\n", "成功获取 688102.SH 的数据\n", @@ -4909,7 +4864,7 @@ "成功获取 688271.SH 的数据\n", "成功获取 688272.SH 的数据\n", "成功获取 688273.SH 的数据\n", - "已调用300次API,等待 41.28 秒以满足速率限制...\n", + "已调用300次API,等待 35.24 秒以满足速率限制...\n", "成功获取 688275.SH 的数据\n", "成功获取 688276.SH 的数据\n", "成功获取 688277.SH 的数据\n", @@ -5060,7 +5015,7 @@ "成功获取 688486.SH 的数据\n", "成功获取 688488.SH 的数据\n", "成功获取 688489.SH 的数据\n", - "已调用300次API,等待 41.23 秒以满足速率限制...\n", + "已调用300次API,等待 37.62 秒以满足速率限制...\n", "成功获取 688496.SH 的数据\n", "成功获取 688498.SH 的数据\n", "成功获取 688499.SH 的数据\n", @@ -5211,7 +5166,7 @@ "成功获取 688689.SH 的数据\n", "成功获取 688690.SH 的数据\n", "成功获取 688691.SH 的数据\n", - "已调用300次API,等待 40.17 秒以满足速率限制...\n", + "已调用300次API,等待 39.35 秒以满足速率限制...\n", "成功获取 688692.SH 的数据\n", "成功获取 688693.SH 的数据\n", "成功获取 688695.SH 的数据\n", @@ -5362,7 +5317,7 @@ "成功获取 835184.BJ 的数据\n", "成功获取 835185.BJ 的数据\n", "成功获取 835207.BJ 的数据\n", - "已调用300次API,等待 41.36 秒以满足速率限制...\n", + "已调用300次API,等待 39.39 秒以满足速率限制...\n", "成功获取 835237.BJ 的数据\n", "成功获取 835305.BJ 的数据\n", "成功获取 835368.BJ 的数据\n", @@ -5513,7 +5468,7 @@ "成功获取 000005.SZ 的数据\n", "成功获取 000013.SZ 的数据\n", "成功获取 000015.SZ 的数据\n", - "已调用300次API,等待 40.98 秒以满足速率限制...\n", + "已调用300次API,等待 38.64 秒以满足速率限制...\n", "成功获取 000018.SZ 的数据\n", "成功获取 000023.SZ 的数据\n", "成功获取 000024.SZ 的数据\n", @@ -5664,7 +5619,7 @@ "成功获取 300309.SZ 的数据\n", "成功获取 300312.SZ 的数据\n", "成功获取 300325.SZ 的数据\n", - "已调用300次API,等待 40.90 秒以满足速率限制...\n", + "已调用300次API,等待 39.83 秒以满足速率限制...\n", "成功获取 300330.SZ 的数据\n", "成功获取 300336.SZ 的数据\n", "成功获取 300356.SZ 的数据\n", @@ -5806,14 +5761,60 @@ "2 000001.SZ 深发展A 20070620 20120801 完成股改\n", "3 000001.SZ 深发展A 20070620 20120801 完成股改\n", "4 000001.SZ S深发展A 20061009 20070619 未股改加S\n", - "名称变化记录总数: 31934\n" + "名称变化记录总数: 32258\n" ] } ], - "execution_count": 2 + "source": [ + "from tqdm import tqdm\n", + "import pandas as pd\n", + "import time\n", + "\n", + "# 读取本地保存的股票列表 CSV 文件(假设文件名为 stocks_data.csv)\n", + "stocks_df = pd.read_csv('../../stocks_list.csv', encoding='utf-8-sig')\n", + "\n", + "# 用于存放所有股票的日线数据(每次获取的 DataFrame)\n", + "name_change_data_list = []\n", + "\n", + "# API 调用计数和时间控制变量\n", + "api_call_count = 0\n", + "batch_start_time = time.time()\n", + "\n", + "# 循环遍历每个股票代码并获取数据\n", + "for idx, row in stocks_df.iterrows():\n", + " ts_code = row['ts_code'] # 假设股票代码列名为 ts_code\n", + " try:\n", + " # 调用 tushare 接口获取该股票自 2017 年以来的日线数据\n", + " name_change_data = pro.namechange(ts_code=ts_code, fields='ts_code,name,start_date,end_date,change_reason')\n", + " # 如果返回数据不为空,则添加一列标识股票代码\n", + " if not name_change_data.empty:\n", + " name_change_data_list.append(name_change_data)\n", + " print(f\"成功获取 {ts_code} 的数据\")\n", + " except Exception as e:\n", + " print(f\"获取 {ts_code} 数据时出错: {e}\")\n", + "\n", + " # 计数一次 API 调用\n", + " api_call_count += 1\n", + "\n", + " # 每调用300次,检查时间是否少于1分钟,如果少于则等待剩余时间\n", + " if api_call_count % 150 == 0:\n", + " elapsed = time.time() - batch_start_time\n", + " if elapsed < 60:\n", + " sleep_time = 60 - elapsed\n", + " print(f\"已调用300次API,等待 {sleep_time:.2f} 秒以满足速率限制...\")\n", + " time.sleep(sleep_time)\n", + " # 重置批次起始时间\n", + " batch_start_time = time.time()\n", + "\n", + "name_change_df = pd.concat(name_change_data_list, ignore_index=True)\n", + "# 输出部分结果\n", + "print(name_change_df.head())\n", + "print(f\"名称变化记录总数: {len(name_change_df)}\")\n" + ] }, { "cell_type": "code", + "execution_count": 3, "id": "4d5524b8-2a90-44bb-b5ef-e59cfa232ff0", "metadata": { "ExecuteTime": { @@ -5821,14 +5822,6 @@ "start_time": "2025-03-01T09:56:42.431891Z" } }, - "source": [ - "# 合并所有获取到的日线数据\n", - "if True:\n", - " name_change_df.to_hdf('../../data/name_change.h5', key='name_change', mode='w', format='table')\n", - " print(\"所有日线数据已保存到 daily_data.h5\")\n", - "else:\n", - " print(\"未获取到任何日线数据。\")" - ], "outputs": [ { "name": "stdout", @@ -5838,10 +5831,18 @@ ] } ], - "execution_count": 3 + "source": [ + "# 合并所有获取到的日线数据\n", + "if True:\n", + " name_change_df.to_hdf('../../data/name_change.h5', key='name_change', mode='w', format='table')\n", + " print(\"所有日线数据已保存到 daily_data.h5\")\n", + "else:\n", + " print(\"未获取到任何日线数据。\")" + ] }, { "cell_type": "code", + "execution_count": 4, "id": "1e920791-e8de-4a51-a39b-283f54132b44", "metadata": { "ExecuteTime": { @@ -5849,9 +5850,6 @@ "start_time": "2025-03-01T09:56:42.545392Z" } }, - "source": [ - "print(name_change_df.head())" - ], "outputs": [ { "name": "stdout", @@ -5866,10 +5864,13 @@ ] } ], - "execution_count": 4 + "source": [ + "print(name_change_df.head())" + ] }, { "cell_type": "code", + "execution_count": null, "id": "4f5651f7-0910-4df5-9c3f-79d6ce033d53", "metadata": { "ExecuteTime": { @@ -5877,14 +5878,13 @@ "start_time": "2025-03-01T09:56:42.569013Z" } }, - "source": [], "outputs": [], - "execution_count": null + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "new_trader", "language": "python", "name": "python3" }, @@ -5898,7 +5898,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.19" + "version": "3.11.11" } }, "nbformat": 4, diff --git a/main/data/update/cyq-perf.ipynb b/main/data/update/cyq-perf.ipynb index 62a7ad6..7bb4859 100644 --- a/main/data/update/cyq-perf.ipynb +++ b/main/data/update/cyq-perf.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "f74ce078-f7e8-4733-a14c-14d8815a3626", "metadata": { "ExecuteTime": { @@ -9,16 +10,16 @@ "start_time": "2025-04-09T14:57:33.903794Z" } }, + "outputs": [], "source": [ "import tushare as ts\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "code", + "execution_count": 2, "id": "44dd8d87-e60b-49e5-aed9-efaa7f92d4fe", "metadata": { "ExecuteTime": { @@ -26,6 +27,30 @@ "start_time": "2025-04-09T14:57:34.666469Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ts_code trade_date\n", + "0 000001.SZ 20250312\n", + "1 000002.SZ 20250312\n", + "2 000004.SZ 20250312\n", + "3 000006.SZ 20250312\n", + "4 000007.SZ 20250312\n", + "... ... ...\n", + "43070 920108.BJ 20250421\n", + "43071 920111.BJ 20250421\n", + "43072 920116.BJ 20250421\n", + "43073 920118.BJ 20250421\n", + "43074 920128.BJ 20250421\n", + "\n", + "[7648931 rows x 2 columns]\n", + "20250430\n", + "start_date: 20250506\n" + ] + } + ], "source": [ "import pandas as pd\n", "import time\n", @@ -39,40 +64,16 @@ " max_date = df['trade_date'].max()\n", "\n", "print(max_date)\n", - "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250420')\n", + "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250620')\n", "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", "start_date = min(trade_dates)\n", "print(f'start_date: {start_date}')" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " ts_code trade_date\n", - "0 000001.SZ 20250312\n", - "1 000002.SZ 20250312\n", - "2 000004.SZ 20250312\n", - "3 000006.SZ 20250312\n", - "4 000007.SZ 20250312\n", - "... ... ...\n", - "5387 920108.BJ 20250408\n", - "5388 920111.BJ 20250408\n", - "5389 920116.BJ 20250408\n", - "5390 920118.BJ 20250408\n", - "5391 920128.BJ 20250408\n", - "\n", - "[7562721 rows x 2 columns]\n", - "20250408\n", - "start_date: 20250409\n" - ] - } - ], - "execution_count": 2 + ] }, { "cell_type": "code", + "execution_count": 3, "id": "747acc47-0884-4f76-90fb-276f6494e31d", "metadata": { "ExecuteTime": { @@ -80,6 +81,47 @@ "start_time": "2025-04-09T14:57:42.232250Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "任务 20250619 完成\n", + "任务 20250620 完成\n", + "任务 20250618 完成\n", + "任务 20250617 完成\n", + "任务 20250613 完成\n", + "任务 20250616 完成\n", + "任务 20250611 完成\n", + "任务 20250612 完成\n", + "任务 20250610 完成\n", + "任务 20250609 完成\n", + "任务 20250606 完成\n", + "任务 20250605 完成\n", + "任务 20250604 完成\n", + "任务 20250603 完成\n", + "任务 20250529 完成\n", + "任务 20250530 完成\n", + "任务 20250528 完成\n", + "任务 20250527 完成\n", + "任务 20250526 完成\n", + "任务 20250523 完成\n", + "任务 20250522 完成\n", + "任务 20250521 完成\n", + "任务 20250519 完成\n", + "任务 20250520 完成\n", + "任务 20250516 完成\n", + "任务 20250515 完成\n", + "任务 20250514 完成\n", + "任务 20250513 完成\n", + "任务 20250512 完成\n", + "任务 20250509 完成\n", + "任务 20250508 完成\n", + "任务 20250507 完成\n", + "任务 20250506 完成\n" + ] + } + ], "source": [ "from concurrent.futures import ThreadPoolExecutor, as_completed\n", "\n", @@ -109,27 +151,11 @@ " except Exception as e:\n", " print(f\"获取 {trade_date} 数据时出错: {e}\")\n", "\n" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "任务 20250418 完成\n", - "任务 20250417 完成\n", - "任务 20250416 完成\n", - "任务 20250414 完成\n", - "任务 20250415 完成\n", - "任务 20250411 完成\n", - "任务 20250410 完成\n", - "任务 20250409 完成\n" - ] - } - ], - "execution_count": 3 + ] }, { "cell_type": "code", + "execution_count": 4, "id": "c6765638-481f-40d8-a259-2e7b25362618", "metadata": { "ExecuteTime": { @@ -137,16 +163,6 @@ "start_time": "2025-04-09T14:57:45.698824Z" } }, - "source": [ - "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)\n", - "\n", - "# 将所有数据合并为一个 DataFrame\n", - "\n", - "# 将数据保存为 HDF5 文件(table 格式)\n", - "all_daily_data_df.to_hdf(h5_filename, key=key, mode='a', format='table', append=True, data_columns=True)\n", - "\n", - "print(\"所有每日基础数据获取并保存完毕!\")" - ], "outputs": [ { "name": "stdout", @@ -156,12 +172,21 @@ ] } ], - "execution_count": 4 + "source": [ + "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)\n", + "\n", + "# 将所有数据合并为一个 DataFrame\n", + "\n", + "# 将数据保存为 HDF5 文件(table 格式)\n", + "all_daily_data_df.to_hdf(h5_filename, key=key, mode='a', format='table', append=True, data_columns=True)\n", + "\n", + "print(\"所有每日基础数据获取并保存完毕!\")" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "new_trader", "language": "python", "name": "python3" }, diff --git a/main/data/update/sw_daily.ipynb b/main/data/update/sw_daily.ipynb index c65e73b..ec0f74d 100644 --- a/main/data/update/sw_daily.ipynb +++ b/main/data/update/sw_daily.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "f74ce078-f7e8-4733-a14c-14d8815a3626", "metadata": { "ExecuteTime": { @@ -9,16 +10,16 @@ "start_time": "2025-04-09T14:57:34.837095Z" } }, + "outputs": [], "source": [ "import tushare as ts\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "code", + "execution_count": 2, "id": "44dd8d87-e60b-49e5-aed9-efaa7f92d4fe", "metadata": { "ExecuteTime": { @@ -26,6 +27,30 @@ "start_time": "2025-04-09T14:57:35.854308Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ts_code trade_date\n", + "0 801001.SI 20250221\n", + "1 801002.SI 20250221\n", + "2 801003.SI 20250221\n", + "3 801005.SI 20250221\n", + "4 801010.SI 20250221\n", + "... ... ...\n", + "3507 859811.SI 20250421\n", + "3508 859821.SI 20250421\n", + "3509 859822.SI 20250421\n", + "3510 859852.SI 20250421\n", + "3511 859951.SI 20250421\n", + "\n", + "[1065026 rows x 2 columns]\n", + "20250430\n", + "start_date: 20250506\n" + ] + } + ], "source": [ "import pandas as pd\n", "import time\n", @@ -39,40 +64,16 @@ " max_date = df['trade_date'].max()\n", "\n", "print(max_date)\n", - "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250420')\n", + "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250620')\n", "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", "start_date = min(trade_dates)\n", "print(f'start_date: {start_date}')" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " ts_code trade_date\n", - "0 801001.SI 20250221\n", - "1 801002.SI 20250221\n", - "2 801003.SI 20250221\n", - "3 801005.SI 20250221\n", - "4 801010.SI 20250221\n", - ".. ... ...\n", - "434 859811.SI 20250408\n", - "435 859821.SI 20250408\n", - "436 859822.SI 20250408\n", - "437 859852.SI 20250408\n", - "438 859951.SI 20250408\n", - "\n", - "[1058002 rows x 2 columns]\n", - "20250408\n", - "start_date: 20250409\n" - ] - } - ], - "execution_count": 2 + ] }, { "cell_type": "code", + "execution_count": 3, "id": "747acc47-0884-4f76-90fb-276f6494e31d", "metadata": { "ExecuteTime": { @@ -80,6 +81,47 @@ "start_time": "2025-04-09T14:57:38.104541Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "任务 20250619 完成\n", + "任务 20250620 完成\n", + "任务 20250618 完成\n", + "任务 20250617 完成\n", + "任务 20250616 完成\n", + "任务 20250613 完成\n", + "任务 20250611 完成\n", + "任务 20250612 完成\n", + "任务 20250610 完成\n", + "任务 20250609 完成\n", + "任务 20250606 完成\n", + "任务 20250605 完成\n", + "任务 20250603 完成\n", + "任务 20250604 完成\n", + "任务 20250530 完成\n", + "任务 20250529 完成\n", + "任务 20250528 完成\n", + "任务 20250527 完成\n", + "任务 20250526 完成\n", + "任务 20250523 完成\n", + "任务 20250522 完成\n", + "任务 20250521 完成\n", + "任务 20250520 完成\n", + "任务 20250519 完成\n", + "任务 20250516 完成\n", + "任务 20250515 完成\n", + "任务 20250514 完成\n", + "任务 20250513 完成\n", + "任务 20250512 完成\n", + "任务 20250509 完成\n", + "任务 20250508 完成\n", + "任务 20250507 完成\n", + "任务 20250506 完成\n" + ] + } + ], "source": [ "from concurrent.futures import ThreadPoolExecutor, as_completed\n", "\n", @@ -109,27 +151,11 @@ " except Exception as e:\n", " print(f\"获取 {trade_date} 数据时出错: {e}\")\n", "\n" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "任务 20250417 完成\n", - "任务 20250418 完成\n", - "任务 20250415 完成\n", - "任务 20250416 完成\n", - "任务 20250414 完成\n", - "任务 20250411 完成\n", - "任务 20250410 完成\n", - "任务 20250409 完成\n" - ] - } - ], - "execution_count": 3 + ] }, { "cell_type": "code", + "execution_count": 4, "id": "c6765638-481f-40d8-a259-2e7b25362618", "metadata": { "ExecuteTime": { @@ -137,16 +163,6 @@ "start_time": "2025-04-09T14:57:40.773783Z" } }, - "source": [ - "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)\n", - "\n", - "# 将所有数据合并为一个 DataFrame\n", - "\n", - "# 将数据保存为 HDF5 文件(table 格式)\n", - "all_daily_data_df.to_hdf(h5_filename, key=key, mode='a', format='table', append=True, data_columns=True)\n", - "\n", - "print(\"所有每日基础数据获取并保存完毕!\")" - ], "outputs": [ { "name": "stdout", @@ -156,12 +172,21 @@ ] } ], - "execution_count": 4 + "source": [ + "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)\n", + "\n", + "# 将所有数据合并为一个 DataFrame\n", + "\n", + "# 将数据保存为 HDF5 文件(table 格式)\n", + "all_daily_data_df.to_hdf(h5_filename, key=key, mode='a', format='table', append=True, data_columns=True)\n", + "\n", + "print(\"所有每日基础数据获取并保存完毕!\")" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "new_trader", "language": "python", "name": "python3" }, diff --git a/main/data/update/update_daily_basic.ipynb b/main/data/update/update_daily_basic.ipynb index 1fa5342..6704db1 100644 --- a/main/data/update/update_daily_basic.ipynb +++ b/main/data/update/update_daily_basic.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "18d1d622-b083-4cc4-a6f8-7c1ed2d0edd2", "metadata": { "ExecuteTime": { @@ -9,16 +10,16 @@ "start_time": "2025-04-09T14:57:36.159612Z" } }, + "outputs": [], "source": [ "import tushare as ts\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "code", + "execution_count": 2, "id": "14671a7f72de2564", "metadata": { "ExecuteTime": { @@ -26,6 +27,7 @@ "start_time": "2025-04-09T14:57:36.918051Z" } }, + "outputs": [], "source": [ "from datetime import datetime\n", "import pandas as pd\n", @@ -70,15 +72,15 @@ "name_change_dict = {}\n", "for ts_code, group in name_change_df.groupby('ts_code'):\n", " # 只保留 'ST' 和 '*ST' 的记录\n", - " st_data = group[(group['change_reason'] == 'ST') | (group['change_reason'] == '*ST')]\n", + " # st_data = group[(group['change_reason'] == 'ST') | (group['change_reason'] == '*ST')]\n", + " st_data = group[group['name'].str.contains('ST')]\n", " if not st_data.empty:\n", " name_change_dict[ts_code] = filter_rows(st_data)" - ], - "outputs": [], - "execution_count": 2 + ] }, { "cell_type": "code", + "execution_count": 3, "id": "e7f8cce2f80e2f20", "metadata": { "ExecuteTime": { @@ -86,6 +88,26 @@ "start_time": "2025-04-09T14:57:39.339423Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 8599138 entries, 0 to 8599137\n", + "Data columns (total 2 columns):\n", + " # Column Dtype \n", + "--- ------ ----- \n", + " 0 ts_code object\n", + " 1 trade_date object\n", + "dtypes: object(2)\n", + "memory usage: 196.8+ MB\n", + "None\n", + "20250430\n", + "20250506\n" + ] + } + ], "source": [ "import time\n", "from concurrent.futures import ThreadPoolExecutor, as_completed\n", @@ -99,44 +121,85 @@ " max_date = df['trade_date'].max()\n", "\n", "print(max_date)\n", - "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250420')\n", + "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250720')\n", "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", "start_date = min(trade_dates)\n", "print(start_date)" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "553cfb36-f560-4cc4-b2bc-68323ccc5072", + "metadata": { + "ExecuteTime": { + "end_time": "2025-04-09T14:58:16.817010Z", + "start_time": "2025-04-09T14:58:09.326485Z" + }, + "scrolled": true + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\n", - "Index: 8512911 entries, 0 to 5391\n", - "Data columns (total 2 columns):\n", - " # Column Dtype \n", - "--- ------ ----- \n", - " 0 ts_code object\n", - " 1 trade_date object\n", - "dtypes: object(2)\n", - "memory usage: 194.8+ MB\n", - "None\n", - "20250408\n", - "20250409\n" + "任务 20250718 完成\n", + "任务 20250717 完成\n", + "任务 20250715 完成\n", + "任务 20250716 完成\n", + "任务 20250711 完成\n", + "任务 20250714 完成\n", + "任务 20250709 完成\n", + "任务 20250710 完成\n", + "任务 20250707 完成\n", + "任务 20250708 完成\n", + "任务 20250704 完成\n", + "任务 20250703 完成\n", + "任务 20250702 完成\n", + "任务 20250701 完成\n", + "任务 20250630 完成\n", + "任务 20250627 完成\n", + "任务 20250626 完成\n", + "任务 20250625 完成\n", + "任务 20250624 完成\n", + "任务 20250623 完成\n", + "任务 20250619 完成\n", + "任务 20250620 完成\n", + "任务 20250618 完成\n", + "任务 20250617 完成\n", + "任务 20250616 完成\n", + "任务 20250613 完成\n", + "任务 20250612 完成\n", + "任务 20250611 完成\n", + "任务 20250610 完成\n", + "任务 20250609 完成\n", + "任务 20250606 完成\n", + "任务 20250605 完成\n", + "任务 20250604 完成\n", + "任务 20250603 完成\n", + "任务 20250530 完成\n", + "任务 20250529 完成\n", + "任务 20250528 完成\n", + "任务 20250527 完成\n", + "任务 20250526 完成\n", + "任务 20250523 完成\n", + "任务 20250522 完成\n", + "任务 20250521 完成\n", + "任务 20250520 完成\n", + "任务 20250519 完成\n", + "任务 20250516 完成\n", + "任务 20250515 完成\n", + "任务 20250514 完成\n", + "任务 20250513 完成\n", + "任务 20250512 完成\n", + "任务 20250509 完成\n", + "任务 20250508 完成\n", + "任务 20250507 完成\n", + "任务 20250506 完成\n" ] } ], - "execution_count": 3 - }, - { - "cell_type": "code", - "id": "553cfb36-f560-4cc4-b2bc-68323ccc5072", - "metadata": { - "scrolled": true, - "ExecuteTime": { - "end_time": "2025-04-09T14:58:16.817010Z", - "start_time": "2025-04-09T14:58:09.326485Z" - } - }, "source": [ "\n", "\n", @@ -186,27 +249,11 @@ " # 重置批次起始时间\n", " batch_start_time = time.time()\n", "\n" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "任务 20250418 完成\n", - "任务 20250417 完成\n", - "任务 20250416 完成\n", - "任务 20250415 完成\n", - "任务 20250414 完成\n", - "任务 20250411 完成\n", - "任务 20250410 完成\n", - "任务 20250409 完成\n" - ] - } - ], - "execution_count": 4 + ] }, { "cell_type": "code", + "execution_count": 5, "id": "919023c693d7a47a", "metadata": { "ExecuteTime": { @@ -214,75 +261,75 @@ "start_time": "2025-04-09T14:58:16.855084Z" } }, - "source": [ - "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)\n", - "print(all_daily_data_df)" - ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - " ts_code trade_date close turnover_rate turnover_rate_f \\\n", - "0 300285.SZ 20250409 16.61 2.1086 2.2506 \n", - "1 300458.SZ 20250409 44.48 9.9286 11.7046 \n", - "2 605090.SH 20250409 23.81 0.6834 1.1888 \n", - "3 688686.SH 20250409 69.52 1.6005 5.7492 \n", - "4 002057.SZ 20250409 7.18 4.7461 7.1088 \n", - "... ... ... ... ... ... \n", - "5390 301511.SZ 20250409 12.23 3.4040 4.6900 \n", - "5391 688355.SH 20250409 15.84 1.4154 4.4898 \n", - "5392 600019.SH 20250409 6.83 0.4729 1.2898 \n", - "5393 603507.SH 20250409 22.00 30.8936 42.4775 \n", - "5394 600886.SH 20250409 14.58 0.7795 2.4989 \n", + " ts_code trade_date close turnover_rate turnover_rate_f \\\n", + "0 002390.SZ 20250506 3.48 0.7696 1.3833 \n", + "1 300708.SZ 20250506 11.64 2.8994 3.2217 \n", + "2 301171.SZ 20250506 27.73 9.9120 10.7228 \n", + "3 301662.SZ 20250506 52.50 17.0926 17.0926 \n", + "4 001309.SZ 20250506 129.63 5.7123 6.3388 \n", + "... ... ... ... ... ... \n", + "5381 000551.SZ 20250506 12.39 2.0213 3.1432 \n", + "5382 600792.SH 20250506 3.17 0.8036 2.3531 \n", + "5383 300176.SZ 20250506 6.62 1.7530 2.5325 \n", + "5384 000016.SZ 20250506 5.57 13.9545 20.7669 \n", + "5385 300339.SZ 20250506 56.53 11.3184 11.9579 \n", "\n", - " volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n", - "0 1.11 29.0985 27.1266 2.5144 4.2913 4.1010 0.6020 \n", - "1 1.54 168.9309 168.9309 9.3966 12.3119 12.3119 0.3364 \n", - "2 1.00 11.8377 9.0427 1.7135 0.5819 0.6421 3.2226 \n", - "3 1.18 43.8690 61.1222 2.9105 9.0031 9.2377 NaN \n", - "4 1.35 19.8304 29.3370 1.7625 1.9656 2.0487 3.2191 \n", - "... ... ... ... ... ... ... ... \n", - "5390 1.36 58.1209 NaN 1.9116 1.1803 1.1129 0.3212 \n", - "5391 1.31 133.9017 29.7427 1.8103 3.6805 3.1067 NaN \n", - "5392 1.28 12.5281 15.7915 0.7518 0.4344 0.4503 4.4796 \n", - "5393 2.89 22.7537 22.7537 1.6401 1.0276 1.0276 1.3553 \n", - "5394 1.04 17.4059 16.1402 1.8424 2.0579 1.9930 3.1604 \n", + " volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n", + "0 1.02 66.7242 80.7223 1.0020 1.1214 1.1483 2.5321 \n", + "1 1.14 40.4767 37.8935 2.9328 2.8689 2.7390 1.3334 \n", + "2 0.95 56.4451 55.0565 3.6159 5.1380 4.3691 0.4867 \n", + "3 0.79 20.2143 23.5423 2.7909 2.0091 2.2310 NaN \n", + "4 1.02 59.8205 243.9150 8.6523 4.3939 4.0221 0.0702 \n", + "... ... ... ... ... ... ... ... \n", + "5381 1.20 19.9692 18.7030 1.8602 1.1939 1.1927 0.5650 \n", + "5382 0.89 NaN NaN 1.1995 0.5271 0.5777 2.1767 \n", + "5383 1.12 92.1443 96.5538 2.7208 1.4839 1.4627 0.0000 \n", + "5384 3.66 NaN NaN 5.6643 1.2067 1.1979 0.0000 \n", + "5385 2.40 279.4392 270.1037 12.8967 13.2445 13.0061 0.0000 \n", "\n", - " dv_ttm total_share float_share free_share total_mv \\\n", - "0 0.6020 9.970483e+04 8.039498e+04 75323.2612 1.656097e+06 \n", - "1 0.3364 6.332851e+04 5.179696e+04 43937.3622 2.816852e+06 \n", - "2 3.2226 6.492580e+04 6.426965e+04 36946.4646 1.545883e+06 \n", - "3 NaN 1.222355e+04 1.222355e+04 3402.7889 8.497809e+05 \n", - "4 3.2191 7.584828e+04 7.501396e+04 50081.8345 5.445906e+05 \n", - "... ... ... ... ... ... \n", - "5390 0.3212 6.303220e+04 3.736720e+04 27120.6014 7.708838e+05 \n", - "5391 NaN 1.239561e+04 1.239561e+04 3907.6756 1.963464e+05 \n", - "5392 4.4796 2.190864e+06 2.178208e+06 798651.6922 1.496360e+07 \n", - "5393 1.3553 1.843013e+04 1.843013e+04 13404.1045 4.054629e+05 \n", - "5394 3.1604 8.004494e+05 7.454180e+05 232532.2636 1.167055e+07 \n", + " dv_ttm total_share float_share free_share total_mv \\\n", + "0 2.5321 194385.1868 185230.5076 103045.2550 6.764605e+05 \n", + "1 1.3003 68015.2346 52260.4413 47031.2918 7.916973e+05 \n", + "2 0.4867 47188.5905 30877.5025 28542.8345 1.308540e+06 \n", + "3 NaN 8000.0000 1577.6325 1577.6325 4.200000e+05 \n", + "4 NaN 16177.0306 8763.6153 7897.4398 2.097028e+06 \n", + "... ... ... ... ... ... \n", + "5381 0.5650 40394.4205 40263.2044 25893.0990 5.004869e+05 \n", + "5382 2.1767 110992.3600 105986.8113 36194.3684 3.518458e+05 \n", + "5383 NaN 38728.0800 38728.0800 26808.2764 2.563799e+05 \n", + "5384 NaN 240794.5408 159659.3800 107284.6868 1.341226e+06 \n", + "5385 NaN 79641.0841 77768.6667 73609.4256 4.502110e+06 \n", "\n", " circ_mv is_st \n", - "0 1.335361e+06 False \n", - "1 2.303929e+06 False \n", - "2 1.530260e+06 False \n", - "3 8.497809e+05 False \n", - "4 5.386002e+05 False \n", + "0 6.446022e+05 False \n", + "1 6.083115e+05 False \n", + "2 8.562331e+05 False \n", + "3 8.282571e+04 False \n", + "4 1.136027e+06 False \n", "... ... ... \n", - "5390 4.570009e+05 False \n", - "5391 1.963464e+05 False \n", - "5392 1.487716e+07 False \n", - "5393 4.054629e+05 False \n", - "5394 1.086819e+07 False \n", + "5381 4.988611e+05 False \n", + "5382 3.359782e+05 False \n", + "5383 2.563799e+05 False \n", + "5384 8.893027e+05 False \n", + "5385 4.396263e+06 False \n", "\n", - "[5395 rows x 19 columns]\n" + "[5386 rows x 19 columns]\n" ] } ], - "execution_count": 5 + "source": [ + "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)\n", + "print(all_daily_data_df)" + ] }, { "cell_type": "code", + "execution_count": 6, "id": "28cb78d032671b20", "metadata": { "ExecuteTime": { @@ -290,74 +337,74 @@ "start_time": "2025-04-09T14:58:16.871184Z" } }, - "source": [ - "print(all_daily_data_df[all_daily_data_df['is_st']])" - ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ts_code trade_date close turnover_rate turnover_rate_f \\\n", - "85 002822.SZ 20250409 3.11 1.8467 1.9219 \n", - "123 603959.SH 20250409 3.27 1.7568 2.2420 \n", - "181 688282.SH 20250409 42.59 2.5546 3.0570 \n", - "259 600777.SH 20250409 2.66 1.9331 2.4597 \n", - "283 002052.SZ 20250409 6.15 1.5326 2.5481 \n", + "23 000820.SZ 20250506 2.04 11.8279 12.1552 \n", + "33 300506.SZ 20250506 3.27 0.6104 0.8597 \n", + "82 839680.BJ 20250506 7.25 34.6648 39.7153 \n", + "105 300159.SZ 20250506 1.83 3.6351 4.0740 \n", + "114 300301.SZ 20250506 1.82 1.3707 1.4819 \n", "... ... ... ... ... ... \n", - "5286 002602.SZ 20250409 5.93 3.0376 3.5162 \n", - "5345 002501.SZ 20250409 1.89 4.3252 5.5834 \n", - "5364 600387.SH 20250409 2.34 0.0904 0.1163 \n", - "5366 002656.SZ 20250409 1.95 2.7047 3.0210 \n", - "5378 300013.SZ 20250409 3.57 2.8370 3.1107 \n", + "5259 600243.SH 20250506 2.43 6.7484 8.1172 \n", + "5264 002528.SZ 20250506 2.35 2.0592 4.3961 \n", + "5294 300044.SZ 20250506 3.31 12.8866 13.4490 \n", + "5324 300097.SZ 20250506 4.36 2.5814 3.0107 \n", + "5345 600200.SH 20250506 3.04 0.2013 0.2433 \n", "\n", - " volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n", - "85 2.59 NaN NaN 1.2023 0.5923 0.7314 0.0 \n", - "123 2.22 NaN NaN 4.3282 0.7749 1.1811 0.0 \n", - "181 1.07 NaN NaN 2.9277 172.3150 21.9335 NaN \n", - "259 0.96 6.9694 7.6204 0.8381 2.0443 2.0567 0.0 \n", - "283 0.74 NaN NaN NaN 19.5551 17.1988 0.0 \n", - "... ... ... ... ... ... ... ... \n", - "5286 3.30 84.3318 49.2129 1.6993 3.3267 2.3228 0.0 \n", - "5345 1.75 NaN NaN 7.0441 14.0701 19.7111 0.0 \n", - "5364 1.33 NaN NaN 0.3818 0.5148 0.8454 0.0 \n", - "5366 1.75 NaN NaN 3.8456 4.7986 5.9354 0.0 \n", - "5378 0.90 NaN NaN 8.2438 4.8281 4.2666 0.0 \n", + " volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n", + "23 3.99 NaN NaN 9.0141 10.6452 13.5427 0.0 \n", + "33 0.77 NaN NaN 28.5038 19.4588 19.2499 0.0 \n", + "82 1.96 NaN NaN 7.4242 9.3299 11.0451 NaN \n", + "105 1.34 NaN NaN NaN 4.1337 4.1261 0.0 \n", + "114 1.22 NaN NaN 120.9449 2.9900 3.1074 0.0 \n", + "... ... ... ... ... ... ... ... \n", + "5259 0.73 NaN NaN 1.6685 4.5071 4.6210 0.0 \n", + "5264 1.52 NaN NaN 15.5269 2.9812 3.6083 0.0 \n", + "5294 2.91 NaN NaN 24.3171 17.6463 26.1361 0.0 \n", + "5324 0.99 NaN NaN 2.7137 3.2758 3.8102 0.0 \n", + "5345 0.05 30.7156 NaN 1.2351 1.3543 1.7858 0.0 \n", "\n", - " dv_ttm total_share float_share free_share total_mv \\\n", - "85 NaN 73467.1821 56245.3696 54046.3738 2.284829e+05 \n", - "123 NaN 49029.8992 49029.8992 38419.3842 1.603278e+05 \n", - "181 NaN 8800.0000 3652.0000 3051.8414 3.747920e+05 \n", - "259 NaN 680049.5825 636615.2391 500325.8436 1.808932e+06 \n", - "283 NaN 74595.9694 74595.5944 44867.2806 4.587652e+05 \n", - "... ... ... ... ... ... \n", - "5286 NaN 745255.6968 687870.8273 594244.1179 4.419366e+06 \n", - "5345 NaN 355000.0000 354999.9006 274999.9006 6.709500e+05 \n", - "5364 NaN 46814.4464 40404.8492 31411.4405 1.095458e+05 \n", - "5366 NaN 71251.9844 60945.7555 54564.8212 1.389414e+05 \n", - "5378 NaN 55835.8894 44606.0865 40680.8215 1.993341e+05 \n", + " dv_ttm total_share float_share free_share total_mv circ_mv \\\n", + "23 NaN 64362.0201 29403.1899 28611.4718 131298.5210 59982.5074 \n", + "33 NaN 69559.6569 57572.5450 40880.9749 227460.0781 188262.2222 \n", + "82 NaN 6699.9900 4689.3344 4093.0077 48574.9275 33997.6744 \n", + "105 NaN 150196.5923 147183.9203 131325.6306 274859.7639 269346.5741 \n", + "114 NaN 82986.8769 78987.6719 73061.8561 151036.1160 143757.5629 \n", + "... ... ... ... ... ... ... \n", + "5259 NaN 43885.0000 43885.0000 36485.0000 106640.5500 106640.5500 \n", + "5264 NaN 119867.5082 104974.0608 49171.2582 281688.6443 246689.0429 \n", + "5294 NaN 76386.9228 76375.7508 73182.1277 252840.7145 252803.7351 \n", + "5324 NaN 28854.9669 27000.9948 23150.5534 125807.6557 117724.3373 \n", + "5345 NaN 71215.1832 71087.9480 58808.3718 216494.1569 216107.3619 \n", "\n", - " circ_mv is_st \n", - "85 1.749231e+05 True \n", - "123 1.603278e+05 True \n", - "181 1.555387e+05 True \n", - "259 1.693397e+06 True \n", - "283 4.587629e+05 True \n", - "... ... ... \n", - "5286 4.079074e+06 True \n", - "5345 6.709498e+05 True \n", - "5364 9.454735e+04 True \n", - "5366 1.188442e+05 True \n", - "5378 1.592437e+05 True \n", + " is_st \n", + "23 True \n", + "33 True \n", + "82 True \n", + "105 True \n", + "114 True \n", + "... ... \n", + "5259 True \n", + "5264 True \n", + "5294 True \n", + "5324 True \n", + "5345 True \n", "\n", - "[106 rows x 19 columns]\n" + "[196 rows x 19 columns]\n" ] } ], - "execution_count": 6 + "source": [ + "print(all_daily_data_df[all_daily_data_df['is_st']])" + ] }, { "cell_type": "code", + "execution_count": 7, "id": "692b58674b7462c9", "metadata": { "ExecuteTime": { @@ -365,12 +412,6 @@ "start_time": "2025-04-09T14:58:16.903459Z" } }, - "source": [ - "# 将数据保存为 HDF5 文件(table 格式)\n", - "all_daily_data_df.to_hdf(h5_filename, key='daily_basic', mode='a', format='table', append=True, data_columns=True)\n", - "\n", - "print(\"所有每日基础数据获取并保存完毕!\")\n" - ], "outputs": [ { "name": "stdout", @@ -380,10 +421,16 @@ ] } ], - "execution_count": 7 + "source": [ + "# 将数据保存为 HDF5 文件(table 格式)\n", + "all_daily_data_df.to_hdf(h5_filename, key='daily_basic', mode='a', format='table', append=True, data_columns=True)\n", + "\n", + "print(\"所有每日基础数据获取并保存完毕!\")\n" + ] }, { "cell_type": "code", + "execution_count": 8, "id": "d7a773fc20293477", "metadata": { "ExecuteTime": { @@ -391,18 +438,13 @@ "start_time": "2025-04-09T14:58:17.816332Z" } }, - "source": [ - "with pd.HDFStore(h5_filename, mode='r') as store:\n", - " df = store[key][['ts_code', 'trade_date', 'is_st']]\n", - " print(df.info())" - ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", - "Index: 8518306 entries, 0 to 5394\n", + "Index: 8604524 entries, 0 to 5385\n", "Data columns (total 3 columns):\n", " # Column Dtype \n", "--- ------ ----- \n", @@ -410,17 +452,21 @@ " 1 trade_date object\n", " 2 is_st bool \n", "dtypes: bool(1), object(2)\n", - "memory usage: 203.1+ MB\n", + "memory usage: 205.1+ MB\n", "None\n" ] } ], - "execution_count": 8 + "source": [ + "with pd.HDFStore(h5_filename, mode='r') as store:\n", + " df = store[key][['ts_code', 'trade_date', 'is_st']]\n", + " print(df.info())" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "new_trader", "language": "python", "name": "python3" }, diff --git a/main/data/update/update_daily_data.ipynb b/main/data/update/update_daily_data.ipynb index 6a777ba..f9e0207 100644 --- a/main/data/update/update_daily_data.ipynb +++ b/main/data/update/update_daily_data.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "f294ba92-512a-48e6-bbaa-e19401c691ba", "metadata": { "ExecuteTime": { @@ -9,6 +10,7 @@ "start_time": "2025-04-09T15:12:26.421811Z" } }, + "outputs": [], "source": [ "import tushare as ts\n", "import pandas as pd\n", @@ -18,12 +20,11 @@ "\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "code", + "execution_count": 2, "id": "d31855fab4f8b1bc", "metadata": { "ExecuteTime": { @@ -31,6 +32,26 @@ "start_time": "2025-04-09T15:12:27.379199Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 8670620 entries, 0 to 80410\n", + "Data columns (total 2 columns):\n", + " # Column Dtype \n", + "--- ------ ----- \n", + " 0 ts_code object\n", + " 1 trade_date object\n", + "dtypes: object(2)\n", + "memory usage: 198.5+ MB\n", + "None\n", + "20250430\n", + "20250506\n" + ] + } + ], "source": [ "h5_filename = '../../../data/daily_data.h5'\n", "key = '/daily_data'\n", @@ -41,90 +62,24 @@ " max_date = df['trade_date'].max()\n", "\n", "print(max_date)\n", - "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250420')\n", + "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250620')\n", "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", "start_date = min(trade_dates)\n", "print(start_date)" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Index: 8584848 entries, 0 to 5374\n", - "Data columns (total 2 columns):\n", - " # Column Dtype \n", - "--- ------ ----- \n", - " 0 ts_code object\n", - " 1 trade_date object\n", - "dtypes: object(2)\n", - "memory usage: 196.5+ MB\n", - "None\n", - "20250408\n", - "20250409\n" - ] - } - ], - "execution_count": 2 + ] }, { "cell_type": "code", + "execution_count": 3, "id": "f403cc963e1d39b", "metadata": { - "scrolled": true, "ExecuteTime": { "end_time": "2025-04-09T15:25:31.420128Z", "start_time": "2025-04-09T15:12:34.587041Z" - } + }, + "scrolled": true }, - "source": [ - "from concurrent.futures import ThreadPoolExecutor, as_completed\n", - "\n", - "# 读取本地保存的股票列表 CSV 文件(假设文件名为 stocks_data.csv)\n", - "stocks_df = pd.read_csv('../../../stocks_list.csv', encoding='utf-8-sig')\n", - "\n", - "# 用于存放所有股票的日线数据(每次获取的 DataFrame)\n", - "daily_data_list = []\n", - "\n", - "# API 调用计数和时间控制变量\n", - "api_call_count = 0\n", - "batch_start_time = time.time()\n", - "\n", - "\n", - "def get_data(ts_code):\n", - " daily_data = ts.pro_bar(ts_code=ts_code, adj='hfq', start_date=start_date)\n", - " # 如果返回数据不为空,则添加一列标识股票代码\n", - " if daily_data is not None and not daily_data.empty:\n", - " return daily_data\n", - "\n", - "\n", - "# 循环遍历每个股票代码并获取数据\n", - "with ThreadPoolExecutor(max_workers=2) as executor:\n", - " future_to_date = {executor.submit(get_data, row['ts_code']): row['ts_code'] for idx, row in stocks_df.iterrows()}\n", - "\n", - " for future in as_completed(future_to_date):\n", - " ts_code = future_to_date[future]\n", - " try:\n", - " result = future.result()\n", - " daily_data_list.append(result)\n", - " print(f\"任务 {ts_code} 完成\")\n", - " except Exception as e:\n", - " print(f\"获取 {ts_code} 数据时出错: {e}\")\n", - " # 计数一次 API 调用\n", - " api_call_count += 1\n", - "\n", - " # 每调用300次,检查时间是否少于1分钟,如果少于则等待剩余时间\n", - " if api_call_count % 300 == 0:\n", - " elapsed = time.time() - batch_start_time\n", - " if elapsed < 60:\n", - " sleep_time = 60 - elapsed\n", - " print(f\"已调用300次API,等待 {sleep_time:.2f} 秒以满足速率限制...\")\n", - " time.sleep(sleep_time)\n", - " # 重置批次起始时间\n", - " batch_start_time = time.time()\n" - ], "outputs": [ { "name": "stdout", @@ -135,12 +90,12 @@ "任务 000004.SZ 完成\n", "任务 000006.SZ 完成\n", "任务 000007.SZ 完成\n", - "任务 000009.SZ 完成\n", "任务 000008.SZ 完成\n", - "任务 000011.SZ 完成\n", + "任务 000009.SZ 完成\n", "任务 000010.SZ 完成\n", - "任务 000014.SZ 完成\n", + "任务 000011.SZ 完成\n", "任务 000012.SZ 完成\n", + "任务 000014.SZ 完成\n", "任务 000016.SZ 完成\n", "任务 000017.SZ 完成\n", "任务 000019.SZ 完成\n", @@ -149,38 +104,38 @@ "任务 000025.SZ 完成\n", "任务 000026.SZ 完成\n", "任务 000027.SZ 完成\n", - "任务 000029.SZ 完成\n", "任务 000028.SZ 完成\n", + "任务 000029.SZ 完成\n", "任务 000030.SZ 完成\n", "任务 000031.SZ 完成\n", - "任务 000034.SZ 完成\n", "任务 000032.SZ 完成\n", + "任务 000034.SZ 完成\n", "任务 000035.SZ 完成\n", "任务 000036.SZ 完成\n", - "任务 000039.SZ 完成\n", "任务 000037.SZ 完成\n", + "任务 000039.SZ 完成\n", "任务 000040.SZ 完成\n", "任务 000042.SZ 完成\n", - "任务 000048.SZ 完成\n", "任务 000045.SZ 完成\n", + "任务 000048.SZ 完成\n", "任务 000049.SZ 完成\n", "任务 000050.SZ 完成\n", - "任务 000056.SZ 完成\n", "任务 000055.SZ 完成\n", + "任务 000056.SZ 完成\n", "任务 000058.SZ 完成\n", "任务 000059.SZ 完成\n", - "任务 000061.SZ 完成\n", "任务 000060.SZ 完成\n", - "任务 000063.SZ 完成\n", + "任务 000061.SZ 完成\n", "任务 000062.SZ 完成\n", + "任务 000063.SZ 完成\n", "任务 000065.SZ 完成\n", "任务 000066.SZ 完成\n", - "任务 000068.SZ 完成\n", "任务 000069.SZ 完成\n", + "任务 000068.SZ 完成\n", "任务 000070.SZ 完成\n", "任务 000078.SZ 完成\n", - "任务 000088.SZ 完成\n", "任务 000089.SZ 完成\n", + "任务 000088.SZ 完成\n", "任务 000090.SZ 完成\n", "任务 000096.SZ 完成\n", "任务 000099.SZ 完成\n", @@ -195,42 +150,42 @@ "任务 000166.SZ 完成\n", "任务 000301.SZ 完成\n", "任务 000333.SZ 完成\n", - "任务 000400.SZ 完成\n", "任务 000338.SZ 完成\n", - "任务 000402.SZ 完成\n", + "任务 000400.SZ 完成\n", "任务 000401.SZ 完成\n", + "任务 000402.SZ 完成\n", "任务 000403.SZ 完成\n", "任务 000404.SZ 完成\n", - "任务 000408.SZ 完成\n", "任务 000407.SZ 完成\n", + "任务 000408.SZ 完成\n", "任务 000409.SZ 完成\n", "任务 000410.SZ 完成\n", - "任务 000415.SZ 完成\n", "任务 000411.SZ 完成\n", - "任务 000419.SZ 完成\n", + "任务 000415.SZ 完成\n", "任务 000417.SZ 完成\n", + "任务 000419.SZ 完成\n", "任务 000420.SZ 完成\n", "任务 000421.SZ 完成\n", - "任务 000423.SZ 完成\n", "任务 000422.SZ 完成\n", + "任务 000423.SZ 完成\n", "任务 000425.SZ 完成\n", "任务 000426.SZ 完成\n", "任务 000428.SZ 完成\n", "任务 000429.SZ 完成\n", - "任务 000488.SZ 完成\n", "任务 000430.SZ 完成\n", + "任务 000488.SZ 完成\n", "任务 000498.SZ 完成\n", "任务 000501.SZ 完成\n", "任务 000503.SZ 完成\n", "任务 000504.SZ 完成\n", - "任务 000506.SZ 完成\n", "任务 000505.SZ 完成\n", + "任务 000506.SZ 完成\n", "任务 000507.SZ 完成\n", "任务 000509.SZ 完成\n", "任务 000510.SZ 完成\n", "任务 000513.SZ 完成\n", - "任务 000516.SZ 完成\n", "任务 000514.SZ 完成\n", + "任务 000516.SZ 完成\n", "任务 000517.SZ 完成\n", "任务 000518.SZ 完成\n", "任务 000519.SZ 完成\n", @@ -267,12 +222,12 @@ "任务 000557.SZ 完成\n", "任务 000558.SZ 完成\n", "任务 000559.SZ 完成\n", - "任务 000561.SZ 完成\n", "任务 000560.SZ 完成\n", + "任务 000561.SZ 完成\n", "任务 000563.SZ 完成\n", "任务 000564.SZ 完成\n", - "任务 000566.SZ 完成\n", "任务 000565.SZ 完成\n", + "任务 000566.SZ 完成\n", "任务 000567.SZ 完成\n", "任务 000568.SZ 完成\n", "任务 000570.SZ 完成\n", @@ -280,27 +235,27 @@ "任务 000572.SZ 完成\n", "任务 000573.SZ 完成\n", "任务 000576.SZ 完成\n", - "任务 000581.SZ 完成\n", "任务 000582.SZ 完成\n", + "任务 000581.SZ 完成\n", "任务 000584.SZ 完成\n", "任务 000586.SZ 完成\n", "任务 000589.SZ 完成\n", "任务 000590.SZ 完成\n", + "任务 000592.SZ 完成\n", "任务 000591.SZ 完成\n", "任务 000593.SZ 完成\n", - "任务 000592.SZ 完成\n", - "任务 000596.SZ 完成\n", "任务 000595.SZ 完成\n", + "任务 000596.SZ 完成\n", "任务 000597.SZ 完成\n", "任务 000598.SZ 完成\n", "任务 000599.SZ 完成\n", "任务 000600.SZ 完成\n", - "任务 000603.SZ 完成\n", "任务 000601.SZ 完成\n", + "任务 000603.SZ 完成\n", "任务 000605.SZ 完成\n", "任务 000607.SZ 完成\n", - "任务 000609.SZ 完成\n", "任务 000608.SZ 完成\n", + "任务 000609.SZ 完成\n", "任务 000610.SZ 完成\n", "任务 000612.SZ 完成\n", "任务 000615.SZ 完成\n", @@ -340,19 +295,19 @@ "任务 000676.SZ 完成\n", "任务 000677.SZ 完成\n", "任务 000678.SZ 完成\n", - "任务 000679.SZ 完成\n", "任务 000680.SZ 完成\n", + "任务 000679.SZ 完成\n", "任务 000681.SZ 完成\n", "任务 000682.SZ 完成\n", "任务 000683.SZ 完成\n", "任务 000685.SZ 完成\n", "任务 000686.SZ 完成\n", - "任务 000688.SZ 完成\n", "任务 000690.SZ 完成\n", + "任务 000688.SZ 完成\n", "任务 000691.SZ 完成\n", "任务 000692.SZ 完成\n", - "任务 000695.SZ 完成\n", "任务 000697.SZ 完成\n", + "任务 000695.SZ 完成\n", "任务 000698.SZ 完成\n", "任务 000700.SZ 完成\n", "任务 000701.SZ 完成\n", @@ -361,20 +316,20 @@ "任务 000705.SZ 完成\n", "任务 000707.SZ 完成\n", "任务 000708.SZ 完成\n", - "任务 000709.SZ 完成\n", "任务 000710.SZ 完成\n", - "任务 000711.SZ 完成\n", + "任务 000709.SZ 完成\n", "任务 000712.SZ 完成\n", + "任务 000711.SZ 完成\n", "任务 000713.SZ 完成\n", "任务 000715.SZ 完成\n", "任务 000716.SZ 完成\n", "任务 000717.SZ 完成\n", "任务 000718.SZ 完成\n", "任务 000719.SZ 完成\n", - "任务 000720.SZ 完成\n", "任务 000721.SZ 完成\n", - "任务 000722.SZ 完成\n", + "任务 000720.SZ 完成\n", "任务 000723.SZ 完成\n", + "任务 000722.SZ 完成\n", "任务 000725.SZ 完成\n", "任务 000726.SZ 完成\n", "任务 000727.SZ 完成\n", @@ -407,20 +362,20 @@ "任务 000779.SZ 完成\n", "任务 000782.SZ 完成\n", "任务 000783.SZ 完成\n", - "任务 000786.SZ 完成\n", "任务 000785.SZ 完成\n", - "任务 000789.SZ 完成\n", + "任务 000786.SZ 完成\n", "任务 000788.SZ 完成\n", + "任务 000789.SZ 完成\n", "任务 000790.SZ 完成\n", "任务 000791.SZ 完成\n", "任务 000792.SZ 完成\n", "任务 000793.SZ 完成\n", "任务 000795.SZ 完成\n", "任务 000796.SZ 完成\n", - "任务 000798.SZ 完成\n", "任务 000797.SZ 完成\n", - "任务 000800.SZ 完成\n", + "任务 000798.SZ 完成\n", "任务 000799.SZ 完成\n", + "任务 000800.SZ 完成\n", "任务 000801.SZ 完成\n", "任务 000802.SZ 完成\n", "任务 000803.SZ 完成\n", @@ -435,8 +390,8 @@ "任务 000818.SZ 完成\n", "任务 000819.SZ 完成\n", "任务 000820.SZ 完成\n", - "任务 000821.SZ 完成\n", "任务 000822.SZ 完成\n", + "任务 000821.SZ 完成\n", "任务 000823.SZ 完成\n", "任务 000825.SZ 完成\n", "任务 000826.SZ 完成\n", @@ -449,34 +404,34 @@ "任务 000838.SZ 完成\n", "任务 000848.SZ 完成\n", "任务 000839.SZ 完成\n", - "任务 000850.SZ 完成\n", "任务 000851.SZ 完成\n", + "任务 000850.SZ 完成\n", "任务 000852.SZ 完成\n", "任务 000856.SZ 完成\n", - "任务 000859.SZ 完成\n", "任务 000858.SZ 完成\n", + "任务 000859.SZ 完成\n", "任务 000860.SZ 完成\n", "任务 000862.SZ 完成\n", "任务 000863.SZ 完成\n", "任务 000868.SZ 完成\n", "任务 000869.SZ 完成\n", "任务 000875.SZ 完成\n", - "任务 000876.SZ 完成\n", "任务 000877.SZ 完成\n", - "任务 000878.SZ 完成\n", + "任务 000876.SZ 完成\n", "任务 000880.SZ 完成\n", + "任务 000878.SZ 完成\n", "任务 000881.SZ 完成\n", "任务 000882.SZ 完成\n", "任务 000883.SZ 完成\n", "任务 000885.SZ 完成\n", "任务 000886.SZ 完成\n", "任务 000887.SZ 完成\n", - "任务 000889.SZ 完成\n", "任务 000888.SZ 完成\n", - "任务 000892.SZ 完成\n", + "任务 000889.SZ 完成\n", "任务 000890.SZ 完成\n", - "任务 000895.SZ 完成\n", + "任务 000892.SZ 完成\n", "任务 000893.SZ 完成\n", + "任务 000895.SZ 完成\n", "任务 000897.SZ 完成\n", "任务 000898.SZ 完成\n", "任务 000899.SZ 完成\n", @@ -515,40 +470,40 @@ "任务 000948.SZ 完成\n", "任务 000949.SZ 完成\n", "任务 000950.SZ 完成\n", - "任务 000952.SZ 完成\n", "任务 000951.SZ 完成\n", - "任务 000955.SZ 完成\n", "任务 000953.SZ 完成\n", - "任务 000958.SZ 完成\n", + "任务 000952.SZ 完成\n", + "任务 000955.SZ 完成\n", "任务 000957.SZ 完成\n", - "任务 000960.SZ 完成\n", "任务 000959.SZ 完成\n", + "任务 000958.SZ 完成\n", + "任务 000960.SZ 完成\n", "任务 000962.SZ 完成\n", + "任务 000965.SZ 完成\n", "任务 000963.SZ 完成\n", "任务 000966.SZ 完成\n", - "任务 000965.SZ 完成\n", "任务 000967.SZ 完成\n", "任务 000968.SZ 完成\n", - "任务 000970.SZ 完成\n", "任务 000969.SZ 完成\n", + "任务 000970.SZ 完成\n", "任务 000972.SZ 完成\n", "任务 000973.SZ 完成\n", - "任务 000977.SZ 完成\n", "任务 000975.SZ 完成\n", + "任务 000977.SZ 完成\n", "任务 000978.SZ 完成\n", "任务 000980.SZ 完成\n", "任务 000981.SZ 完成\n", "任务 000983.SZ 完成\n", - "任务 000987.SZ 完成\n", "任务 000985.SZ 完成\n", - "任务 000989.SZ 完成\n", + "任务 000987.SZ 完成\n", "任务 000988.SZ 完成\n", - "任务 000993.SZ 完成\n", + "任务 000989.SZ 完成\n", "任务 000990.SZ 完成\n", - "任务 000995.SZ 完成\n", + "任务 000993.SZ 完成\n", "任务 000997.SZ 完成\n", - "任务 000999.SZ 完成\n", + "任务 000995.SZ 完成\n", "任务 000998.SZ 完成\n", + "任务 000999.SZ 完成\n", "任务 001201.SZ 完成\n", "任务 001202.SZ 完成\n", "任务 001205.SZ 完成\n", @@ -559,12 +514,12 @@ "任务 001208.SZ 完成\n", "任务 001210.SZ 完成\n", "任务 001211.SZ 完成\n", - "任务 001213.SZ 完成\n", "任务 001212.SZ 完成\n", - "任务 001216.SZ 完成\n", "任务 001215.SZ 完成\n", - "任务 001218.SZ 完成\n", + "任务 001213.SZ 完成\n", "任务 001217.SZ 完成\n", + "任务 001216.SZ 完成\n", + "任务 001218.SZ 完成\n", "任务 001219.SZ 完成\n", "任务 001222.SZ 完成\n", "任务 001223.SZ 完成\n", @@ -603,8 +558,8 @@ "任务 001299.SZ 完成\n", "任务 001300.SZ 完成\n", "任务 001301.SZ 完成\n", - "任务 001306.SZ 完成\n", "任务 001308.SZ 完成\n", + "任务 001306.SZ 完成\n", "任务 001309.SZ 完成\n", "任务 001311.SZ 完成\n", "任务 001313.SZ 完成\n", @@ -613,20 +568,20 @@ "任务 001317.SZ 完成\n", "任务 001318.SZ 完成\n", "任务 001319.SZ 完成\n", - "任务 001322.SZ 完成\n", "任务 001323.SZ 完成\n", - "任务 001324.SZ 完成\n", + "任务 001322.SZ 完成\n", "任务 001326.SZ 完成\n", - "任务 001328.SZ 完成\n", + "任务 001324.SZ 完成\n", "任务 001330.SZ 完成\n", + "任务 001328.SZ 完成\n", "任务 001331.SZ 完成\n", "任务 001332.SZ 完成\n", "任务 001333.SZ 完成\n", "任务 001336.SZ 完成\n", "任务 001337.SZ 完成\n", "任务 001338.SZ 完成\n", - "任务 001356.SZ 完成\n", "任务 001339.SZ 完成\n", + "任务 001356.SZ 完成\n", "任务 001358.SZ 完成\n", "任务 001359.SZ 完成\n", "任务 001360.SZ 完成\n", @@ -634,8 +589,8 @@ "任务 001367.SZ 完成\n", "任务 001368.SZ 完成\n", "任务 001373.SZ 完成\n", - "任务 001376.SZ 完成\n", "任务 001378.SZ 完成\n", + "任务 001376.SZ 完成\n", "任务 001379.SZ 完成\n", "任务 001380.SZ 完成\n", "任务 001387.SZ 完成\n", @@ -644,24 +599,24 @@ "任务 001395.SZ 完成\n", "任务 001696.SZ 完成\n", "任务 001872.SZ 完成\n", - "任务 001896.SZ 完成\n", "任务 001914.SZ 完成\n", - "任务 001965.SZ 完成\n", + "任务 001896.SZ 完成\n", "任务 001979.SZ 完成\n", + "任务 001965.SZ 完成\n", "任务 002001.SZ 完成\n", "任务 002003.SZ 完成\n", "任务 002004.SZ 完成\n", "任务 002005.SZ 完成\n", "任务 002006.SZ 完成\n", "任务 002007.SZ 完成\n", - "任务 002008.SZ 完成\n", "任务 002009.SZ 完成\n", - "任务 002011.SZ 完成\n", + "任务 002008.SZ 完成\n", "任务 002010.SZ 完成\n", - "任务 002014.SZ 完成\n", + "任务 002011.SZ 完成\n", "任务 002012.SZ 完成\n", - "任务 002016.SZ 完成\n", + "任务 002014.SZ 完成\n", "任务 002015.SZ 完成\n", + "任务 002016.SZ 完成\n", "任务 002017.SZ 完成\n", "任务 002019.SZ 完成\n", "任务 002020.SZ 完成\n", @@ -670,10 +625,10 @@ "任务 002023.SZ 完成\n", "任务 002024.SZ 完成\n", "任务 002025.SZ 完成\n", - "任务 002026.SZ 完成\n", "任务 002027.SZ 完成\n", - "任务 002028.SZ 完成\n", + "任务 002026.SZ 完成\n", "任务 002029.SZ 完成\n", + "任务 002028.SZ 完成\n", "任务 002030.SZ 完成\n", "任务 002031.SZ 完成\n", "任务 002032.SZ 完成\n", @@ -706,14 +661,14 @@ "任务 002059.SZ 完成\n", "任务 002060.SZ 完成\n", "任务 002061.SZ 完成\n", - "任务 002062.SZ 完成\n", "任务 002063.SZ 完成\n", + "任务 002062.SZ 完成\n", "任务 002064.SZ 完成\n", "任务 002065.SZ 完成\n", - "任务 002066.SZ 完成\n", "任务 002067.SZ 完成\n", - "任务 002068.SZ 完成\n", + "任务 002066.SZ 完成\n", "任务 002069.SZ 完成\n", + "任务 002068.SZ 完成\n", "任务 002072.SZ 完成\n", "任务 002073.SZ 完成\n", "任务 002074.SZ 完成\n", @@ -731,10 +686,10 @@ "任务 002086.SZ 完成\n", "任务 002088.SZ 完成\n", "任务 002090.SZ 完成\n", - "任务 002092.SZ 完成\n", "任务 002091.SZ 完成\n", - "任务 002094.SZ 完成\n", + "任务 002092.SZ 完成\n", "任务 002093.SZ 完成\n", + "任务 002094.SZ 完成\n", "任务 002095.SZ 完成\n", "任务 002096.SZ 完成\n", "任务 002097.SZ 完成\n", @@ -743,8 +698,8 @@ "任务 002100.SZ 完成\n", "任务 002101.SZ 完成\n", "任务 002102.SZ 完成\n", - "任务 002104.SZ 完成\n", "任务 002103.SZ 完成\n", + "任务 002104.SZ 完成\n", "任务 002105.SZ 完成\n", "任务 002106.SZ 完成\n", "任务 002107.SZ 完成\n", @@ -754,10 +709,10 @@ "任务 002111.SZ 完成\n", "任务 002112.SZ 完成\n", "任务 002114.SZ 完成\n", - "任务 002115.SZ 完成\n", "任务 002116.SZ 完成\n", - "任务 002117.SZ 完成\n", + "任务 002115.SZ 完成\n", "任务 002119.SZ 完成\n", + "任务 002117.SZ 完成\n", "任务 002120.SZ 完成\n", "任务 002121.SZ 完成\n", "任务 002122.SZ 完成\n", @@ -767,35 +722,35 @@ "任务 002126.SZ 完成\n", "任务 002127.SZ 完成\n", "任务 002128.SZ 完成\n", - "任务 002130.SZ 完成\n", "任务 002129.SZ 完成\n", + "任务 002130.SZ 完成\n", "任务 002131.SZ 完成\n", "任务 002132.SZ 完成\n", "任务 002133.SZ 完成\n", "任务 002134.SZ 完成\n", - "任务 002136.SZ 完成\n", "任务 002135.SZ 完成\n", - "任务 002138.SZ 完成\n", + "任务 002136.SZ 完成\n", "任务 002137.SZ 完成\n", + "任务 002138.SZ 完成\n", "任务 002139.SZ 完成\n", "任务 002140.SZ 完成\n", "任务 002141.SZ 完成\n", "任务 002142.SZ 完成\n", - "任务 002145.SZ 完成\n", "任务 002144.SZ 完成\n", - "任务 002148.SZ 完成\n", + "任务 002145.SZ 完成\n", "任务 002146.SZ 完成\n", + "任务 002148.SZ 完成\n", "任务 002149.SZ 完成\n", "任务 002150.SZ 完成\n", - "任务 002152.SZ 完成\n", "任务 002151.SZ 完成\n", + "任务 002152.SZ 完成\n", "任务 002153.SZ 完成\n", "任务 002154.SZ 完成\n", "任务 002155.SZ 完成\n", "任务 002156.SZ 完成\n", "任务 002157.SZ 完成\n", - "任务 002158.SZ 完成\n", "任务 002159.SZ 完成\n", + "任务 002158.SZ 完成\n", "任务 002160.SZ 完成\n", "任务 002161.SZ 完成\n", "任务 002162.SZ 完成\n", @@ -827,6 +782,7 @@ "任务 002188.SZ 完成\n", "任务 002189.SZ 完成\n", "任务 002190.SZ 完成\n", + "任务 002191.SZ 完成\n", "任务 002192.SZ 完成\n", "任务 002193.SZ 完成\n", "任务 002194.SZ 完成\n", @@ -883,7 +839,6 @@ "任务 002246.SZ 完成\n", "任务 002247.SZ 完成\n", "任务 002248.SZ 完成\n", - "任务 002191.SZ 完成\n", "任务 002249.SZ 完成\n", "任务 002250.SZ 完成\n", "任务 002251.SZ 完成\n", @@ -989,10 +944,10 @@ "任务 002358.SZ 完成\n", "任务 002360.SZ 完成\n", "任务 002361.SZ 完成\n", - "任务 002363.SZ 完成\n", "任务 002362.SZ 完成\n", - "任务 002365.SZ 完成\n", + "任务 002363.SZ 完成\n", "任务 002364.SZ 完成\n", + "任务 002365.SZ 完成\n", "任务 002366.SZ 完成\n", "任务 002367.SZ 完成\n", "任务 002368.SZ 完成\n", @@ -1026,16 +981,16 @@ "任务 002396.SZ 完成\n", "任务 002397.SZ 完成\n", "任务 002398.SZ 完成\n", - "任务 002400.SZ 完成\n", "任务 002399.SZ 完成\n", - "任务 002402.SZ 完成\n", + "任务 002400.SZ 完成\n", "任务 002401.SZ 完成\n", + "任务 002402.SZ 完成\n", "任务 002403.SZ 完成\n", "任务 002404.SZ 完成\n", - "任务 002406.SZ 完成\n", "任务 002405.SZ 完成\n", - "任务 002408.SZ 完成\n", + "任务 002406.SZ 完成\n", "任务 002407.SZ 完成\n", + "任务 002408.SZ 完成\n", "任务 002409.SZ 完成\n", "任务 002410.SZ 完成\n", "任务 002412.SZ 完成\n", @@ -1046,18 +1001,18 @@ "任务 002418.SZ 完成\n", "任务 002419.SZ 完成\n", "任务 002420.SZ 完成\n", - "任务 002422.SZ 完成\n", "任务 002421.SZ 完成\n", - "任务 002424.SZ 完成\n", + "任务 002422.SZ 完成\n", "任务 002423.SZ 完成\n", + "任务 002424.SZ 完成\n", "任务 002425.SZ 完成\n", "任务 002426.SZ 完成\n", "任务 002427.SZ 完成\n", "任务 002428.SZ 完成\n", "任务 002429.SZ 完成\n", "任务 002430.SZ 完成\n", - "任务 002432.SZ 完成\n", "任务 002431.SZ 完成\n", + "任务 002432.SZ 完成\n", "任务 002434.SZ 完成\n", "任务 002436.SZ 完成\n", "任务 002437.SZ 完成\n", @@ -1073,8 +1028,8 @@ "任务 002448.SZ 完成\n", "任务 002449.SZ 完成\n", "任务 002451.SZ 完成\n", - "任务 002452.SZ 完成\n", "任务 002453.SZ 完成\n", + "任务 002452.SZ 完成\n", "任务 002454.SZ 完成\n", "任务 002455.SZ 完成\n", "任务 002456.SZ 完成\n", @@ -1110,12 +1065,12 @@ "任务 002489.SZ 完成\n", "任务 002490.SZ 完成\n", "任务 002491.SZ 完成\n", - "任务 002493.SZ 完成\n", "任务 002492.SZ 完成\n", - "任务 002495.SZ 完成\n", + "任务 002493.SZ 完成\n", "任务 002494.SZ 完成\n", - "任务 002497.SZ 完成\n", + "任务 002495.SZ 完成\n", "任务 002496.SZ 完成\n", + "任务 002497.SZ 完成\n", "任务 002498.SZ 完成\n", "任务 002500.SZ 完成\n", "任务 002501.SZ 完成\n", @@ -1146,22 +1101,22 @@ "任务 002532.SZ 完成\n", "任务 002533.SZ 完成\n", "任务 002534.SZ 完成\n", - "任务 002535.SZ 完成\n", "任务 002536.SZ 完成\n", + "任务 002535.SZ 完成\n", "任务 002537.SZ 完成\n", "任务 002538.SZ 完成\n", "任务 002539.SZ 完成\n", "任务 002540.SZ 完成\n", "任务 002541.SZ 完成\n", - "任务 002543.SZ 完成\n", "任务 002542.SZ 完成\n", + "任务 002543.SZ 完成\n", "任务 002544.SZ 完成\n", - "任务 002545.SZ 完成\n", "任务 002546.SZ 完成\n", + "任务 002545.SZ 完成\n", "任务 002547.SZ 完成\n", "任务 002548.SZ 完成\n", - "任务 002549.SZ 完成\n", "任务 002550.SZ 完成\n", + "任务 002549.SZ 完成\n", "任务 002551.SZ 完成\n", "任务 002552.SZ 完成\n", "任务 002553.SZ 完成\n", @@ -1174,8 +1129,8 @@ "任务 002560.SZ 完成\n", "任务 002561.SZ 完成\n", "任务 002562.SZ 完成\n", - "任务 002563.SZ 完成\n", "任务 002564.SZ 完成\n", + "任务 002563.SZ 完成\n", "任务 002565.SZ 完成\n", "任务 002566.SZ 完成\n", "任务 002567.SZ 完成\n", @@ -1272,12 +1227,12 @@ "任务 002663.SZ 完成\n", "任务 002664.SZ 完成\n", "任务 002666.SZ 完成\n", - "任务 002667.SZ 完成\n", "任务 002668.SZ 完成\n", - "任务 002669.SZ 完成\n", + "任务 002667.SZ 完成\n", "任务 002670.SZ 完成\n", - "任务 002671.SZ 完成\n", + "任务 002669.SZ 完成\n", "任务 002672.SZ 完成\n", + "任务 002671.SZ 完成\n", "任务 002673.SZ 完成\n", "任务 002674.SZ 完成\n", "任务 002675.SZ 完成\n", @@ -1307,14 +1262,14 @@ "任务 002702.SZ 完成\n", "任务 002703.SZ 完成\n", "任务 002705.SZ 完成\n", - "任务 002707.SZ 完成\n", "任务 002706.SZ 完成\n", + "任务 002707.SZ 完成\n", "任务 002708.SZ 完成\n", "任务 002709.SZ 完成\n", "任务 002712.SZ 完成\n", "任务 002713.SZ 完成\n", - "任务 002715.SZ 完成\n", "任务 002714.SZ 完成\n", + "任务 002715.SZ 完成\n", "任务 002716.SZ 完成\n", "任务 002717.SZ 完成\n", "任务 002718.SZ 完成\n", @@ -1337,8 +1292,8 @@ "任务 002736.SZ 完成\n", "任务 002737.SZ 完成\n", "任务 002738.SZ 完成\n", - "任务 002741.SZ 完成\n", "任务 002739.SZ 完成\n", + "任务 002741.SZ 完成\n", "任务 002742.SZ 完成\n", "任务 002743.SZ 完成\n", "任务 002745.SZ 完成\n", @@ -1478,21 +1433,21 @@ "任务 002893.SZ 完成\n", "任务 002895.SZ 完成\n", "任务 002896.SZ 完成\n", - "任务 002897.SZ 完成\n", "任务 002898.SZ 完成\n", + "任务 002897.SZ 完成\n", "任务 002899.SZ 完成\n", "任务 002900.SZ 完成\n", "任务 002901.SZ 完成\n", "任务 002902.SZ 完成\n", "任务 002903.SZ 完成\n", - "任务 002906.SZ 完成\n", "任务 002905.SZ 完成\n", - "任务 002908.SZ 完成\n", + "任务 002906.SZ 完成\n", "任务 002907.SZ 完成\n", - "任务 002910.SZ 完成\n", + "任务 002908.SZ 完成\n", "任务 002909.SZ 完成\n", - "任务 002912.SZ 完成\n", + "任务 002910.SZ 完成\n", "任务 002911.SZ 完成\n", + "任务 002912.SZ 完成\n", "任务 002913.SZ 完成\n", "任务 002915.SZ 完成\n", "任务 002916.SZ 完成\n", @@ -1502,11 +1457,11 @@ "任务 002920.SZ 完成\n", "任务 002921.SZ 完成\n", "任务 002922.SZ 完成\n", - "任务 002923.SZ 完成\n", "任务 002925.SZ 完成\n", + "任务 002923.SZ 完成\n", "任务 002926.SZ 完成\n", - "任务 002928.SZ 完成\n", "任务 002927.SZ 完成\n", + "任务 002928.SZ 完成\n", "任务 002929.SZ 完成\n", "任务 002930.SZ 完成\n", "任务 002931.SZ 完成\n", @@ -1546,10 +1501,10 @@ "任务 002969.SZ 完成\n", "任务 002970.SZ 完成\n", "任务 002971.SZ 完成\n", - "任务 002973.SZ 完成\n", "任务 002972.SZ 完成\n", - "任务 002976.SZ 完成\n", + "任务 002973.SZ 完成\n", "任务 002975.SZ 完成\n", + "任务 002976.SZ 完成\n", "任务 002977.SZ 完成\n", "任务 002978.SZ 完成\n", "任务 002979.SZ 完成\n", @@ -1570,36 +1525,36 @@ "任务 002995.SZ 完成\n", "任务 002996.SZ 完成\n", "任务 002997.SZ 完成\n", - "任务 002998.SZ 完成\n", "任务 002999.SZ 完成\n", + "任务 002998.SZ 完成\n", "任务 003000.SZ 完成\n", "任务 003001.SZ 完成\n", "任务 003002.SZ 完成\n", "任务 003003.SZ 完成\n", "任务 003005.SZ 完成\n", "任务 003004.SZ 完成\n", - "任务 003007.SZ 完成\n", "任务 003006.SZ 完成\n", + "任务 003007.SZ 完成\n", "任务 003009.SZ 完成\n", "任务 003008.SZ 完成\n", "任务 003010.SZ 完成\n", "任务 003011.SZ 完成\n", "任务 003013.SZ 完成\n", "任务 003012.SZ 完成\n", - "任务 003015.SZ 完成\n", "任务 003016.SZ 完成\n", + "任务 003015.SZ 完成\n", "任务 003017.SZ 完成\n", "任务 003018.SZ 完成\n", - "任务 003019.SZ 完成\n", "任务 003020.SZ 完成\n", - "任务 003021.SZ 完成\n", + "任务 003019.SZ 完成\n", "任务 003022.SZ 完成\n", + "任务 003021.SZ 完成\n", "任务 003023.SZ 完成\n", "任务 003025.SZ 完成\n", - "任务 003027.SZ 完成\n", "任务 003026.SZ 完成\n", - "任务 003029.SZ 完成\n", + "任务 003027.SZ 完成\n", "任务 003028.SZ 完成\n", + "任务 003029.SZ 完成\n", "任务 003030.SZ 完成\n", "任务 003031.SZ 完成\n", "任务 003032.SZ 完成\n", @@ -1673,62 +1628,62 @@ "任务 300061.SZ 完成\n", "任务 300062.SZ 完成\n", "任务 300063.SZ 完成\n", - "任务 300066.SZ 完成\n", "任务 300065.SZ 完成\n", - "任务 300068.SZ 完成\n", + "任务 300066.SZ 完成\n", "任务 300067.SZ 完成\n", - "任务 300070.SZ 完成\n", + "任务 300068.SZ 完成\n", "任务 300069.SZ 完成\n", + "任务 300070.SZ 完成\n", "任务 300071.SZ 完成\n", "任务 300072.SZ 完成\n", "任务 300073.SZ 完成\n", "任务 300074.SZ 完成\n", - "任务 300075.SZ 完成\n", "任务 300076.SZ 完成\n", + "任务 300075.SZ 完成\n", "任务 300078.SZ 完成\n", "任务 300077.SZ 完成\n", - "任务 300080.SZ 完成\n", "任务 300079.SZ 完成\n", - "任务 300081.SZ 完成\n", + "任务 300080.SZ 完成\n", "任务 300082.SZ 完成\n", - "任务 300083.SZ 完成\n", + "任务 300081.SZ 完成\n", "任务 300084.SZ 完成\n", - "任务 300086.SZ 完成\n", + "任务 300083.SZ 完成\n", "任务 300085.SZ 完成\n", + "任务 300086.SZ 完成\n", "任务 300087.SZ 完成\n", "任务 300088.SZ 完成\n", "任务 300091.SZ 完成\n", "任务 300092.SZ 完成\n", - "任务 300093.SZ 完成\n", "任务 300094.SZ 完成\n", + "任务 300093.SZ 完成\n", "任务 300095.SZ 完成\n", "任务 300096.SZ 完成\n", - "任务 300098.SZ 完成\n", "任务 300097.SZ 完成\n", + "任务 300098.SZ 完成\n", "任务 300099.SZ 完成\n", "任务 300100.SZ 完成\n", - "任务 300101.SZ 完成\n", "任务 300102.SZ 完成\n", + "任务 300101.SZ 完成\n", "任务 300103.SZ 完成\n", "任务 300105.SZ 完成\n", "任务 300106.SZ 完成\n", "任务 300107.SZ 完成\n", "任务 300108.SZ 完成\n", "任务 300109.SZ 完成\n", - "任务 300111.SZ 完成\n", "任务 300110.SZ 完成\n", + "任务 300111.SZ 完成\n", "任务 300112.SZ 完成\n", "任务 300113.SZ 完成\n", "任务 300115.SZ 完成\n", "任务 300114.SZ 完成\n", - "任务 300117.SZ 完成\n", "任务 300118.SZ 完成\n", + "任务 300117.SZ 完成\n", "任务 300119.SZ 完成\n", "任务 300120.SZ 完成\n", "任务 300121.SZ 完成\n", "任务 300122.SZ 完成\n", - "任务 300123.SZ 完成\n", "任务 300124.SZ 完成\n", + "任务 300123.SZ 完成\n", "任务 300125.SZ 完成\n", "任务 300126.SZ 完成\n", "任务 300127.SZ 完成\n", @@ -1763,16 +1718,16 @@ "任务 300157.SZ 完成\n", "任务 300158.SZ 完成\n", "任务 300159.SZ 完成\n", - "任务 300160.SZ 完成\n", "任务 300161.SZ 完成\n", + "任务 300160.SZ 完成\n", "任务 300162.SZ 完成\n", "任务 300163.SZ 完成\n", - "任务 300164.SZ 完成\n", "任务 300165.SZ 完成\n", + "任务 300164.SZ 完成\n", "任务 300166.SZ 完成\n", "任务 300167.SZ 完成\n", - "任务 300168.SZ 完成\n", "任务 300169.SZ 完成\n", + "任务 300168.SZ 完成\n", "任务 300170.SZ 完成\n", "任务 300171.SZ 完成\n", "任务 300172.SZ 完成\n", @@ -1862,12 +1817,12 @@ "任务 300260.SZ 完成\n", "任务 300261.SZ 完成\n", "任务 300263.SZ 完成\n", - "任务 300264.SZ 完成\n", "任务 300265.SZ 完成\n", + "任务 300264.SZ 完成\n", "任务 300266.SZ 完成\n", "任务 300267.SZ 完成\n", - "任务 300268.SZ 完成\n", "任务 300269.SZ 完成\n", + "任务 300268.SZ 完成\n", "任务 300270.SZ 完成\n", "任务 300271.SZ 完成\n", "任务 300272.SZ 完成\n", @@ -1997,8 +1952,8 @@ "任务 300410.SZ 完成\n", "任务 300411.SZ 完成\n", "任务 300412.SZ 完成\n", - "任务 300413.SZ 完成\n", "任务 300414.SZ 完成\n", + "任务 300413.SZ 完成\n", "任务 300415.SZ 完成\n", "任务 300416.SZ 完成\n", "任务 300417.SZ 完成\n", @@ -2011,28 +1966,28 @@ "任务 300424.SZ 完成\n", "任务 300425.SZ 完成\n", "任务 300426.SZ 完成\n", - "任务 300427.SZ 完成\n", "任务 300428.SZ 完成\n", + "任务 300427.SZ 完成\n", "任务 300429.SZ 完成\n", "任务 300430.SZ 完成\n", - "任务 300432.SZ 完成\n", "任务 300433.SZ 完成\n", + "任务 300432.SZ 完成\n", "任务 300434.SZ 完成\n", "任务 300435.SZ 完成\n", "任务 300436.SZ 完成\n", "任务 300437.SZ 完成\n", - "任务 300438.SZ 完成\n", "任务 300439.SZ 完成\n", + "任务 300438.SZ 完成\n", "任务 300440.SZ 完成\n", "任务 300441.SZ 完成\n", "任务 300442.SZ 完成\n", "任务 300443.SZ 完成\n", "任务 300444.SZ 完成\n", - "任务 300446.SZ 完成\n", "任务 300445.SZ 完成\n", + "任务 300446.SZ 完成\n", "任务 300447.SZ 完成\n", - "任务 300448.SZ 完成\n", "任务 300449.SZ 完成\n", + "任务 300448.SZ 完成\n", "任务 300450.SZ 完成\n", "任务 300451.SZ 完成\n", "任务 300452.SZ 完成\n", @@ -2044,18 +1999,18 @@ "任务 300458.SZ 完成\n", "任务 300459.SZ 完成\n", "任务 300460.SZ 完成\n", - "任务 300462.SZ 完成\n", "任务 300461.SZ 完成\n", + "任务 300462.SZ 完成\n", "任务 300463.SZ 完成\n", "任务 300464.SZ 完成\n", "任务 300465.SZ 完成\n", "任务 300466.SZ 完成\n", "任务 300467.SZ 完成\n", "任务 300468.SZ 完成\n", - "任务 300470.SZ 完成\n", "任务 300469.SZ 完成\n", - "任务 300472.SZ 完成\n", + "任务 300470.SZ 完成\n", "任务 300471.SZ 完成\n", + "任务 300472.SZ 完成\n", "任务 300473.SZ 完成\n", "任务 300474.SZ 完成\n", "任务 300475.SZ 完成\n", @@ -2066,18 +2021,18 @@ "任务 300480.SZ 完成\n", "任务 300481.SZ 完成\n", "任务 300482.SZ 完成\n", - "任务 300484.SZ 完成\n", "任务 300483.SZ 完成\n", - "任务 300486.SZ 完成\n", + "任务 300484.SZ 完成\n", "任务 300485.SZ 完成\n", + "任务 300486.SZ 完成\n", "任务 300487.SZ 完成\n", "任务 300488.SZ 完成\n", "任务 300489.SZ 完成\n", "任务 300490.SZ 完成\n", "任务 300491.SZ 完成\n", "任务 300492.SZ 完成\n", - "任务 300493.SZ 完成\n", "任务 300494.SZ 完成\n", + "任务 300493.SZ 完成\n", "任务 300496.SZ 完成\n", "任务 300497.SZ 完成\n", "任务 300498.SZ 完成\n", @@ -2104,14 +2059,14 @@ "任务 300519.SZ 完成\n", "任务 300520.SZ 完成\n", "任务 300521.SZ 完成\n", - "任务 300523.SZ 完成\n", "任务 300522.SZ 完成\n", - "任务 300527.SZ 完成\n", + "任务 300523.SZ 完成\n", "任务 300525.SZ 完成\n", + "任务 300527.SZ 完成\n", "任务 300528.SZ 完成\n", "任务 300529.SZ 完成\n", - "任务 300530.SZ 完成\n", "任务 300531.SZ 完成\n", + "任务 300530.SZ 完成\n", "任务 300532.SZ 完成\n", "任务 300533.SZ 完成\n", "任务 300534.SZ 完成\n", @@ -2160,30 +2115,30 @@ "任务 300579.SZ 完成\n", "任务 300580.SZ 完成\n", "任务 300581.SZ 完成\n", - "任务 300582.SZ 完成\n", "任务 300583.SZ 完成\n", + "任务 300582.SZ 完成\n", "任务 300584.SZ 完成\n", "任务 300585.SZ 完成\n", "任务 300586.SZ 完成\n", "任务 300587.SZ 完成\n", - "任务 300588.SZ 完成\n", "任务 300589.SZ 完成\n", - "任务 300590.SZ 完成\n", + "任务 300588.SZ 完成\n", "任务 300591.SZ 完成\n", - "任务 300592.SZ 完成\n", + "任务 300590.SZ 完成\n", "任务 300593.SZ 完成\n", + "任务 300592.SZ 完成\n", "任务 300594.SZ 完成\n", "任务 300595.SZ 完成\n", "任务 300596.SZ 完成\n", "任务 300597.SZ 完成\n", "任务 300598.SZ 完成\n", "任务 300599.SZ 完成\n", - "任务 300600.SZ 完成\n", "任务 300601.SZ 完成\n", + "任务 300600.SZ 完成\n", "任务 300602.SZ 完成\n", "任务 300603.SZ 完成\n", - "任务 300604.SZ 完成\n", "任务 300605.SZ 完成\n", + "任务 300604.SZ 完成\n", "任务 300606.SZ 完成\n", "任务 300607.SZ 完成\n", "任务 300608.SZ 完成\n", @@ -2192,12 +2147,12 @@ "任务 300611.SZ 完成\n", "任务 300612.SZ 完成\n", "任务 300613.SZ 完成\n", - "任务 300614.SZ 完成\n", "任务 300615.SZ 完成\n", + "任务 300614.SZ 完成\n", "任务 300616.SZ 完成\n", "任务 300617.SZ 完成\n", - "任务 300618.SZ 完成\n", "任务 300619.SZ 完成\n", + "任务 300618.SZ 完成\n", "任务 300620.SZ 完成\n", "任务 300621.SZ 完成\n", "任务 300622.SZ 完成\n", @@ -2211,16 +2166,16 @@ "任务 300630.SZ 完成\n", "任务 300631.SZ 完成\n", "任务 300632.SZ 完成\n", - "任务 300634.SZ 完成\n", "任务 300633.SZ 完成\n", + "任务 300634.SZ 完成\n", "任务 300635.SZ 完成\n", + "任务 300637.SZ 完成\n", "任务 300636.SZ 完成\n", "任务 300638.SZ 完成\n", - "任务 300637.SZ 完成\n", "任务 300639.SZ 完成\n", "任务 300640.SZ 完成\n", - "任务 300642.SZ 完成\n", "任务 300641.SZ 完成\n", + "任务 300642.SZ 完成\n", "任务 300643.SZ 完成\n", "任务 300644.SZ 完成\n", "任务 300645.SZ 完成\n", @@ -2245,8 +2200,8 @@ "任务 300665.SZ 完成\n", "任务 300666.SZ 完成\n", "任务 300667.SZ 完成\n", - "任务 300669.SZ 完成\n", "任务 300668.SZ 完成\n", + "任务 300669.SZ 完成\n", "任务 300671.SZ 完成\n", "任务 300670.SZ 完成\n", "任务 300672.SZ 完成\n", @@ -2259,10 +2214,10 @@ "任务 300679.SZ 完成\n", "任务 300680.SZ 完成\n", "任务 300681.SZ 完成\n", - "任务 300683.SZ 完成\n", "任务 300682.SZ 完成\n", - "任务 300684.SZ 完成\n", + "任务 300683.SZ 完成\n", "任务 300685.SZ 完成\n", + "任务 300684.SZ 完成\n", "任务 300686.SZ 完成\n", "任务 300687.SZ 完成\n", "任务 300688.SZ 完成\n", @@ -2310,17 +2265,17 @@ "任务 300733.SZ 完成\n", "任务 300735.SZ 完成\n", "任务 300736.SZ 完成\n", - "任务 300738.SZ 完成\n", "任务 300737.SZ 完成\n", + "任务 300738.SZ 完成\n", "任务 300739.SZ 完成\n", - "任务 300740.SZ 完成\n", "任务 300741.SZ 完成\n", + "任务 300740.SZ 完成\n", "任务 300743.SZ 完成\n", "任务 300745.SZ 完成\n", "任务 300746.SZ 完成\n", "任务 300747.SZ 完成\n", - "任务 300748.SZ 完成\n", "任务 300749.SZ 完成\n", + "任务 300748.SZ 完成\n", "任务 300750.SZ 完成\n", "任务 300751.SZ 完成\n", "任务 300752.SZ 完成\n", @@ -2331,8 +2286,8 @@ "任务 300758.SZ 完成\n", "任务 300759.SZ 完成\n", "任务 300760.SZ 完成\n", - "任务 300761.SZ 完成\n", "任务 300762.SZ 完成\n", + "任务 300761.SZ 完成\n", "任务 300763.SZ 完成\n", "任务 300765.SZ 完成\n", "任务 300766.SZ 完成\n", @@ -2392,22 +2347,22 @@ "任务 300822.SZ 完成\n", "任务 300823.SZ 完成\n", "任务 300824.SZ 完成\n", - "任务 300825.SZ 完成\n", "任务 300826.SZ 完成\n", + "任务 300825.SZ 完成\n", "任务 300827.SZ 完成\n", "任务 300828.SZ 完成\n", "任务 300829.SZ 完成\n", "任务 300830.SZ 完成\n", - "任务 300831.SZ 完成\n", "任务 300832.SZ 完成\n", + "任务 300831.SZ 完成\n", "任务 300833.SZ 完成\n", "任务 300834.SZ 完成\n", "任务 300835.SZ 完成\n", "任务 300836.SZ 完成\n", "任务 300837.SZ 完成\n", "任务 300838.SZ 完成\n", - "任务 300840.SZ 完成\n", "任务 300839.SZ 完成\n", + "任务 300840.SZ 完成\n", "任务 300841.SZ 完成\n", "任务 300842.SZ 完成\n", "任务 300843.SZ 完成\n", @@ -2454,8 +2409,8 @@ "任务 300885.SZ 完成\n", "任务 300886.SZ 完成\n", "任务 300887.SZ 完成\n", - "任务 300888.SZ 完成\n", "任务 300889.SZ 完成\n", + "任务 300888.SZ 完成\n", "任务 300890.SZ 完成\n", "任务 300891.SZ 完成\n", "任务 300892.SZ 完成\n", @@ -2469,22 +2424,22 @@ "任务 300900.SZ 完成\n", "任务 300901.SZ 完成\n", "任务 300902.SZ 完成\n", - "任务 300904.SZ 完成\n", "任务 300903.SZ 完成\n", + "任务 300904.SZ 完成\n", "任务 300905.SZ 完成\n", "任务 300906.SZ 完成\n", - "任务 300908.SZ 完成\n", "任务 300907.SZ 完成\n", + "任务 300908.SZ 完成\n", "任务 300909.SZ 完成\n", "任务 300910.SZ 完成\n", "任务 300911.SZ 完成\n", "任务 300912.SZ 完成\n", "任务 300913.SZ 完成\n", "任务 300915.SZ 完成\n", - "任务 300917.SZ 完成\n", "任务 300916.SZ 完成\n", - "任务 300919.SZ 完成\n", + "任务 300917.SZ 完成\n", "任务 300918.SZ 完成\n", + "任务 300919.SZ 完成\n", "任务 300920.SZ 完成\n", "任务 300921.SZ 完成\n", "任务 300922.SZ 完成\n", @@ -2500,8 +2455,8 @@ "任务 300933.SZ 完成\n", "任务 300935.SZ 完成\n", "任务 300936.SZ 完成\n", - "任务 300937.SZ 完成\n", "任务 300938.SZ 完成\n", + "任务 300937.SZ 完成\n", "任务 300939.SZ 完成\n", "任务 300940.SZ 完成\n", "任务 300941.SZ 完成\n", @@ -2533,16 +2488,16 @@ "任务 300969.SZ 完成\n", "任务 300970.SZ 完成\n", "任务 300971.SZ 完成\n", - "任务 300972.SZ 完成\n", "任务 300973.SZ 完成\n", + "任务 300972.SZ 完成\n", "任务 300975.SZ 完成\n", "任务 300976.SZ 完成\n", - "任务 300977.SZ 完成\n", "任务 300978.SZ 完成\n", - "任务 300979.SZ 完成\n", + "任务 300977.SZ 完成\n", "任务 300980.SZ 完成\n", - "任务 300981.SZ 完成\n", + "任务 300979.SZ 完成\n", "任务 300982.SZ 完成\n", + "任务 300981.SZ 完成\n", "任务 300983.SZ 完成\n", "任务 300984.SZ 完成\n", "任务 300985.SZ 完成\n", @@ -2551,12 +2506,12 @@ "任务 300988.SZ 完成\n", "任务 300989.SZ 完成\n", "任务 300990.SZ 完成\n", - "任务 300991.SZ 完成\n", "任务 300992.SZ 完成\n", + "任务 300991.SZ 完成\n", "任务 300993.SZ 完成\n", "任务 300994.SZ 完成\n", - "任务 300995.SZ 完成\n", "任务 300996.SZ 完成\n", + "任务 300995.SZ 完成\n", "任务 300997.SZ 完成\n", "任务 300998.SZ 完成\n", "任务 300999.SZ 完成\n", @@ -2607,29 +2562,29 @@ "任务 301047.SZ 完成\n", "任务 301048.SZ 完成\n", "任务 301049.SZ 完成\n", - "任务 301050.SZ 完成\n", "任务 301051.SZ 完成\n", + "任务 301050.SZ 完成\n", "任务 301052.SZ 完成\n", "任务 301053.SZ 完成\n", "任务 301055.SZ 完成\n", "任务 301056.SZ 完成\n", "任务 301057.SZ 完成\n", "任务 301058.SZ 完成\n", - "任务 301060.SZ 完成\n", "任务 301059.SZ 完成\n", - "任务 301061.SZ 完成\n", + "任务 301060.SZ 完成\n", "任务 301062.SZ 完成\n", "任务 301063.SZ 完成\n", + "任务 301061.SZ 完成\n", "任务 301065.SZ 完成\n", "任务 301066.SZ 完成\n", - "任务 301067.SZ 完成\n", - "任务 301069.SZ 完成\n", "任务 301068.SZ 完成\n", - "任务 301071.SZ 完成\n", + "任务 301067.SZ 完成\n", "任务 301070.SZ 完成\n", - "任务 301073.SZ 完成\n", + "任务 301069.SZ 完成\n", "任务 301072.SZ 完成\n", + "任务 301071.SZ 完成\n", "任务 301075.SZ 完成\n", + "任务 301073.SZ 完成\n", "任务 301076.SZ 完成\n", "任务 301077.SZ 完成\n", "任务 301078.SZ 完成\n", @@ -2638,8 +2593,8 @@ "任务 301081.SZ 完成\n", "任务 301082.SZ 完成\n", "任务 301083.SZ 完成\n", - "任务 301085.SZ 完成\n", "任务 301086.SZ 完成\n", + "任务 301085.SZ 完成\n", "任务 301087.SZ 完成\n", "任务 301088.SZ 完成\n", "任务 301089.SZ 完成\n", @@ -2651,8 +2606,8 @@ "任务 301096.SZ 完成\n", "任务 301097.SZ 完成\n", "任务 301098.SZ 完成\n", - "任务 301100.SZ 完成\n", "任务 301099.SZ 完成\n", + "任务 301100.SZ 完成\n", "任务 301101.SZ 完成\n", "任务 301102.SZ 完成\n", "任务 301103.SZ 完成\n", @@ -2665,8 +2620,8 @@ "任务 301111.SZ 完成\n", "任务 301112.SZ 完成\n", "任务 301113.SZ 完成\n", - "任务 301116.SZ 完成\n", "任务 301115.SZ 完成\n", + "任务 301116.SZ 完成\n", "任务 301117.SZ 完成\n", "任务 301118.SZ 完成\n", "任务 301119.SZ 完成\n", @@ -2676,12 +2631,12 @@ "任务 301123.SZ 完成\n", "任务 301125.SZ 完成\n", "任务 301126.SZ 完成\n", - "任务 301127.SZ 完成\n", "任务 301128.SZ 完成\n", + "任务 301127.SZ 完成\n", "任务 301129.SZ 完成\n", "任务 301130.SZ 完成\n", - "任务 301131.SZ 完成\n", "任务 301132.SZ 完成\n", + "任务 301131.SZ 完成\n", "任务 301133.SZ 完成\n", "任务 301135.SZ 完成\n", "任务 301136.SZ 完成\n", @@ -2700,30 +2655,31 @@ "任务 301157.SZ 完成\n", "任务 301158.SZ 完成\n", "任务 301159.SZ 完成\n", - "任务 301160.SZ 完成\n", "任务 301161.SZ 完成\n", + "任务 301160.SZ 完成\n", "任务 301162.SZ 完成\n", "任务 301163.SZ 完成\n", "任务 301165.SZ 完成\n", - "任务 301166.SZ 完成\n", "任务 301167.SZ 完成\n", + "任务 301166.SZ 完成\n", "任务 301168.SZ 完成\n", "任务 301169.SZ 完成\n", - "任务 301171.SZ 完成\n", "任务 301170.SZ 完成\n", + "任务 301171.SZ 完成\n", "任务 301172.SZ 完成\n", "任务 301175.SZ 完成\n", - "任务 301176.SZ 完成\n", "任务 301177.SZ 完成\n", + "任务 301176.SZ 完成\n", "任务 301178.SZ 完成\n", "任务 301179.SZ 完成\n", "任务 301180.SZ 完成\n", "任务 301181.SZ 完成\n", "任务 301182.SZ 完成\n", "任务 301183.SZ 完成\n", + "任务 301185.SZ 完成\n", "任务 301186.SZ 完成\n", - "任务 301187.SZ 完成\n", "任务 301188.SZ 完成\n", + "任务 301187.SZ 完成\n", "任务 301189.SZ 完成\n", "任务 301190.SZ 完成\n", "任务 301191.SZ 完成\n", @@ -2764,8 +2720,8 @@ "任务 301230.SZ 完成\n", "任务 301231.SZ 完成\n", "任务 301232.SZ 完成\n", - "任务 301233.SZ 完成\n", "任务 301234.SZ 完成\n", + "任务 301233.SZ 完成\n", "任务 301235.SZ 完成\n", "任务 301236.SZ 完成\n", "任务 301237.SZ 完成\n", @@ -2777,7 +2733,6 @@ "任务 301252.SZ 完成\n", "任务 301255.SZ 完成\n", "任务 301256.SZ 完成\n", - "任务 301185.SZ 完成\n", "任务 301257.SZ 完成\n", "任务 301258.SZ 完成\n", "任务 301259.SZ 完成\n", @@ -2821,10 +2776,10 @@ "任务 301303.SZ 完成\n", "任务 301305.SZ 完成\n", "任务 301306.SZ 完成\n", - "任务 301307.SZ 完成\n", "任务 301308.SZ 完成\n", - "任务 301310.SZ 完成\n", + "任务 301307.SZ 完成\n", "任务 301309.SZ 完成\n", + "任务 301310.SZ 完成\n", "任务 301311.SZ 完成\n", "任务 301312.SZ 完成\n", "任务 301313.SZ 完成\n", @@ -2833,22 +2788,22 @@ "任务 301316.SZ 完成\n", "任务 301317.SZ 完成\n", "任务 301318.SZ 完成\n", - "任务 301319.SZ 完成\n", "任务 301320.SZ 完成\n", + "任务 301319.SZ 完成\n", "任务 301321.SZ 完成\n", "任务 301322.SZ 完成\n", "任务 301323.SZ 完成\n", "任务 301325.SZ 完成\n", "任务 301326.SZ 完成\n", "任务 301327.SZ 完成\n", - "任务 301329.SZ 完成\n", "任务 301328.SZ 完成\n", - "任务 301331.SZ 完成\n", + "任务 301329.SZ 完成\n", "任务 301330.SZ 完成\n", + "任务 301331.SZ 完成\n", "任务 301332.SZ 完成\n", "任务 301333.SZ 完成\n", - "任务 301336.SZ 完成\n", "任务 301335.SZ 完成\n", + "任务 301336.SZ 完成\n", "任务 301337.SZ 完成\n", "任务 301338.SZ 完成\n", "任务 301339.SZ 完成\n", @@ -2892,12 +2847,12 @@ "任务 301393.SZ 完成\n", "任务 301395.SZ 完成\n", "任务 301396.SZ 完成\n", - "任务 301397.SZ 完成\n", "任务 301398.SZ 完成\n", - "任务 301399.SZ 完成\n", + "任务 301397.SZ 完成\n", "任务 301408.SZ 完成\n", - "任务 301413.SZ 完成\n", + "任务 301399.SZ 完成\n", "任务 301418.SZ 完成\n", + "任务 301413.SZ 完成\n", "任务 301419.SZ 完成\n", "任务 301421.SZ 完成\n", "任务 301428.SZ 完成\n", @@ -2916,8 +2871,8 @@ "任务 301489.SZ 完成\n", "任务 301498.SZ 完成\n", "任务 301499.SZ 完成\n", - "任务 301500.SZ 完成\n", "任务 301502.SZ 完成\n", + "任务 301500.SZ 完成\n", "任务 301503.SZ 完成\n", "任务 301505.SZ 完成\n", "任务 301507.SZ 完成\n", @@ -2934,10 +2889,10 @@ "任务 301520.SZ 完成\n", "任务 301522.SZ 完成\n", "任务 301525.SZ 完成\n", - "任务 301526.SZ 完成\n", "任务 301528.SZ 完成\n", - "任务 301529.SZ 完成\n", + "任务 301526.SZ 完成\n", "任务 301533.SZ 完成\n", + "任务 301529.SZ 完成\n", "任务 301536.SZ 完成\n", "任务 301538.SZ 完成\n", "任务 301539.SZ 完成\n", @@ -2948,8 +2903,8 @@ "任务 301555.SZ 完成\n", "任务 301556.SZ 完成\n", "任务 301558.SZ 完成\n", - "任务 301559.SZ 完成\n", "任务 301565.SZ 完成\n", + "任务 301559.SZ 完成\n", "任务 301566.SZ 完成\n", "任务 301567.SZ 完成\n", "任务 301568.SZ 完成\n", @@ -2978,16 +2933,16 @@ "任务 301613.SZ 完成\n", "任务 301617.SZ 完成\n", "任务 301618.SZ 完成\n", - "任务 301622.SZ 完成\n", "任务 301626.SZ 完成\n", - "任务 301628.SZ 完成\n", + "任务 301622.SZ 完成\n", "任务 301631.SZ 完成\n", + "任务 301628.SZ 完成\n", "任务 301633.SZ 完成\n", "任务 430017.BJ 完成\n", "任务 430047.BJ 完成\n", "任务 430090.BJ 完成\n", - "任务 430139.BJ 完成\n", "任务 430198.BJ 完成\n", + "任务 430139.BJ 完成\n", "任务 430300.BJ 完成\n", "任务 430418.BJ 完成\n", "任务 430425.BJ 完成\n", @@ -3029,12 +2984,12 @@ "任务 600035.SH 完成\n", "任务 600036.SH 完成\n", "任务 600037.SH 完成\n", - "任务 600039.SH 完成\n", "任务 600038.SH 完成\n", + "任务 600039.SH 完成\n", "任务 600048.SH 完成\n", "任务 600050.SH 完成\n", - "任务 600052.SH 完成\n", "任务 600051.SH 完成\n", + "任务 600052.SH 完成\n", "任务 600053.SH 完成\n", "任务 600054.SH 完成\n", "任务 600055.SH 完成\n", @@ -3072,70 +3027,70 @@ "任务 600098.SH 完成\n", "任务 600099.SH 完成\n", "任务 600100.SH 完成\n", - "任务 600103.SH 完成\n", "任务 600101.SH 完成\n", + "任务 600103.SH 完成\n", "任务 600104.SH 完成\n", "任务 600105.SH 完成\n", "任务 600106.SH 完成\n", "任务 600107.SH 完成\n", "任务 600108.SH 完成\n", "任务 600109.SH 完成\n", - "任务 600111.SH 完成\n", "任务 600110.SH 完成\n", + "任务 600111.SH 完成\n", "任务 600113.SH 完成\n", "任务 600114.SH 完成\n", "任务 600115.SH 完成\n", "任务 600116.SH 完成\n", - "任务 600118.SH 完成\n", "任务 600117.SH 完成\n", + "任务 600118.SH 完成\n", "任务 600119.SH 完成\n", "任务 600120.SH 完成\n", "任务 600121.SH 完成\n", "任务 600123.SH 完成\n", "任务 600125.SH 完成\n", "任务 600126.SH 完成\n", - "任务 600128.SH 完成\n", "任务 600127.SH 完成\n", - "任务 600130.SH 完成\n", + "任务 600128.SH 完成\n", "任务 600129.SH 完成\n", + "任务 600130.SH 完成\n", "任务 600131.SH 完成\n", "任务 600132.SH 完成\n", - "任务 600135.SH 完成\n", "任务 600133.SH 完成\n", - "任务 600137.SH 完成\n", + "任务 600135.SH 完成\n", "任务 600136.SH 完成\n", + "任务 600137.SH 完成\n", "任务 600138.SH 完成\n", "任务 600141.SH 完成\n", - "任务 600148.SH 完成\n", "任务 600143.SH 完成\n", - "任务 600150.SH 完成\n", + "任务 600148.SH 完成\n", "任务 600149.SH 完成\n", + "任务 600150.SH 完成\n", "任务 600151.SH 完成\n", "任务 600152.SH 完成\n", "任务 600153.SH 完成\n", "任务 600155.SH 完成\n", "任务 600156.SH 完成\n", "任务 600157.SH 完成\n", - "任务 600159.SH 完成\n", "任务 600158.SH 完成\n", + "任务 600159.SH 完成\n", "任务 600160.SH 完成\n", "任务 600161.SH 完成\n", "任务 600162.SH 完成\n", "任务 600163.SH 完成\n", "任务 600165.SH 完成\n", "任务 600166.SH 完成\n", - "任务 600168.SH 完成\n", "任务 600167.SH 完成\n", + "任务 600168.SH 完成\n", "任务 600169.SH 完成\n", "任务 600170.SH 完成\n", - "任务 600172.SH 完成\n", "任务 600171.SH 完成\n", - "任务 600176.SH 完成\n", + "任务 600172.SH 完成\n", "任务 600173.SH 完成\n", + "任务 600176.SH 完成\n", "任务 600177.SH 完成\n", "任务 600178.SH 完成\n", - "任务 600180.SH 完成\n", "任务 600179.SH 完成\n", + "任务 600180.SH 完成\n", "任务 600182.SH 完成\n", "任务 600183.SH 完成\n", "任务 600184.SH 完成\n", @@ -3196,12 +3151,12 @@ "任务 600252.SH 完成\n", "任务 600255.SH 完成\n", "任务 600256.SH 完成\n", - "任务 600258.SH 完成\n", "任务 600257.SH 完成\n", + "任务 600258.SH 完成\n", "任务 600259.SH 完成\n", "任务 600261.SH 完成\n", - "任务 600265.SH 完成\n", "任务 600262.SH 完成\n", + "任务 600265.SH 完成\n", "任务 600266.SH 完成\n", "任务 600267.SH 完成\n", "任务 600268.SH 完成\n", @@ -3272,22 +3227,22 @@ "任务 600356.SH 完成\n", "任务 600358.SH 完成\n", "任务 600359.SH 完成\n", - "任务 600361.SH 完成\n", "任务 600360.SH 完成\n", + "任务 600361.SH 完成\n", "任务 600362.SH 完成\n", "任务 600363.SH 完成\n", - "任务 600366.SH 完成\n", "任务 600365.SH 完成\n", + "任务 600366.SH 完成\n", "任务 600367.SH 完成\n", "任务 600368.SH 完成\n", "任务 600369.SH 完成\n", "任务 600370.SH 完成\n", "任务 600371.SH 完成\n", "任务 600372.SH 完成\n", - "任务 600373.SH 完成\n", "任务 600375.SH 完成\n", - "任务 600376.SH 完成\n", + "任务 600373.SH 完成\n", "任务 600377.SH 完成\n", + "任务 600376.SH 完成\n", "任务 600378.SH 完成\n", "任务 600379.SH 完成\n", "任务 600380.SH 完成\n", @@ -3321,18 +3276,18 @@ "任务 600421.SH 完成\n", "任务 600422.SH 完成\n", "任务 600423.SH 完成\n", - "任务 600426.SH 完成\n", "任务 600425.SH 完成\n", + "任务 600426.SH 完成\n", "任务 600428.SH 完成\n", "任务 600429.SH 完成\n", "任务 600433.SH 完成\n", "任务 600435.SH 完成\n", - "任务 600436.SH 完成\n", "任务 600438.SH 完成\n", + "任务 600436.SH 完成\n", "任务 600444.SH 完成\n", "任务 600439.SH 完成\n", - "任务 600446.SH 完成\n", "任务 600448.SH 完成\n", + "任务 600446.SH 完成\n", "任务 600449.SH 完成\n", "任务 600452.SH 完成\n", "任务 600455.SH 完成\n", @@ -3353,8 +3308,8 @@ "任务 600478.SH 完成\n", "任务 600479.SH 完成\n", "任务 600480.SH 完成\n", - "任务 600482.SH 完成\n", "任务 600481.SH 完成\n", + "任务 600482.SH 完成\n", "任务 600483.SH 完成\n", "任务 600486.SH 完成\n", "任务 600487.SH 完成\n", @@ -3375,8 +3330,8 @@ "任务 600505.SH 完成\n", "任务 600506.SH 完成\n", "任务 600507.SH 完成\n", - "任务 600509.SH 完成\n", "任务 600508.SH 完成\n", + "任务 600509.SH 完成\n", "任务 600510.SH 完成\n", "任务 600511.SH 完成\n", "任务 600512.SH 完成\n", @@ -3385,8 +3340,8 @@ "任务 600516.SH 完成\n", "任务 600517.SH 完成\n", "任务 600518.SH 完成\n", - "任务 600520.SH 完成\n", "任务 600519.SH 完成\n", + "任务 600520.SH 完成\n", "任务 600521.SH 完成\n", "任务 600522.SH 完成\n", "任务 600523.SH 完成\n", @@ -3397,8 +3352,8 @@ "任务 600529.SH 完成\n", "任务 600530.SH 完成\n", "任务 600531.SH 完成\n", - "任务 600533.SH 完成\n", "任务 600535.SH 完成\n", + "任务 600533.SH 完成\n", "任务 600536.SH 完成\n", "任务 600537.SH 完成\n", "任务 600538.SH 完成\n", @@ -3419,17 +3374,17 @@ "任务 600559.SH 完成\n", "任务 600560.SH 完成\n", "任务 600561.SH 完成\n", - "任务 600562.SH 完成\n", "任务 600563.SH 完成\n", - "任务 600566.SH 完成\n", + "任务 600562.SH 完成\n", "任务 600567.SH 完成\n", + "任务 600566.SH 完成\n", "任务 600568.SH 完成\n", "任务 600569.SH 完成\n", "任务 600570.SH 完成\n", - "任务 600572.SH 完成\n", "任务 600571.SH 完成\n", - "任务 600575.SH 完成\n", + "任务 600572.SH 完成\n", "任务 600573.SH 完成\n", + "任务 600575.SH 完成\n", "任务 600576.SH 完成\n", "任务 600577.SH 完成\n", "任务 600578.SH 完成\n", @@ -3483,8 +3438,8 @@ "任务 600633.SH 完成\n", "任务 600635.SH 完成\n", "任务 600636.SH 完成\n", - "任务 600637.SH 完成\n", "任务 600638.SH 完成\n", + "任务 600637.SH 完成\n", "任务 600639.SH 完成\n", "任务 600640.SH 完成\n", "任务 600641.SH 完成\n", @@ -3498,22 +3453,22 @@ "任务 600651.SH 完成\n", "任务 600653.SH 完成\n", "任务 600654.SH 完成\n", - "任务 600657.SH 完成\n", "任务 600655.SH 完成\n", + "任务 600657.SH 完成\n", "任务 600658.SH 完成\n", "任务 600660.SH 完成\n", "任务 600661.SH 完成\n", "任务 600662.SH 完成\n", - "任务 600664.SH 完成\n", "任务 600663.SH 完成\n", - "任务 600666.SH 完成\n", + "任务 600664.SH 完成\n", "任务 600665.SH 完成\n", + "任务 600666.SH 完成\n", "任务 600667.SH 完成\n", "任务 600668.SH 完成\n", "任务 600671.SH 完成\n", "任务 600673.SH 完成\n", - "任务 600675.SH 完成\n", "任务 600674.SH 完成\n", + "任务 600675.SH 完成\n", "任务 600676.SH 完成\n", "任务 600678.SH 完成\n", "任务 600679.SH 完成\n", @@ -3538,8 +3493,8 @@ "任务 600703.SH 完成\n", "任务 600704.SH 完成\n", "任务 600705.SH 完成\n", - "任务 600707.SH 完成\n", "任务 600706.SH 完成\n", + "任务 600707.SH 完成\n", "任务 600708.SH 完成\n", "任务 600710.SH 完成\n", "任务 600711.SH 完成\n", @@ -3574,11 +3529,11 @@ "任务 600741.SH 完成\n", "任务 600742.SH 完成\n", "任务 600743.SH 完成\n", - "任务 600744.SH 完成\n", "任务 600745.SH 完成\n", "任务 600746.SH 完成\n", "任务 600748.SH 完成\n", "任务 600749.SH 完成\n", + "任务 600744.SH 完成\n", "任务 600750.SH 完成\n", "任务 600751.SH 完成\n", "任务 600753.SH 完成\n", @@ -3621,10 +3576,10 @@ "任务 600797.SH 完成\n", "任务 600798.SH 完成\n", "任务 600800.SH 完成\n", - "任务 600801.SH 完成\n", "任务 600802.SH 完成\n", - "任务 600803.SH 完成\n", + "任务 600801.SH 完成\n", "任务 600804.SH 完成\n", + "任务 600803.SH 完成\n", "任务 600805.SH 完成\n", "任务 600807.SH 完成\n", "任务 600808.SH 完成\n", @@ -3654,8 +3609,8 @@ "任务 600835.SH 完成\n", "任务 600837.SH 完成\n", "任务 600838.SH 完成\n", - "任务 600841.SH 完成\n", "任务 600839.SH 完成\n", + "任务 600841.SH 完成\n", "任务 600843.SH 完成\n", "任务 600844.SH 完成\n", "任务 600845.SH 完成\n", @@ -3668,8 +3623,8 @@ "任务 600854.SH 完成\n", "任务 600855.SH 完成\n", "任务 600857.SH 完成\n", - "任务 600859.SH 完成\n", "任务 600858.SH 完成\n", + "任务 600859.SH 完成\n", "任务 600860.SH 完成\n", "任务 600861.SH 完成\n", "任务 600862.SH 完成\n", @@ -3734,14 +3689,14 @@ "任务 600961.SH 完成\n", "任务 600962.SH 完成\n", "任务 600963.SH 完成\n", - "任务 600966.SH 完成\n", "任务 600965.SH 完成\n", + "任务 600966.SH 完成\n", "任务 600967.SH 完成\n", "任务 600968.SH 完成\n", - "任务 600969.SH 完成\n", "任务 600970.SH 完成\n", - "任务 600971.SH 完成\n", + "任务 600969.SH 完成\n", "任务 600973.SH 完成\n", + "任务 600971.SH 完成\n", "任务 600975.SH 完成\n", "任务 600976.SH 完成\n", "任务 600977.SH 完成\n", @@ -3754,18 +3709,18 @@ "任务 600985.SH 完成\n", "任务 600986.SH 完成\n", "任务 600987.SH 完成\n", - "任务 600988.SH 完成\n", "任务 600989.SH 完成\n", - "任务 600990.SH 完成\n", + "任务 600988.SH 完成\n", "任务 600992.SH 完成\n", + "任务 600990.SH 完成\n", "任务 600995.SH 完成\n", "任务 600993.SH 完成\n", - "任务 600997.SH 完成\n", "任务 600996.SH 完成\n", - "任务 600998.SH 完成\n", + "任务 600997.SH 完成\n", "任务 600999.SH 完成\n", - "任务 601001.SH 完成\n", + "任务 600998.SH 完成\n", "任务 601000.SH 完成\n", + "任务 601001.SH 完成\n", "任务 601002.SH 完成\n", "任务 601003.SH 完成\n", "任务 601005.SH 完成\n", @@ -3776,30 +3731,30 @@ "任务 601010.SH 完成\n", "任务 601011.SH 完成\n", "任务 601012.SH 完成\n", - "任务 601016.SH 完成\n", "任务 601015.SH 完成\n", + "任务 601016.SH 完成\n", "任务 601018.SH 完成\n", "任务 601019.SH 完成\n", - "任务 601021.SH 完成\n", "任务 601020.SH 完成\n", - "任务 601028.SH 完成\n", + "任务 601021.SH 完成\n", "任务 601022.SH 完成\n", + "任务 601028.SH 完成\n", "任务 601033.SH 完成\n", "任务 601038.SH 完成\n", - "任务 601058.SH 完成\n", "任务 601059.SH 完成\n", + "任务 601058.SH 完成\n", "任务 601061.SH 完成\n", "任务 601065.SH 完成\n", - "任务 601068.SH 完成\n", "任务 601066.SH 完成\n", + "任务 601068.SH 完成\n", "任务 601069.SH 完成\n", "任务 601077.SH 完成\n", "任务 601083.SH 完成\n", "任务 601086.SH 完成\n", - "任务 601089.SH 完成\n", "任务 601088.SH 完成\n", - "任务 601098.SH 完成\n", "任务 601096.SH 完成\n", + "任务 601089.SH 完成\n", + "任务 601098.SH 完成\n", "任务 601099.SH 完成\n", "任务 601100.SH 完成\n", "任务 601101.SH 完成\n", @@ -3812,22 +3767,22 @@ "任务 601117.SH 完成\n", "任务 601118.SH 完成\n", "任务 601121.SH 完成\n", - "任务 601127.SH 完成\n", "任务 601126.SH 完成\n", - "任务 601133.SH 完成\n", + "任务 601127.SH 完成\n", "任务 601128.SH 完成\n", + "任务 601133.SH 完成\n", "任务 601137.SH 完成\n", "任务 601136.SH 完成\n", "任务 601139.SH 完成\n", "任务 601138.SH 完成\n", "任务 601155.SH 完成\n", "任务 601156.SH 完成\n", - "任务 601162.SH 完成\n", "任务 601158.SH 完成\n", + "任务 601162.SH 完成\n", "任务 601163.SH 完成\n", "任务 601166.SH 完成\n", - "任务 601169.SH 完成\n", "任务 601168.SH 完成\n", + "任务 601169.SH 完成\n", "任务 601177.SH 完成\n", "任务 601179.SH 完成\n", "任务 601186.SH 完成\n", @@ -3836,36 +3791,36 @@ "任务 601198.SH 完成\n", "任务 601199.SH 完成\n", "任务 601200.SH 完成\n", - "任务 601208.SH 完成\n", "任务 601211.SH 完成\n", - "任务 601216.SH 完成\n", + "任务 601208.SH 完成\n", "任务 601212.SH 完成\n", + "任务 601216.SH 完成\n", "任务 601218.SH 完成\n", "任务 601222.SH 完成\n", "任务 601225.SH 完成\n", "任务 601226.SH 完成\n", "任务 601228.SH 完成\n", "任务 601229.SH 完成\n", - "任务 601231.SH 完成\n", "任务 601233.SH 完成\n", - "任务 601238.SH 完成\n", + "任务 601231.SH 完成\n", "任务 601236.SH 完成\n", - "任务 601288.SH 完成\n", + "任务 601238.SH 完成\n", "任务 601279.SH 完成\n", + "任务 601288.SH 完成\n", "任务 601298.SH 完成\n", "任务 601311.SH 完成\n", - "任务 601319.SH 完成\n", "任务 601318.SH 完成\n", + "任务 601319.SH 完成\n", "任务 601326.SH 完成\n", "任务 601328.SH 完成\n", - "任务 601330.SH 完成\n", "任务 601333.SH 完成\n", + "任务 601330.SH 完成\n", "任务 601336.SH 完成\n", "任务 601339.SH 完成\n", "任务 601360.SH 完成\n", "任务 601366.SH 完成\n", - "任务 601369.SH 完成\n", "任务 601368.SH 完成\n", + "任务 601369.SH 完成\n", "任务 601375.SH 完成\n", "任务 601377.SH 完成\n", "任务 601388.SH 完成\n", @@ -3884,8 +3839,8 @@ "任务 601567.SH 完成\n", "任务 601568.SH 完成\n", "任务 601577.SH 完成\n", - "任务 601588.SH 完成\n", "任务 601579.SH 完成\n", + "任务 601588.SH 完成\n", "任务 601595.SH 完成\n", "任务 601598.SH 完成\n", "任务 601599.SH 完成\n", @@ -3988,8 +3943,8 @@ "任务 601996.SH 完成\n", "任务 601997.SH 完成\n", "任务 601998.SH 完成\n", - "任务 601999.SH 完成\n", "任务 603000.SH 完成\n", + "任务 601999.SH 完成\n", "任务 603001.SH 完成\n", "任务 603002.SH 完成\n", "任务 603003.SH 完成\n", @@ -4010,16 +3965,16 @@ "任务 603019.SH 完成\n", "任务 603020.SH 完成\n", "任务 603021.SH 完成\n", - "任务 603023.SH 完成\n", "任务 603022.SH 完成\n", - "任务 603026.SH 完成\n", + "任务 603023.SH 完成\n", "任务 603025.SH 完成\n", + "任务 603026.SH 完成\n", "任务 603027.SH 完成\n", "任务 603028.SH 完成\n", "任务 603029.SH 完成\n", "任务 603030.SH 完成\n", - "任务 603032.SH 完成\n", "任务 603031.SH 完成\n", + "任务 603032.SH 完成\n", "任务 603033.SH 完成\n", "任务 603035.SH 完成\n", "任务 603036.SH 完成\n", @@ -4030,10 +3985,10 @@ "任务 603041.SH 完成\n", "任务 603042.SH 完成\n", "任务 603043.SH 完成\n", - "任务 603048.SH 完成\n", "任务 603045.SH 完成\n", - "任务 603051.SH 完成\n", + "任务 603048.SH 完成\n", "任务 603050.SH 完成\n", + "任务 603051.SH 完成\n", "任务 603052.SH 完成\n", "任务 603053.SH 完成\n", "任务 603055.SH 完成\n", @@ -4044,8 +3999,8 @@ "任务 603060.SH 完成\n", "任务 603061.SH 完成\n", "任务 603062.SH 完成\n", - "任务 603065.SH 完成\n", "任务 603063.SH 完成\n", + "任务 603065.SH 完成\n", "任务 603066.SH 完成\n", "任务 603067.SH 完成\n", "任务 603068.SH 完成\n", @@ -4057,12 +4012,12 @@ "任务 603075.SH 完成\n", "任务 603076.SH 完成\n", "任务 603077.SH 完成\n", - "任务 603078.SH 完成\n", "任务 603079.SH 完成\n", + "任务 603078.SH 完成\n", "任务 603080.SH 完成\n", "任务 603081.SH 完成\n", - "任务 603082.SH 完成\n", "任务 603083.SH 完成\n", + "任务 603082.SH 完成\n", "任务 603085.SH 完成\n", "任务 603086.SH 完成\n", "任务 603087.SH 完成\n", @@ -4080,22 +4035,22 @@ "任务 603101.SH 完成\n", "任务 603102.SH 完成\n", "任务 603103.SH 完成\n", - "任务 603106.SH 完成\n", "任务 603105.SH 完成\n", - "任务 603108.SH 完成\n", + "任务 603106.SH 完成\n", "任务 603107.SH 完成\n", - "任务 603110.SH 完成\n", + "任务 603108.SH 完成\n", "任务 603109.SH 完成\n", + "任务 603110.SH 完成\n", "任务 603111.SH 完成\n", "任务 603112.SH 完成\n", "任务 603113.SH 完成\n", "任务 603115.SH 完成\n", - "任务 603117.SH 完成\n", "任务 603116.SH 完成\n", + "任务 603117.SH 完成\n", "任务 603118.SH 完成\n", "任务 603119.SH 完成\n", - "任务 603122.SH 完成\n", "任务 603121.SH 完成\n", + "任务 603122.SH 完成\n", "任务 603123.SH 完成\n", "任务 603125.SH 完成\n", "任务 603126.SH 完成\n", @@ -4106,8 +4061,8 @@ "任务 603131.SH 完成\n", "任务 603132.SH 完成\n", "任务 603135.SH 完成\n", - "任务 603137.SH 完成\n", "任务 603136.SH 完成\n", + "任务 603137.SH 完成\n", "任务 603138.SH 完成\n", "任务 603139.SH 完成\n", "任务 603150.SH 完成\n", @@ -4137,20 +4092,20 @@ "任务 603180.SH 完成\n", "任务 603181.SH 完成\n", "任务 603182.SH 完成\n", - "任务 603185.SH 完成\n", "任务 603183.SH 完成\n", - "任务 603187.SH 完成\n", + "任务 603185.SH 完成\n", "任务 603186.SH 完成\n", - "任务 603189.SH 完成\n", + "任务 603187.SH 完成\n", "任务 603188.SH 完成\n", - "任务 603191.SH 完成\n", + "任务 603189.SH 完成\n", "任务 603190.SH 完成\n", + "任务 603191.SH 完成\n", "任务 603192.SH 完成\n", "任务 603193.SH 完成\n", - "任务 603195.SH 完成\n", "任务 603194.SH 完成\n", - "任务 603197.SH 完成\n", + "任务 603195.SH 完成\n", "任务 603196.SH 完成\n", + "任务 603197.SH 完成\n", "任务 603198.SH 完成\n", "任务 603199.SH 完成\n", "任务 603200.SH 完成\n", @@ -4180,20 +4135,20 @@ "任务 603228.SH 完成\n", "任务 603229.SH 完成\n", "任务 603230.SH 完成\n", - "任务 603232.SH 完成\n", "任务 603231.SH 完成\n", + "任务 603232.SH 完成\n", "任务 603233.SH 完成\n", "任务 603235.SH 完成\n", - "任务 603237.SH 完成\n", "任务 603236.SH 完成\n", + "任务 603237.SH 完成\n", "任务 603238.SH 完成\n", "任务 603239.SH 完成\n", "任务 603255.SH 完成\n", "任务 603256.SH 完成\n", "任务 603258.SH 完成\n", "任务 603259.SH 完成\n", - "任务 603261.SH 完成\n", "任务 603260.SH 完成\n", + "任务 603261.SH 完成\n", "任务 603266.SH 完成\n", "任务 603267.SH 完成\n", "任务 603268.SH 完成\n", @@ -4267,12 +4222,12 @@ "任务 603356.SH 完成\n", "任务 603357.SH 完成\n", "任务 603358.SH 完成\n", - "任务 603359.SH 完成\n", "任务 603360.SH 完成\n", - "任务 603363.SH 完成\n", + "任务 603359.SH 完成\n", "任务 603365.SH 完成\n", - "任务 603366.SH 完成\n", + "任务 603363.SH 完成\n", "任务 603367.SH 完成\n", + "任务 603366.SH 完成\n", "任务 603368.SH 完成\n", "任务 603369.SH 完成\n", "任务 603373.SH 完成\n", @@ -4303,40 +4258,40 @@ "任务 603439.SH 完成\n", "任务 603444.SH 完成\n", "任务 603456.SH 完成\n", - "任务 603458.SH 完成\n", "任务 603466.SH 完成\n", + "任务 603458.SH 完成\n", "任务 603477.SH 完成\n", "任务 603486.SH 完成\n", - "任务 603489.SH 完成\n", "任务 603488.SH 完成\n", - "任务 603499.SH 完成\n", + "任务 603489.SH 完成\n", "任务 603496.SH 完成\n", - "任务 603501.SH 完成\n", + "任务 603499.SH 完成\n", "任务 603500.SH 完成\n", + "任务 603501.SH 完成\n", "任务 603505.SH 完成\n", "任务 603506.SH 完成\n", "任务 603507.SH 完成\n", "任务 603508.SH 完成\n", - "任务 603511.SH 完成\n", "任务 603515.SH 完成\n", + "任务 603511.SH 完成\n", "任务 603516.SH 完成\n", "任务 603517.SH 完成\n", "任务 603518.SH 完成\n", "任务 603519.SH 完成\n", - "任务 603520.SH 完成\n", "任务 603527.SH 完成\n", + "任务 603520.SH 完成\n", "任务 603528.SH 完成\n", "任务 603529.SH 完成\n", "任务 603530.SH 完成\n", "任务 603533.SH 完成\n", - "任务 603535.SH 完成\n", "任务 603536.SH 完成\n", - "任务 603538.SH 完成\n", + "任务 603535.SH 完成\n", "任务 603551.SH 完成\n", + "任务 603538.SH 完成\n", "任务 603556.SH 完成\n", "任务 603557.SH 完成\n", - "任务 603558.SH 完成\n", "任务 603559.SH 完成\n", + "任务 603558.SH 完成\n", "任务 603565.SH 完成\n", "任务 603566.SH 完成\n", "任务 603567.SH 完成\n", @@ -4356,26 +4311,26 @@ "任务 603595.SH 完成\n", "任务 603596.SH 完成\n", "任务 603598.SH 完成\n", - "任务 603599.SH 完成\n", "任务 603600.SH 完成\n", + "任务 603599.SH 完成\n", "任务 603601.SH 完成\n", "任务 603602.SH 完成\n", - "任务 603605.SH 完成\n", "任务 603606.SH 完成\n", + "任务 603605.SH 完成\n", "任务 603607.SH 完成\n", "任务 603608.SH 完成\n", "任务 603609.SH 完成\n", "任务 603610.SH 完成\n", "任务 603611.SH 完成\n", "任务 603612.SH 完成\n", - "任务 603613.SH 完成\n", "任务 603615.SH 完成\n", + "任务 603613.SH 完成\n", "任务 603616.SH 完成\n", "任务 603617.SH 完成\n", - "任务 603618.SH 完成\n", "任务 603619.SH 完成\n", - "任务 603626.SH 完成\n", + "任务 603618.SH 完成\n", "任务 603628.SH 完成\n", + "任务 603626.SH 完成\n", "任务 603629.SH 完成\n", "任务 603630.SH 完成\n", "任务 603633.SH 完成\n", @@ -4405,8 +4360,8 @@ "任务 603679.SH 完成\n", "任务 603680.SH 完成\n", "任务 603681.SH 完成\n", - "任务 603683.SH 完成\n", "任务 603682.SH 完成\n", + "任务 603683.SH 完成\n", "任务 603685.SH 完成\n", "任务 603686.SH 完成\n", "任务 603687.SH 完成\n", @@ -4442,8 +4397,8 @@ "任务 603730.SH 完成\n", "任务 603733.SH 完成\n", "任务 603737.SH 完成\n", - "任务 603739.SH 完成\n", "任务 603738.SH 完成\n", + "任务 603739.SH 完成\n", "任务 603755.SH 完成\n", "任务 603757.SH 完成\n", "任务 603758.SH 完成\n", @@ -4458,8 +4413,8 @@ "任务 603779.SH 完成\n", "任务 603786.SH 完成\n", "任务 603787.SH 完成\n", - "任务 603788.SH 完成\n", "任务 603789.SH 完成\n", + "任务 603788.SH 完成\n", "任务 603790.SH 完成\n", "任务 603797.SH 完成\n", "任务 603798.SH 完成\n", @@ -4549,14 +4504,14 @@ "任务 603948.SH 完成\n", "任务 603949.SH 完成\n", "任务 603950.SH 完成\n", - "任务 603955.SH 完成\n", "任务 603956.SH 完成\n", + "任务 603955.SH 完成\n", "任务 603958.SH 完成\n", "任务 603959.SH 完成\n", - "任务 603960.SH 完成\n", "任务 603963.SH 完成\n", - "任务 603966.SH 完成\n", + "任务 603960.SH 完成\n", "任务 603967.SH 完成\n", + "任务 603966.SH 完成\n", "任务 603968.SH 完成\n", "任务 603969.SH 完成\n", "任务 603970.SH 完成\n", @@ -4565,8 +4520,8 @@ "任务 603978.SH 完成\n", "任务 603979.SH 完成\n", "任务 603980.SH 完成\n", - "任务 603982.SH 完成\n", "任务 603983.SH 完成\n", + "任务 603982.SH 完成\n", "任务 603985.SH 完成\n", "任务 603986.SH 完成\n", "任务 603987.SH 完成\n", @@ -4598,10 +4553,10 @@ "任务 605056.SH 完成\n", "任务 605058.SH 完成\n", "任务 605060.SH 完成\n", - "任务 605066.SH 完成\n", "任务 605068.SH 完成\n", - "任务 605069.SH 完成\n", + "任务 605066.SH 完成\n", "任务 605077.SH 完成\n", + "任务 605069.SH 完成\n", "任务 605080.SH 完成\n", "任务 605081.SH 完成\n", "任务 605086.SH 完成\n", @@ -4622,24 +4577,25 @@ "任务 605133.SH 完成\n", "任务 605136.SH 完成\n", "任务 605138.SH 完成\n", + "任务 605151.SH 完成\n", "任务 605155.SH 完成\n", "任务 605158.SH 完成\n", "任务 605162.SH 完成\n", "任务 605166.SH 完成\n", "任务 605167.SH 完成\n", "任务 605168.SH 完成\n", - "任务 605169.SH 完成\n", "任务 605177.SH 完成\n", + "任务 605169.SH 完成\n", "任务 605178.SH 完成\n", "任务 605179.SH 完成\n", "任务 605180.SH 完成\n", "任务 605183.SH 完成\n", - "任务 605186.SH 完成\n", "任务 605188.SH 完成\n", - "任务 605189.SH 完成\n", + "任务 605186.SH 完成\n", "任务 605196.SH 完成\n", - "任务 605198.SH 完成\n", + "任务 605189.SH 完成\n", "任务 605199.SH 完成\n", + "任务 605198.SH 完成\n", "任务 605208.SH 完成\n", "任务 605218.SH 完成\n", "任务 605222.SH 完成\n", @@ -4650,8 +4606,8 @@ "任务 605266.SH 完成\n", "任务 605268.SH 完成\n", "任务 605277.SH 完成\n", - "任务 605286.SH 完成\n", "任务 605287.SH 完成\n", + "任务 605286.SH 完成\n", "任务 605288.SH 完成\n", "任务 605289.SH 完成\n", "任务 605296.SH 完成\n", @@ -4681,15 +4637,14 @@ "任务 605399.SH 完成\n", "任务 605488.SH 完成\n", "任务 605499.SH 完成\n", - "任务 605151.SH 完成\n", "任务 605500.SH 完成\n", "任务 605507.SH 完成\n", "任务 605555.SH 完成\n", "任务 605566.SH 完成\n", "任务 605567.SH 完成\n", "任务 605577.SH 完成\n", - "任务 605588.SH 完成\n", "任务 605580.SH 完成\n", + "任务 605588.SH 完成\n", "任务 605589.SH 完成\n", "任务 605598.SH 完成\n", "任务 605599.SH 完成\n", @@ -4756,28 +4711,28 @@ "任务 688070.SH 完成\n", "任务 688071.SH 完成\n", "任务 688072.SH 完成\n", + "任务 688075.SH 完成\n", "任务 688073.SH 完成\n", "任务 688076.SH 完成\n", - "任务 688075.SH 完成\n", - "任务 688078.SH 完成\n", "任务 688077.SH 完成\n", - "任务 688080.SH 完成\n", + "任务 688078.SH 完成\n", "任务 688079.SH 完成\n", - "任务 688082.SH 完成\n", + "任务 688080.SH 完成\n", "任务 688081.SH 完成\n", + "任务 688082.SH 完成\n", "任务 688083.SH 完成\n", "任务 688084.SH 完成\n", "任务 688085.SH 完成\n", "任务 688087.SH 完成\n", - "任务 688089.SH 完成\n", "任务 688088.SH 完成\n", - "任务 688091.SH 完成\n", + "任务 688089.SH 完成\n", "任务 688090.SH 完成\n", - "任务 688093.SH 完成\n", + "任务 688091.SH 完成\n", "任务 688092.SH 完成\n", - "任务 688096.SH 完成\n", + "任务 688093.SH 完成\n", "任务 688095.SH 完成\n", "任务 688097.SH 完成\n", + "任务 688096.SH 完成\n", "任务 688098.SH 完成\n", "任务 688099.SH 完成\n", "任务 688100.SH 完成\n", @@ -4810,22 +4765,22 @@ "任务 688129.SH 完成\n", "任务 688130.SH 完成\n", "任务 688131.SH 完成\n", - "任务 688132.SH 完成\n", "任务 688133.SH 完成\n", - "任务 688135.SH 完成\n", + "任务 688132.SH 完成\n", "任务 688136.SH 完成\n", - "任务 688137.SH 完成\n", + "任务 688135.SH 完成\n", "任务 688138.SH 完成\n", - "任务 688139.SH 完成\n", + "任务 688137.SH 完成\n", "任务 688141.SH 完成\n", + "任务 688139.SH 完成\n", "任务 688143.SH 完成\n", "任务 688146.SH 完成\n", "任务 688147.SH 完成\n", "任务 688148.SH 完成\n", "任务 688150.SH 完成\n", "任务 688151.SH 完成\n", - "任务 688152.SH 完成\n", "任务 688153.SH 完成\n", + "任务 688152.SH 完成\n", "任务 688155.SH 完成\n", "任务 688156.SH 完成\n", "任务 688157.SH 完成\n", @@ -4861,8 +4816,8 @@ "任务 688189.SH 完成\n", "任务 688190.SH 完成\n", "任务 688191.SH 完成\n", - "任务 688192.SH 完成\n", "任务 688193.SH 完成\n", + "任务 688192.SH 完成\n", "任务 688195.SH 完成\n", "任务 688196.SH 完成\n", "任务 688197.SH 完成\n", @@ -4937,14 +4892,14 @@ "任务 688279.SH 完成\n", "任务 688280.SH 完成\n", "任务 688281.SH 完成\n", + "任务 688283.SH 完成\n", "任务 688282.SH 完成\n", "任务 688285.SH 完成\n", - "任务 688283.SH 完成\n", "任务 688286.SH 完成\n", - "任务 688287.SH 完成\n", - "任务 688289.SH 完成\n", "任务 688288.SH 完成\n", + "任务 688287.SH 完成\n", "任务 688290.SH 完成\n", + "任务 688289.SH 完成\n", "任务 688291.SH 完成\n", "任务 688292.SH 完成\n", "任务 688293.SH 完成\n", @@ -4956,48 +4911,48 @@ "任务 688300.SH 完成\n", "任务 688301.SH 完成\n", "任务 688302.SH 完成\n", - "任务 688305.SH 完成\n", "任务 688303.SH 完成\n", + "任务 688305.SH 完成\n", "任务 688306.SH 完成\n", - "任务 688307.SH 完成\n", "任务 688308.SH 完成\n", + "任务 688307.SH 完成\n", "任务 688309.SH 完成\n", "任务 688310.SH 完成\n", "任务 688311.SH 完成\n", - "任务 688313.SH 完成\n", "任务 688312.SH 完成\n", + "任务 688313.SH 完成\n", "任务 688314.SH 完成\n", "任务 688315.SH 完成\n", - "任务 688317.SH 完成\n", "任务 688316.SH 完成\n", + "任务 688317.SH 完成\n", "任务 688318.SH 完成\n", "任务 688319.SH 完成\n", "任务 688320.SH 完成\n", "任务 688321.SH 完成\n", - "任务 688323.SH 完成\n", "任务 688322.SH 完成\n", - "任务 688326.SH 完成\n", + "任务 688323.SH 完成\n", "任务 688325.SH 完成\n", + "任务 688326.SH 完成\n", "任务 688327.SH 完成\n", "任务 688328.SH 完成\n", - "任务 688330.SH 完成\n", "任务 688329.SH 完成\n", + "任务 688330.SH 完成\n", "任务 688331.SH 完成\n", "任务 688332.SH 完成\n", - "任务 688334.SH 完成\n", "任务 688333.SH 完成\n", + "任务 688334.SH 完成\n", "任务 688335.SH 完成\n", "任务 688336.SH 完成\n", "任务 688337.SH 完成\n", "任务 688338.SH 完成\n", - "任务 688343.SH 完成\n", "任务 688339.SH 完成\n", - "任务 688347.SH 完成\n", + "任务 688343.SH 完成\n", "任务 688345.SH 完成\n", "任务 688348.SH 完成\n", + "任务 688347.SH 完成\n", + "任务 688350.SH 完成\n", "任务 688349.SH 完成\n", "任务 688351.SH 完成\n", - "任务 688350.SH 完成\n", "任务 688352.SH 完成\n", "任务 688353.SH 完成\n", "任务 688355.SH 完成\n", @@ -5005,8 +4960,8 @@ "任务 688357.SH 完成\n", "任务 688358.SH 完成\n", "任务 688359.SH 完成\n", - "任务 688360.SH 完成\n", "任务 688361.SH 完成\n", + "任务 688360.SH 完成\n", "任务 688362.SH 完成\n", "任务 688363.SH 完成\n", "任务 688365.SH 完成\n", @@ -5046,26 +5001,26 @@ "任务 688408.SH 完成\n", "任务 688409.SH 完成\n", "任务 688410.SH 完成\n", - "任务 688416.SH 完成\n", "任务 688411.SH 完成\n", + "任务 688416.SH 完成\n", "任务 688418.SH 完成\n", - "任务 688419.SH 完成\n", "任务 688420.SH 完成\n", + "任务 688419.SH 完成\n", "任务 688425.SH 完成\n", "任务 688426.SH 完成\n", "任务 688428.SH 完成\n", - "任务 688432.SH 完成\n", "任务 688429.SH 完成\n", "任务 688433.SH 完成\n", + "任务 688432.SH 完成\n", + "任务 688439.SH 完成\n", "任务 688435.SH 完成\n", "任务 688443.SH 完成\n", - "任务 688439.SH 完成\n", "任务 688448.SH 完成\n", "任务 688449.SH 完成\n", "任务 688450.SH 完成\n", "任务 688455.SH 完成\n", - "任务 688458.SH 完成\n", "任务 688456.SH 完成\n", + "任务 688458.SH 完成\n", "任务 688459.SH 完成\n", "任务 688466.SH 完成\n", "任务 688468.SH 完成\n", @@ -5074,28 +5029,28 @@ "任务 688475.SH 完成\n", "任务 688478.SH 完成\n", "任务 688479.SH 完成\n", - "任务 688484.SH 完成\n", "任务 688480.SH 完成\n", - "任务 688486.SH 完成\n", + "任务 688484.SH 完成\n", "任务 688485.SH 完成\n", + "任务 688486.SH 完成\n", "任务 688488.SH 完成\n", "任务 688489.SH 完成\n", "任务 688496.SH 完成\n", - "任务 688498.SH 完成\n", "任务 688499.SH 完成\n", + "任务 688498.SH 完成\n", "任务 688500.SH 完成\n", "任务 688501.SH 完成\n", "任务 688502.SH 完成\n", - "任务 688503.SH 完成\n", "任务 688505.SH 完成\n", + "任务 688503.SH 完成\n", "任务 688506.SH 完成\n", "任务 688507.SH 完成\n", - "任务 688509.SH 完成\n", "任务 688508.SH 完成\n", + "任务 688509.SH 完成\n", "任务 688510.SH 完成\n", "任务 688511.SH 完成\n", - "任务 688512.SH 完成\n", "任务 688513.SH 完成\n", + "任务 688512.SH 完成\n", "任务 688515.SH 完成\n", "任务 688516.SH 完成\n", "任务 688517.SH 完成\n", @@ -5105,24 +5060,24 @@ "任务 688521.SH 完成\n", "任务 688522.SH 完成\n", "任务 688523.SH 完成\n", - "任务 688525.SH 完成\n", "任务 688526.SH 完成\n", + "任务 688525.SH 完成\n", + "任务 688529.SH 完成\n", "任务 688528.SH 完成\n", "任务 688530.SH 完成\n", - "任务 688529.SH 完成\n", - "任务 688533.SH 完成\n", "任务 688531.SH 完成\n", - "任务 688536.SH 完成\n", + "任务 688533.SH 完成\n", "任务 688535.SH 完成\n", - "任务 688539.SH 完成\n", + "任务 688536.SH 完成\n", "任务 688538.SH 完成\n", - "任务 688545.SH 完成\n", + "任务 688539.SH 完成\n", "任务 688543.SH 完成\n", + "任务 688545.SH 完成\n", "任务 688548.SH 完成\n", - "任务 688549.SH 完成\n", "任务 688550.SH 完成\n", - "任务 688551.SH 完成\n", + "任务 688549.SH 完成\n", "任务 688552.SH 完成\n", + "任务 688551.SH 完成\n", "任务 688553.SH 完成\n", "任务 688556.SH 完成\n", "任务 688557.SH 完成\n", @@ -5131,8 +5086,8 @@ "任务 688560.SH 完成\n", "任务 688561.SH 完成\n", "任务 688562.SH 完成\n", - "任务 688563.SH 完成\n", "任务 688565.SH 完成\n", + "任务 688563.SH 完成\n", "任务 688566.SH 完成\n", "任务 688567.SH 完成\n", "任务 688568.SH 完成\n", @@ -5175,14 +5130,14 @@ "任务 688610.SH 完成\n", "任务 688611.SH 完成\n", "任务 688612.SH 完成\n", - "任务 688613.SH 完成\n", "任务 688615.SH 完成\n", + "任务 688613.SH 完成\n", "任务 688616.SH 完成\n", "任务 688617.SH 完成\n", "任务 688618.SH 完成\n", "任务 688619.SH 完成\n", - "任务 688620.SH 完成\n", "任务 688621.SH 完成\n", + "任务 688620.SH 完成\n", "任务 688622.SH 完成\n", "任务 688623.SH 完成\n", "任务 688625.SH 完成\n", @@ -5276,14 +5231,14 @@ "任务 688799.SH 完成\n", "任务 688800.SH 完成\n", "任务 688819.SH 完成\n", - "任务 830779.BJ 完成\n", "任务 688981.SH 完成\n", + "任务 830779.BJ 完成\n", "任务 830799.BJ 完成\n", "任务 830809.BJ 完成\n", "任务 830832.BJ 完成\n", "任务 830839.BJ 完成\n", - "任务 830896.BJ 完成\n", "任务 830879.BJ 完成\n", + "任务 830896.BJ 完成\n", "任务 830946.BJ 完成\n", "任务 830964.BJ 完成\n", "任务 830974.BJ 完成\n", @@ -5311,8 +5266,8 @@ "任务 831855.BJ 完成\n", "任务 831856.BJ 完成\n", "任务 831906.BJ 完成\n", - "任务 831961.BJ 完成\n", "任务 832000.BJ 完成\n", + "任务 831961.BJ 完成\n", "任务 832023.BJ 完成\n", "任务 832089.BJ 完成\n", "任务 832110.BJ 完成\n", @@ -5353,18 +5308,18 @@ "任务 833523.BJ 完成\n", "任务 833533.BJ 完成\n", "任务 833575.BJ 完成\n", - "任务 833580.BJ 完成\n", "任务 833751.BJ 完成\n", + "任务 833580.BJ 完成\n", "任务 833781.BJ 完成\n", "任务 833819.BJ 完成\n", "任务 833873.BJ 完成\n", "任务 833914.BJ 完成\n", "任务 833943.BJ 完成\n", "任务 834014.BJ 完成\n", - "任务 834033.BJ 完成\n", "任务 834021.BJ 完成\n", - "任务 834062.BJ 完成\n", + "任务 834033.BJ 完成\n", "任务 834058.BJ 完成\n", + "任务 834062.BJ 完成\n", "任务 834261.BJ 完成\n", "任务 834407.BJ 完成\n", "任务 834415.BJ 完成\n", @@ -5377,14 +5332,14 @@ "任务 834950.BJ 完成\n", "任务 835174.BJ 完成\n", "任务 835179.BJ 完成\n", - "任务 835185.BJ 完成\n", "任务 835184.BJ 完成\n", + "任务 835185.BJ 完成\n", "任务 835207.BJ 完成\n", "任务 835237.BJ 完成\n", "任务 835305.BJ 完成\n", "任务 835368.BJ 完成\n", - "任务 835508.BJ 完成\n", "任务 835438.BJ 完成\n", + "任务 835508.BJ 完成\n", "任务 835579.BJ 完成\n", "任务 835640.BJ 完成\n", "任务 835670.BJ 完成\n", @@ -5421,15 +5376,15 @@ "任务 837006.BJ 完成\n", "任务 837023.BJ 完成\n", "任务 837046.BJ 完成\n", - "任务 837092.BJ 完成\n", "任务 837174.BJ 完成\n", + "任务 837092.BJ 完成\n", "任务 837212.BJ 完成\n", - "任务 837344.BJ 完成\n", "任务 837242.BJ 完成\n", + "任务 837344.BJ 完成\n", "任务 837403.BJ 完成\n", "任务 837592.BJ 完成\n", - "任务 837748.BJ 完成\n", "任务 837663.BJ 完成\n", + "任务 837748.BJ 完成\n", "任务 837821.BJ 完成\n", "任务 838030.BJ 完成\n", "任务 838163.BJ 完成\n", @@ -5464,11 +5419,11 @@ "任务 870656.BJ 完成\n", "任务 870726.BJ 完成\n", "任务 870866.BJ 完成\n", + "任务 870976.BJ 完成\n", "任务 871245.BJ 完成\n", "任务 871263.BJ 完成\n", "任务 871396.BJ 完成\n", "任务 871478.BJ 完成\n", - "任务 870976.BJ 完成\n", "任务 871553.BJ 完成\n", "任务 871634.BJ 完成\n", "任务 871642.BJ 完成\n", @@ -5497,10 +5452,10 @@ "任务 873305.BJ 完成\n", "任务 873339.BJ 完成\n", "任务 873527.BJ 完成\n", - "任务 873570.BJ 完成\n", "任务 873576.BJ 完成\n", - "任务 873593.BJ 完成\n", + "任务 873570.BJ 完成\n", "任务 873665.BJ 完成\n", + "任务 873593.BJ 完成\n", "任务 873679.BJ 完成\n", "任务 873690.BJ 完成\n", "任务 873693.BJ 完成\n", @@ -5511,26 +5466,26 @@ "任务 873833.BJ 完成\n", "任务 920002.BJ 完成\n", "任务 920008.BJ 完成\n", - "任务 920016.BJ 完成\n", "任务 920019.BJ 完成\n", + "任务 920016.BJ 完成\n", "任务 920060.BJ 完成\n", "任务 920066.BJ 完成\n", - "任务 920082.BJ 完成\n", "任务 920088.BJ 完成\n", + "任务 920082.BJ 完成\n", "任务 920098.BJ 完成\n", "任务 920099.BJ 完成\n", - "任务 920106.BJ 完成\n", "任务 920108.BJ 完成\n", - "任务 920111.BJ 完成\n", + "任务 920106.BJ 完成\n", "任务 920116.BJ 完成\n", + "任务 920111.BJ 完成\n", "任务 920118.BJ 完成\n", "任务 920128.BJ 完成\n", "任务 689009.SH 完成\n", "任务 000003.SZ 完成\n", - "任务 000005.SZ 完成\n", "任务 000013.SZ 完成\n", - "任务 000015.SZ 完成\n", + "任务 000005.SZ 完成\n", "任务 000018.SZ 完成\n", + "任务 000015.SZ 完成\n", "任务 000023.SZ 完成\n", "任务 000024.SZ 完成\n", "任务 000033.SZ 完成\n", @@ -5543,30 +5498,30 @@ "任务 000412.SZ 完成\n", "任务 000413.SZ 完成\n", "任务 000416.SZ 完成\n", - "任务 000418.SZ 完成\n", "任务 000502.SZ 完成\n", + "任务 000418.SZ 完成\n", "任务 000508.SZ 完成\n", "任务 000511.SZ 完成\n", "任务 000515.SZ 完成\n", "任务 000522.SZ 完成\n", - "任务 000527.SZ 完成\n", "任务 000535.SZ 完成\n", - "任务 000540.SZ 完成\n", + "任务 000527.SZ 完成\n", "任务 000542.SZ 完成\n", - "任务 000549.SZ 完成\n", + "任务 000540.SZ 完成\n", "任务 000556.SZ 完成\n", - "任务 000562.SZ 完成\n", + "任务 000549.SZ 完成\n", "任务 000569.SZ 完成\n", + "任务 000562.SZ 完成\n", "任务 000578.SZ 完成\n", "任务 000583.SZ 完成\n", "任务 000585.SZ 完成\n", "任务 000587.SZ 完成\n", "任务 000588.SZ 完成\n", "任务 000594.SZ 完成\n", - "任务 000602.SZ 完成\n", "任务 000606.SZ 完成\n", - "任务 000611.SZ 完成\n", + "任务 000602.SZ 完成\n", "任务 000613.SZ 完成\n", + "任务 000611.SZ 完成\n", "任务 000616.SZ 完成\n", "任务 000618.SZ 完成\n", "任务 000621.SZ 完成\n", @@ -5607,8 +5562,8 @@ "任务 000956.SZ 完成\n", "任务 000961.SZ 完成\n", "任务 000971.SZ 完成\n", - "任务 000976.SZ 完成\n", "任务 000979.SZ 完成\n", + "任务 000976.SZ 完成\n", "任务 000982.SZ 完成\n", "任务 000996.SZ 完成\n", "任务 002002.SZ 完成\n", @@ -5650,8 +5605,8 @@ "任务 002618.SZ 完成\n", "任务 002619.SZ 完成\n", "任务 002621.SZ 完成\n", - "任务 002665.SZ 完成\n", "任务 002680.SZ 完成\n", + "任务 002665.SZ 完成\n", "任务 002684.SZ 完成\n", "任务 002699.SZ 完成\n", "任务 002711.SZ 完成\n", @@ -5682,16 +5637,16 @@ "任务 300325.SZ 完成\n", "任务 300330.SZ 完成\n", "任务 300336.SZ 完成\n", - "任务 300362.SZ 完成\n", "任务 300356.SZ 完成\n", - "任务 300372.SZ 完成\n", + "任务 300362.SZ 完成\n", "任务 300367.SZ 完成\n", - "任务 300431.SZ 完成\n", + "任务 300372.SZ 完成\n", "任务 300392.SZ 完成\n", + "任务 300431.SZ 完成\n", "任务 300495.SZ 完成\n", "任务 300526.SZ 完成\n", - "任务 300799.SZ 完成\n", "任务 300742.SZ 完成\n", + "任务 300799.SZ 完成\n", "任务 600001.SH 完成\n", "任务 600002.SH 完成\n", "任务 600003.SH 完成\n", @@ -5710,8 +5665,8 @@ "任务 600102.SH 完成\n", "任务 600112.SH 完成\n", "任务 600122.SH 完成\n", - "任务 600145.SH 完成\n", "任务 600139.SH 完成\n", + "任务 600145.SH 完成\n", "任务 600146.SH 完成\n", "任务 600175.SH 完成\n", "任务 600181.SH 完成\n", @@ -5720,36 +5675,36 @@ "任务 600213.SH 完成\n", "任务 600220.SH 完成\n", "任务 600240.SH 完成\n", - "任务 600247.SH 完成\n", "任务 600242.SH 完成\n", + "任务 600247.SH 完成\n", "任务 600253.SH 完成\n", "任务 600260.SH 完成\n", - "任务 600270.SH 完成\n", "任务 600263.SH 完成\n", - "任务 600277.SH 完成\n", + "任务 600270.SH 完成\n", "任务 600275.SH 完成\n", + "任务 600277.SH 完成\n", "任务 600286.SH 完成\n", "任务 600290.SH 完成\n", - "任务 600296.SH 完成\n", "任务 600291.SH 完成\n", + "任务 600296.SH 完成\n", "任务 600297.SH 完成\n", "任务 600306.SH 完成\n", "任务 600311.SH 完成\n", "任务 600317.SH 完成\n", - "任务 600357.SH 完成\n", "任务 600321.SH 完成\n", + "任务 600357.SH 完成\n", "任务 600385.SH 完成\n", - "任务 600393.SH 完成\n", "任务 600401.SH 完成\n", + "任务 600393.SH 完成\n", "任务 600432.SH 完成\n", - "任务 600472.SH 完成\n", "任务 600466.SH 完成\n", + "任务 600472.SH 完成\n", "任务 600485.SH 完成\n", "任务 600532.SH 完成\n", "任务 600553.SH 完成\n", "任务 600555.SH 完成\n", - "任务 600591.SH 完成\n", "任务 600565.SH 完成\n", + "任务 600591.SH 完成\n", "任务 600607.SH 完成\n", "任务 600614.SH 完成\n", "任务 600625.SH 完成\n", @@ -5775,8 +5730,8 @@ "任务 600723.SH 完成\n", "任务 600747.SH 完成\n", "任务 600752.SH 完成\n", - "任务 600762.SH 完成\n", "任务 600766.SH 完成\n", + "任务 600762.SH 完成\n", "任务 600767.SH 完成\n", "任务 600772.SH 完成\n", "任务 600781.SH 完成\n", @@ -5796,8 +5751,8 @@ "任务 600878.SH 完成\n", "任务 600890.SH 完成\n", "任务 600891.SH 完成\n", - "任务 600896.SH 完成\n", "任务 600899.SH 完成\n", + "任务 600896.SH 完成\n", "任务 600978.SH 完成\n", "任务 600991.SH 完成\n", "任务 601258.SH 完成\n", @@ -5818,10 +5773,56 @@ ] } ], - "execution_count": 3 + "source": [ + "from concurrent.futures import ThreadPoolExecutor, as_completed\n", + "\n", + "# 读取本地保存的股票列表 CSV 文件(假设文件名为 stocks_data.csv)\n", + "stocks_df = pd.read_csv('../../../stocks_list.csv', encoding='utf-8-sig')\n", + "\n", + "# 用于存放所有股票的日线数据(每次获取的 DataFrame)\n", + "daily_data_list = []\n", + "\n", + "# API 调用计数和时间控制变量\n", + "api_call_count = 0\n", + "batch_start_time = time.time()\n", + "\n", + "\n", + "def get_data(ts_code):\n", + " daily_data = ts.pro_bar(ts_code=ts_code, adj='hfq', start_date=start_date)\n", + " # 如果返回数据不为空,则添加一列标识股票代码\n", + " if daily_data is not None and not daily_data.empty:\n", + " return daily_data\n", + "\n", + "\n", + "# 循环遍历每个股票代码并获取数据\n", + "with ThreadPoolExecutor(max_workers=2) as executor:\n", + " future_to_date = {executor.submit(get_data, row['ts_code']): row['ts_code'] for idx, row in stocks_df.iterrows()}\n", + "\n", + " for future in as_completed(future_to_date):\n", + " ts_code = future_to_date[future]\n", + " try:\n", + " result = future.result()\n", + " daily_data_list.append(result)\n", + " print(f\"任务 {ts_code} 完成\")\n", + " except Exception as e:\n", + " print(f\"获取 {ts_code} 数据时出错: {e}\")\n", + " # 计数一次 API 调用\n", + " api_call_count += 1\n", + "\n", + " # 每调用300次,检查时间是否少于1分钟,如果少于则等待剩余时间\n", + " if api_call_count % 300 == 0:\n", + " elapsed = time.time() - batch_start_time\n", + " if elapsed < 60:\n", + " sleep_time = 60 - elapsed\n", + " print(f\"已调用300次API,等待 {sleep_time:.2f} 秒以满足速率限制...\")\n", + " time.sleep(sleep_time)\n", + " # 重置批次起始时间\n", + " batch_start_time = time.time()\n" + ] }, { "cell_type": "code", + "execution_count": 4, "id": "35d605a189a83c1f", "metadata": { "ExecuteTime": { @@ -5829,49 +5830,49 @@ "start_time": "2025-04-09T15:25:31.461200Z" } }, - "source": [ - "all_daily_data = pd.concat(daily_data_list, ignore_index=True)\n", - "print(all_daily_data)" - ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ts_code trade_date open high low close pre_close \\\n", - "0 000001.SZ 20250409 1371.12 1383.90 1362.18 1380.07 1382.62 \n", - "1 000002.SZ 20250409 1217.42 1302.82 1202.88 1282.83 1235.59 \n", - "2 000004.SZ 20250409 34.91 36.29 31.70 36.09 35.19 \n", - "3 000006.SZ 20250409 222.54 238.04 204.66 235.26 226.92 \n", - "4 000007.SZ 20250409 44.32 45.89 40.34 45.56 44.49 \n", + "0 000001.SZ 20250506 1395.40 1405.63 1391.57 1400.51 1394.12 \n", + "1 000002.SZ 20250506 1233.77 1242.86 1231.95 1241.04 1237.40 \n", + "2 000004.SZ 20250506 30.76 30.76 30.76 30.76 32.39 \n", + "3 000006.SZ 20250506 251.16 256.72 251.16 256.72 252.35 \n", + "4 000007.SZ 20250506 55.92 57.49 55.42 56.50 55.67 \n", "... ... ... ... ... ... ... ... \n", - "5356 873706.BJ 20250409 16.57 21.81 16.57 21.81 16.79 \n", - "5357 873726.BJ 20250409 20.96 24.75 20.33 24.19 21.68 \n", - "5358 873806.BJ 20250409 12.64 14.34 12.35 14.25 12.78 \n", - "5359 873833.BJ 20250409 18.37 21.47 17.66 20.86 19.24 \n", - "5360 689009.SH 20250409 52.65 56.90 52.11 54.86 54.70 \n", + "5350 920116.BJ 20250506 105.54 108.67 104.18 108.67 104.03 \n", + "5351 920111.BJ 20250506 27.88 28.89 27.88 28.87 27.74 \n", + "5352 920118.BJ 20250506 26.65 27.50 26.33 27.46 26.44 \n", + "5353 920128.BJ 20250506 31.72 31.72 30.46 31.40 30.43 \n", + "5354 689009.SH 20250506 63.53 64.94 62.36 64.49 63.19 \n", "\n", - " change pct_chg vol amount \n", - "0 -2.55 -0.18 1064394.05 1145238.958 \n", - "1 47.24 3.82 1853079.77 1284483.339 \n", - "2 0.90 2.56 73354.00 61248.520 \n", - "3 8.34 3.68 685967.13 386042.322 \n", - "4 1.07 2.41 61500.00 32136.135 \n", - "... ... ... ... ... \n", - "5356 5.02 29.90 101369.40 178514.657 \n", - "5357 2.51 11.58 34407.94 75592.009 \n", - "5358 1.47 11.50 92646.26 124407.734 \n", - "5359 1.62 8.42 82933.72 145386.999 \n", - "5360 0.16 0.29 102228.24 556103.751 \n", + " change pct_chg vol amount \n", + "0 6.39 0.46 854671.27 935212.114 \n", + "1 3.64 0.29 721363.73 491928.533 \n", + "2 -1.63 -5.03 9181.00 6950.017 \n", + "3 4.37 1.73 239431.89 153531.506 \n", + "4 0.83 1.49 106041.66 72322.522 \n", + "... ... ... ... ... \n", + "5350 4.64 4.46 39848.66 304340.713 \n", + "5351 1.13 4.07 23637.81 67284.097 \n", + "5352 1.02 3.86 9807.68 26421.193 \n", + "5353 0.97 3.19 13050.28 40500.102 \n", + "5354 1.30 2.06 78559.76 497655.377 \n", "\n", - "[5361 rows x 11 columns]\n" + "[5355 rows x 11 columns]\n" ] } ], - "execution_count": 4 + "source": [ + "all_daily_data = pd.concat(daily_data_list, ignore_index=True)\n", + "print(all_daily_data)" + ] }, { "cell_type": "code", + "execution_count": 5, "id": "446aeba1a846b34", "metadata": { "ExecuteTime": { @@ -5879,16 +5880,6 @@ "start_time": "2025-04-09T15:25:31.660508Z" } }, - "source": [ - "\n", - "# 合并所有获取到的日线数据\n", - "if daily_data_list:\n", - " # 使用 HDF5 格式保存到本地文件(文件名:daily_data.h5,key设为 'daily_data')\n", - " all_daily_data.to_hdf(h5_filename, key='daily_data', mode='a', append=True, data_columns=True, format='table')\n", - " print(\"所有日线数据已保存到 daily_data.h5\")\n", - "else:\n", - " print(\"未获取到任何日线数据。\")" - ], "outputs": [ { "name": "stdout", @@ -5898,12 +5889,21 @@ ] } ], - "execution_count": 5 + "source": [ + "\n", + "# 合并所有获取到的日线数据\n", + "if daily_data_list:\n", + " # 使用 HDF5 格式保存到本地文件(文件名:daily_data.h5,key设为 'daily_data')\n", + " all_daily_data.to_hdf(h5_filename, key='daily_data', mode='a', append=True, data_columns=True, format='table')\n", + " print(\"所有日线数据已保存到 daily_data.h5\")\n", + "else:\n", + " print(\"未获取到任何日线数据。\")" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "new_trader", "language": "python", "name": "python3" }, diff --git a/main/data/update/update_is_st.ipynb b/main/data/update/update_is_st.ipynb index eee37fe..e9fa1d9 100644 --- a/main/data/update/update_is_st.ipynb +++ b/main/data/update/update_is_st.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 3, "id": "17cc645336d4eb18", "metadata": { "ExecuteTime": { @@ -9,73 +10,57 @@ "start_time": "2025-02-08T16:55:18.958639Z" } }, + "outputs": [], "source": [ "import pandas as pd\n", "import tushare as ts" - ], - "outputs": [], - "execution_count": 1 + ] }, { + "cell_type": "code", + "execution_count": 8, + "id": "48ae71ed02d61819", "metadata": { "ExecuteTime": { "end_time": "2025-02-08T16:55:27.578361Z", "start_time": "2025-02-08T16:55:19.882313Z" } }, - "cell_type": "code", - "source": [ - "daily_basic = pd.read_hdf('../../data/daily_basic.h5', key='daily_basic', columns=['ts_code', 'trade_date '])\n", - "name_change_df = pd.read_hdf('../../data/name_change.h5', key='name_change')\n", - "name_change_df = name_change_df.drop_duplicates(keep='first')\n", - "\n", - "# 确保 name_change_df 的日期格式正确\n", - "name_change_df['start_date'] = pd.to_datetime(name_change_df['start_date'], format='%Y%m%d')\n", - "name_change_df['end_date'] = pd.to_datetime(name_change_df['end_date'], format='%Y%m%d', errors='coerce')\n", - "name_change_df = name_change_df[name_change_df.name.str.contains('ST')]\n" - ], - "id": "48ae71ed02d61819", "outputs": [], - "execution_count": 2 + "source": [ + "daily_basic = pd.read_hdf('../../../data/daily_basic.h5', key='daily_basic')\n" + ] }, { + "cell_type": "code", + "execution_count": 5, + "id": "e6606a96e5728b8", "metadata": { "ExecuteTime": { "end_time": "2025-02-08T16:55:27.938078Z", "start_time": "2025-02-08T16:55:27.584226Z" } }, - "cell_type": "code", - "source": [ - "name_change_dict = {}\n", - "for ts_code, group in name_change_df.groupby('ts_code'):\n", - " # 只保留 'ST' 和 '*ST' 的记录\n", - " st_data = group[(group['change_reason'] == 'ST') | (group['change_reason'] == '*ST')]\n", - " if not st_data.empty:\n", - " name_change_dict[ts_code] = st_data" - ], - "id": "e6606a96e5728b8", "outputs": [], - "execution_count": 3 - }, - { - "metadata": { - "collapsed": true, - "ExecuteTime": { - "end_time": "2025-02-08T16:59:20.537632Z", - "start_time": "2025-02-08T16:55:27.971219Z" - } - }, - "cell_type": "code", "source": [ "from datetime import datetime\n", - "import pandas as pd\n", + "import warnings\n", "\n", + "warnings.filterwarnings(\"ignore\")\n", + "def filter_rows(df):\n", + " # 按照 name 和 start_date 分组\n", + " def select_row(group):\n", + " # 如果有 end_date 不为 NaT 的行,优先保留这些行\n", + " valid_rows = group[group['end_date'].notna()]\n", + " if not valid_rows.empty:\n", + " return valid_rows.iloc[0] # 返回第一个有效行\n", + " else:\n", + " return group.iloc[0] # 如果没有有效行,返回第一行\n", + "\n", + " filtered_df = df.groupby(['name', 'start_date'], group_keys=False).apply(select_row)\n", + " filtered_df = filtered_df.reset_index(drop=True)\n", + " return filtered_df\n", "\n", - "# 判断股票是否为 ST 的函数\n", - "#stock_code = 'xxxxxx.SH'\n", - "#target_date = '20200830'\n", - "#若为ST,返回True;否则返回False\n", "def is_st(name_change_dict, stock_code, target_date):\n", " target_date = datetime.strptime(target_date, '%Y%m%d')\n", " if stock_code not in name_change_dict.keys():\n", @@ -84,15 +69,129 @@ " for i in range(len(df)):\n", " sds = df.iloc[i, 2]\n", " eds = df.iloc[i, 3]\n", - " # sd = datetime.strptime(sds, '%Y%m%d')\n", - " if eds == None:\n", - " ed = datetime.now()\n", - " # else:\n", - " # ed = datetime.strptime(eds, '%Y%m%d')\n", + " if eds is None or eds is pd.NaT:\n", + " eds = datetime.now()\n", " if (target_date - sds).days >= 0 and (target_date - eds).days <= 0:\n", " return True\n", " return False\n", "\n", + "name_change_df = pd.read_hdf('../../../data/name_change.h5', key='name_change')\n", + "name_change_df = name_change_df.drop_duplicates(keep='first')\n", + "\n", + "# 确保 name_change_df 的日期格式正确\n", + "name_change_df['start_date'] = pd.to_datetime(name_change_df['start_date'], format='%Y%m%d')\n", + "name_change_df['end_date'] = pd.to_datetime(name_change_df['end_date'], format='%Y%m%d', errors='coerce')\n", + "name_change_df = name_change_df[name_change_df.name.str.contains('ST')]\n", + "name_change_dict = {}\n", + "for ts_code, group in name_change_df.groupby('ts_code'):\n", + " # 只保留 'ST' 和 '*ST' 的记录\n", + " # st_data = group[(group['change_reason'] == 'ST') | (group['change_reason'] == '*ST')]\n", + " st_data = group[group['name'].str.contains('ST')]\n", + " if not st_data.empty:\n", + " name_change_dict[ts_code] = filter_rows(st_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "41bc125d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ts_code trade_date close turnover_rate turnover_rate_f \\\n", + "0 603848.SH 20250430 14.36 0.5401 4.6897 \n", + "1 300290.SZ 20250430 16.30 2.8540 3.5686 \n", + "2 603877.SH 20250430 15.90 0.3794 1.2707 \n", + "3 834639.BJ 20250430 8.37 6.1158 7.8866 \n", + "4 000909.SZ 20250430 5.72 0.6104 1.0424 \n", + "... ... ... ... ... ... \n", + "8594006 600708.SH 20170103 9.03 0.7694 1.0169 \n", + "8594007 600712.SH 20170103 10.29 0.5859 0.8028 \n", + "8594008 001872.SZ 20170103 19.33 1.0970 5.4258 \n", + "8594009 001914.SZ 20170103 12.37 3.2627 6.6991 \n", + "8594010 302132.SZ 20170103 23.28 0.4912 1.5149 \n", + "\n", + " volume_ratio pe pe_ttm pb ps ps_ttm \\\n", + "0 1.31 23.3421 25.6176 2.3433 3.7254 3.8065 \n", + "1 1.00 NaN NaN 13.1076 13.5867 13.5756 \n", + "2 0.98 29.1494 33.6975 1.6522 1.1075 1.1304 \n", + "3 0.87 70.0984 215.1863 2.0171 0.8405 0.8329 \n", + "4 0.55 NaN NaN 2.3539 7.7727 8.2925 \n", + "... ... ... ... ... ... ... \n", + "8594006 0.85 23.3367 22.2458 1.4847 0.9613 0.9248 \n", + "8594007 0.67 202.4855 287.1454 5.1852 2.3682 2.5386 \n", + "8594008 0.77 23.6158 23.1883 2.7052 6.6556 6.5584 \n", + "8594009 1.02 20.5631 15.1595 2.1186 1.4950 1.2600 \n", + "8594010 0.74 91.3908 84.6980 6.9391 8.9531 8.8570 \n", + "\n", + " dv_ratio dv_ttm total_share float_share free_share total_mv \\\n", + "0 2.0904 2.0904 40391.1511 40240.6511 4634.6511 5.800169e+05 \n", + "1 0.0000 NaN 63973.2569 63922.1969 51122.1969 1.042764e+06 \n", + "2 3.7471 3.7471 47382.5333 46932.3226 14014.3219 7.533823e+05 \n", + "3 NaN NaN 20160.0000 11721.5883 9089.7537 1.687392e+05 \n", + "4 0.0000 NaN 43771.4245 43771.0570 25634.2299 2.503725e+05 \n", + "... ... ... ... ... ... ... \n", + "8594006 1.1074 1.1074 131871.9966 75088.9215 56812.2811 1.190804e+06 \n", + "8594007 0.1555 0.1555 54465.5360 53795.9475 39266.3119 5.604504e+05 \n", + "8594008 2.1211 2.1211 64476.3730 46486.6050 9398.8050 1.246328e+06 \n", + "8594009 0.4042 0.4042 66696.1416 66678.0666 32475.1786 8.250313e+05 \n", + "8594010 0.2291 0.2291 39384.0333 30419.3588 9862.3809 9.168603e+05 \n", + "\n", + " circ_mv is_st \n", + "0 5.778557e+05 False \n", + "1 1.041932e+06 False \n", + "2 7.462239e+05 False \n", + "3 9.810969e+04 False \n", + "4 2.503704e+05 True \n", + "... ... ... \n", + "8594006 6.780530e+05 False \n", + "8594007 5.535603e+05 False \n", + "8594008 8.985861e+05 False \n", + "8594009 8.248077e+05 False \n", + "8594010 7.081627e+05 False \n", + "\n", + "[8594011 rows x 19 columns]\n" + ] + } + ], + "source": [ + "print(daily_basic)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "initial_id", + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-08T16:59:20.537632Z", + "start_time": "2025-02-08T16:55:27.971219Z" + }, + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "is st...\n", + " ts_code trade_date is_st\n", + "0 603848.SH 20250430 False\n", + "1 300290.SZ 20250430 False\n", + "2 603877.SH 20250430 False\n", + "3 834639.BJ 20250430 False\n", + "4 000909.SZ 20250430 True\n" + ] + } + ], + "source": [ + "from datetime import datetime\n", + "import pandas as pd\n", + "\n", + "\n", "\n", "print('is st...')\n", "# 创建一个新的列 is_st,判断每只股票是否是 ST\n", @@ -101,47 +200,30 @@ ")\n", "\n", "# 保存结果到新的 HDF5 文件\n", - "daily_basic.to_hdf('../../data/daily_basic_with_st.h5', key='daily_basic_with_st', mode='w', format='table')\n", + "daily_basic.to_hdf('../../../data/daily_basic.h5', key='daily_basic', mode='w', format='table')\n", "\n", "# 输出部分结果\n", "print(daily_basic[['ts_code', 'trade_date', 'is_st']].head())\n" - ], - "id": "initial_id", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "is st...\n", - " ts_code trade_date is_st\n", - "0 603429.SH 20250127 False\n", - "1 300917.SZ 20250127 False\n", - "2 301266.SZ 20250127 False\n", - "3 688399.SH 20250127 False\n", - "4 603737.SH 20250127 False\n" - ] - } - ], - "execution_count": 4 + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "new_trader", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" + "pygments_lexer": "ipython3", + "version": "3.11.11" } }, "nbformat": 4, diff --git a/main/data/update/update_money_flow.ipynb b/main/data/update/update_money_flow.ipynb index 0058ae4..47a0781 100644 --- a/main/data/update/update_money_flow.ipynb +++ b/main/data/update/update_money_flow.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "b94bb1f2-5332-485e-ae1b-eea01f938106", "metadata": { "ExecuteTime": { @@ -9,17 +10,17 @@ "start_time": "2025-04-09T14:57:39.137312Z" } }, + "outputs": [], "source": [ "import tushare as ts\n", "\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "code", + "execution_count": 2, "id": "742c29d453b9bb38", "metadata": { "ExecuteTime": { @@ -27,6 +28,26 @@ "start_time": "2025-04-09T14:57:40.190466Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 8435700 entries, 0 to 40956\n", + "Data columns (total 2 columns):\n", + " # Column Dtype \n", + "--- ------ ----- \n", + " 0 ts_code object\n", + " 1 trade_date object\n", + "dtypes: object(2)\n", + "memory usage: 193.1+ MB\n", + "None\n", + "20250430\n", + "start_date: 20250506\n" + ] + } + ], "source": [ "import pandas as pd\n", "import time\n", @@ -40,44 +61,85 @@ " max_date = df['trade_date'].max()\n", "\n", "print(max_date)\n", - "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250420')\n", + "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250720')\n", "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", "start_date = min(trade_dates)\n", "print(f'start_date: {start_date}')" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "679ce40e-8d62-4887-970c-e1d8cbdeee6b", + "metadata": { + "ExecuteTime": { + "end_time": "2025-04-09T14:58:17.197319Z", + "start_time": "2025-04-09T14:58:10.724923Z" + }, + "scrolled": true + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\n", - "Index: 8353711 entries, 0 to 5126\n", - "Data columns (total 2 columns):\n", - " # Column Dtype \n", - "--- ------ ----- \n", - " 0 ts_code object\n", - " 1 trade_date object\n", - "dtypes: object(2)\n", - "memory usage: 191.2+ MB\n", - "None\n", - "20250408\n", - "start_date: 20250409\n" + "任务 20250717 完成\n", + "任务 20250718 完成\n", + "任务 20250715 完成\n", + "任务 20250716 完成\n", + "任务 20250714 完成\n", + "任务 20250711 完成\n", + "任务 20250710 完成\n", + "任务 20250709 完成\n", + "任务 20250708 完成\n", + "任务 20250707 完成\n", + "任务 20250704 完成\n", + "任务 20250703 完成\n", + "任务 20250702 完成\n", + "任务 20250701 完成\n", + "任务 20250630 完成\n", + "任务 20250627 完成\n", + "任务 20250626 完成\n", + "任务 20250625 完成\n", + "任务 20250624 完成\n", + "任务 20250623 完成\n", + "任务 20250620 完成\n", + "任务 20250619 完成\n", + "任务 20250618 完成\n", + "任务 20250617 完成\n", + "任务 20250616 完成\n", + "任务 20250613 完成\n", + "任务 20250612 完成\n", + "任务 20250611 完成\n", + "任务 20250610 完成\n", + "任务 20250609 完成\n", + "任务 20250606 完成\n", + "任务 20250605 完成\n", + "任务 20250604 完成\n", + "任务 20250603 完成\n", + "任务 20250530 完成\n", + "任务 20250529 完成\n", + "任务 20250527 完成\n", + "任务 20250528 完成\n", + "任务 20250523 完成\n", + "任务 20250526 完成\n", + "任务 20250521 完成\n", + "任务 20250522 完成\n", + "任务 20250520 完成\n", + "任务 20250519 完成\n", + "任务 20250516 完成\n", + "任务 20250515 完成\n", + "任务 20250514 完成\n", + "任务 20250513 完成\n", + "任务 20250512 完成\n", + "任务 20250509 完成\n", + "任务 20250508 完成\n", + "任务 20250507 完成\n", + "任务 20250506 完成\n" ] } ], - "execution_count": 2 - }, - { - "cell_type": "code", - "id": "679ce40e-8d62-4887-970c-e1d8cbdeee6b", - "metadata": { - "scrolled": true, - "ExecuteTime": { - "end_time": "2025-04-09T14:58:17.197319Z", - "start_time": "2025-04-09T14:58:10.724923Z" - } - }, "source": [ "from concurrent.futures import ThreadPoolExecutor, as_completed\n", "\n", @@ -107,27 +169,11 @@ " except Exception as e:\n", " print(f\"获取 {trade_date} 数据时出错: {e}\")\n", "\n" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "任务 20250417 完成\n", - "任务 20250418 完成\n", - "任务 20250416 完成\n", - "任务 20250415 完成\n", - "任务 20250411 完成\n", - "任务 20250414 完成\n", - "任务 20250410 完成\n", - "任务 20250409 完成\n" - ] - } - ], - "execution_count": 3 + ] }, { "cell_type": "code", + "execution_count": 4, "id": "9af80516849d4e80", "metadata": { "ExecuteTime": { @@ -135,14 +181,14 @@ "start_time": "2025-04-09T14:58:17.210734Z" } }, + "outputs": [], "source": [ "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)\n" - ], - "outputs": [], - "execution_count": 4 + ] }, { "cell_type": "code", + "execution_count": 5, "id": "a2b05187-437f-4053-bc43-bd80d4cf8b0e", "metadata": { "ExecuteTime": { @@ -150,15 +196,6 @@ "start_time": "2025-04-09T14:58:17.229837Z" } }, - "source": [ - "\n", - "# 将所有数据合并为一个 DataFrame\n", - "\n", - "# 将数据保存为 HDF5 文件(table 格式)\n", - "all_daily_data_df.to_hdf(h5_filename, key='money_flow', mode='a', format='table', append=True, data_columns=True)\n", - "\n", - "print(\"所有每日基础数据获取并保存完毕!\")" - ], "outputs": [ { "name": "stdout", @@ -168,12 +205,20 @@ ] } ], - "execution_count": 5 + "source": [ + "\n", + "# 将所有数据合并为一个 DataFrame\n", + "\n", + "# 将数据保存为 HDF5 文件(table 格式)\n", + "all_daily_data_df.to_hdf(h5_filename, key='money_flow', mode='a', format='table', append=True, data_columns=True)\n", + "\n", + "print(\"所有每日基础数据获取并保存完毕!\")" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "new_trader", "language": "python", "name": "python3" }, diff --git a/main/data/update/update_stk_limit.ipynb b/main/data/update/update_stk_limit.ipynb index bbc1476..b2a6ca8 100644 --- a/main/data/update/update_stk_limit.ipynb +++ b/main/data/update/update_stk_limit.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "500802dc-7a20-48b7-a470-a4bae3ec534b", "metadata": { "ExecuteTime": { @@ -9,17 +10,17 @@ "start_time": "2025-04-09T14:57:40.584930Z" } }, + "outputs": [], "source": [ "import tushare as ts\n", "\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "code", + "execution_count": 2, "id": "5a84bc9da6d54868", "metadata": { "ExecuteTime": { @@ -27,6 +28,32 @@ "start_time": "2025-04-09T14:57:41.540345Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ts_code trade_date\n", + "4745 600276.SH 20250506\n", + "4746 600278.SH 20250506\n", + "4747 600279.SH 20250506\n", + "4736 600262.SH 20250506\n", + "281 000791.SZ 20250506\n", + "\n", + "Index: 10436295 entries, 0 to 113592\n", + "Data columns (total 2 columns):\n", + " # Column Dtype \n", + "--- ------ ----- \n", + " 0 ts_code object\n", + " 1 trade_date object\n", + "dtypes: object(2)\n", + "memory usage: 238.9+ MB\n", + "None\n", + "20250506\n", + "20250507\n" + ] + } + ], "source": [ "import pandas as pd\n", "import time\n", @@ -41,50 +68,84 @@ " max_date = df['trade_date'].max()\n", "\n", "print(max_date)\n", - "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250420')\n", + "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250720')\n", "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", "start_date = min(trade_dates)\n", "print(start_date)" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "bb3191de-27a2-4c89-a3b5-32a0d7b9496f", + "metadata": { + "ExecuteTime": { + "end_time": "2025-04-09T14:58:09.342522Z", + "start_time": "2025-04-09T14:58:05.259974Z" + }, + "scrolled": true + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - " ts_code trade_date\n", - "4721 600284.SH 20250408\n", - "4722 600285.SH 20250408\n", - "4723 600287.SH 20250408\n", - "4712 600272.SH 20250408\n", - "5 000008.SZ 20250408\n", - "\n", - "Index: 10315620 entries, 0 to 14151\n", - "Data columns (total 2 columns):\n", - " # Column Dtype \n", - "--- ------ ----- \n", - " 0 ts_code object\n", - " 1 trade_date object\n", - "dtypes: object(2)\n", - "memory usage: 236.1+ MB\n", - "None\n", - "20250408\n", - "20250409\n" + "任务 20250718 完成\n", + "任务 20250717 完成\n", + "任务 20250715 完成\n", + "任务 20250716 完成\n", + "任务 20250714 完成\n", + "任务 20250711 完成\n", + "任务 20250709 完成\n", + "任务 20250710 完成\n", + "任务 20250708 完成\n", + "任务 20250707 完成\n", + "任务 20250703 完成\n", + "任务 20250704 完成\n", + "任务 20250701 完成\n", + "任务 20250702 完成\n", + "任务 20250630 完成\n", + "任务 20250627 完成\n", + "任务 20250626 完成\n", + "任务 20250625 完成\n", + "任务 20250624 完成\n", + "任务 20250623 完成\n", + "任务 20250620 完成\n", + "任务 20250619 完成\n", + "任务 20250618 完成\n", + "任务 20250617 完成\n", + "任务 20250616 完成\n", + "任务 20250613 完成\n", + "任务 20250612 完成\n", + "任务 20250611 完成\n", + "任务 20250610 完成\n", + "任务 20250609 完成\n", + "任务 20250606 完成\n", + "任务 20250605 完成\n", + "任务 20250604 完成\n", + "任务 20250603 完成\n", + "任务 20250530 完成\n", + "任务 20250529 完成\n", + "任务 20250528 完成\n", + "任务 20250527 完成\n", + "任务 20250526 完成\n", + "任务 20250523 完成\n", + "任务 20250522 完成\n", + "任务 20250521 完成\n", + "任务 20250520 完成\n", + "任务 20250519 完成\n", + "任务 20250516 完成\n", + "任务 20250515 完成\n", + "任务 20250514 完成\n", + "任务 20250513 完成\n", + "任务 20250512 完成\n", + "任务 20250509 完成\n", + "任务 20250508 完成\n", + "任务 20250507 完成\n" ] } ], - "execution_count": 2 - }, - { - "cell_type": "code", - "id": "bb3191de-27a2-4c89-a3b5-32a0d7b9496f", - "metadata": { - "scrolled": true, - "ExecuteTime": { - "end_time": "2025-04-09T14:58:09.342522Z", - "start_time": "2025-04-09T14:58:05.259974Z" - } - }, "source": [ "from concurrent.futures import ThreadPoolExecutor, as_completed\n", "\n", @@ -115,27 +176,11 @@ " except Exception as e:\n", " print(f\"获取 {trade_date} 数据时出错: {e}\")\n", "\n" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "任务 20250417 完成\n", - "任务 20250418 完成\n", - "任务 20250416 完成\n", - "任务 20250415 完成\n", - "任务 20250414 完成\n", - "任务 20250410 完成\n", - "任务 20250409 完成\n", - "任务 20250411 完成\n" - ] - } - ], - "execution_count": 3 + ] }, { "cell_type": "code", + "execution_count": 4, "id": "96a81aa5890ea3c3", "metadata": { "ExecuteTime": { @@ -143,37 +188,38 @@ "start_time": "2025-04-09T14:58:09.346528Z" } }, - "source": [ - "print(all_daily_data)\n", - "# 将所有数据合并为一个 DataFrame\n", - "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)" - ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[ trade_date ts_code up_limit down_limit\n", - "0 20250409 000001.SZ 11.90 9.74\n", - "1 20250409 000002.SZ 7.48 6.12\n", - "2 20250409 000004.SZ 9.53 7.79\n", - "3 20250409 000006.SZ 6.28 5.14\n", - "4 20250409 000007.SZ 5.91 4.83\n", - "... ... ... ... ...\n", - "7077 20250409 920108.BJ 26.55 14.31\n", - "7078 20250409 920111.BJ 30.84 16.62\n", - "7079 20250409 920116.BJ 100.29 54.01\n", - "7080 20250409 920118.BJ 31.62 17.04\n", - "7081 20250409 920128.BJ 35.26 19.00\n", - "\n", - "[7082 rows x 4 columns]]\n" + "[]\n" + ] + }, + { + "ename": "ValueError", + "evalue": "No objects to concatenate", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[4], line 3\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(all_daily_data)\n\u001b[0;32m 2\u001b[0m \u001b[38;5;66;03m# 将所有数据合并为一个 DataFrame\u001b[39;00m\n\u001b[1;32m----> 3\u001b[0m all_daily_data_df \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mconcat(all_daily_data, ignore_index\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\reshape\\concat.py:382\u001b[0m, in \u001b[0;36mconcat\u001b[1;34m(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001b[0m\n\u001b[0;32m 379\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m copy \u001b[38;5;129;01mand\u001b[39;00m using_copy_on_write():\n\u001b[0;32m 380\u001b[0m copy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m--> 382\u001b[0m op \u001b[38;5;241m=\u001b[39m _Concatenator(\n\u001b[0;32m 383\u001b[0m objs,\n\u001b[0;32m 384\u001b[0m axis\u001b[38;5;241m=\u001b[39maxis,\n\u001b[0;32m 385\u001b[0m ignore_index\u001b[38;5;241m=\u001b[39mignore_index,\n\u001b[0;32m 386\u001b[0m join\u001b[38;5;241m=\u001b[39mjoin,\n\u001b[0;32m 387\u001b[0m keys\u001b[38;5;241m=\u001b[39mkeys,\n\u001b[0;32m 388\u001b[0m levels\u001b[38;5;241m=\u001b[39mlevels,\n\u001b[0;32m 389\u001b[0m names\u001b[38;5;241m=\u001b[39mnames,\n\u001b[0;32m 390\u001b[0m verify_integrity\u001b[38;5;241m=\u001b[39mverify_integrity,\n\u001b[0;32m 391\u001b[0m copy\u001b[38;5;241m=\u001b[39mcopy,\n\u001b[0;32m 392\u001b[0m sort\u001b[38;5;241m=\u001b[39msort,\n\u001b[0;32m 393\u001b[0m )\n\u001b[0;32m 395\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m op\u001b[38;5;241m.\u001b[39mget_result()\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\reshape\\concat.py:445\u001b[0m, in \u001b[0;36m_Concatenator.__init__\u001b[1;34m(self, objs, axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort)\u001b[0m\n\u001b[0;32m 442\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverify_integrity \u001b[38;5;241m=\u001b[39m verify_integrity\n\u001b[0;32m 443\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcopy \u001b[38;5;241m=\u001b[39m copy\n\u001b[1;32m--> 445\u001b[0m objs, keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clean_keys_and_objs(objs, keys)\n\u001b[0;32m 447\u001b[0m \u001b[38;5;66;03m# figure out what our result ndim is going to be\u001b[39;00m\n\u001b[0;32m 448\u001b[0m ndims \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_ndims(objs)\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\reshape\\concat.py:507\u001b[0m, in \u001b[0;36m_Concatenator._clean_keys_and_objs\u001b[1;34m(self, objs, keys)\u001b[0m\n\u001b[0;32m 504\u001b[0m objs_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(objs)\n\u001b[0;32m 506\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(objs_list) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m--> 507\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo objects to concatenate\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 509\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keys \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 510\u001b[0m objs_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(com\u001b[38;5;241m.\u001b[39mnot_none(\u001b[38;5;241m*\u001b[39mobjs_list))\n", + "\u001b[1;31mValueError\u001b[0m: No objects to concatenate" ] } ], - "execution_count": 4 + "source": [ + "print(all_daily_data)\n", + "# 将所有数据合并为一个 DataFrame\n", + "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)" + ] }, { "cell_type": "code", + "execution_count": null, "id": "ad9733a1-2f42-43ee-a98c-0bf699304c21", "metadata": { "ExecuteTime": { @@ -181,14 +227,6 @@ "start_time": "2025-04-09T14:58:09.366441Z" } }, - "source": [ - "\n", - "\n", - "# 将数据保存为 HDF5 文件(table 格式)\n", - "all_daily_data_df.to_hdf(h5_filename, key='stk_limit', mode='a', format='table', append=True, data_columns=True)\n", - "\n", - "print(\"所有每日基础数据获取并保存完毕!\")" - ], "outputs": [ { "name": "stdout", @@ -198,10 +236,18 @@ ] } ], - "execution_count": 5 + "source": [ + "\n", + "\n", + "# 将数据保存为 HDF5 文件(table 格式)\n", + "all_daily_data_df.to_hdf(h5_filename, key='stk_limit', mode='a', format='table', append=True, data_columns=True)\n", + "\n", + "print(\"所有每日基础数据获取并保存完毕!\")" + ] }, { "cell_type": "code", + "execution_count": null, "id": "7e777f1f-4d54-4a74-b916-691ede6af055", "metadata": { "ExecuteTime": { @@ -209,14 +255,13 @@ "start_time": "2025-04-09T14:58:09.686524Z" } }, - "source": [], "outputs": [], - "execution_count": null + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "new_trader", "language": "python", "name": "python3" }, diff --git a/main/train/Classify2.ipynb b/main/train/Classify2.ipynb index 34a5dba..b7e8b93 100644 --- a/main/train/Classify2.ipynb +++ b/main/train/Classify2.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 53, "id": "79a7758178bafdd3", "metadata": { "ExecuteTime": { @@ -18,6 +18,8 @@ "name": "stdout", "output_type": "stream", "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n", "e:\\PyProject\\NewStock\\main\\train\n" ] } @@ -44,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 54, "id": "a79cafb06a7e0e43", "metadata": { "ExecuteTime": { @@ -68,7 +70,7 @@ "cyq perf\n", "left merge on ['ts_code', 'trade_date']\n", "\n", - "RangeIndex: 8509852 entries, 0 to 8509851\n", + "RangeIndex: 8595791 entries, 0 to 8595790\n", "Data columns (total 32 columns):\n", " # Column Dtype \n", "--- ------ ----- \n", @@ -143,7 +145,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 55, "id": "cac01788dac10678", "metadata": { "ExecuteTime": { @@ -158,6 +160,30 @@ "text": [ "industry\n" ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[55], line 45\u001b[0m\n\u001b[0;32m 41\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n\u001b[0;32m 44\u001b[0m \u001b[38;5;66;03m# 使用示例\u001b[39;00m\n\u001b[1;32m---> 45\u001b[0m df \u001b[38;5;241m=\u001b[39m merge_with_industry_data(df, industry_df)\n", + "Cell \u001b[1;32mIn[55], line 19\u001b[0m, in \u001b[0;36mmerge_with_industry_data\u001b[1;34m(df, industry_df)\u001b[0m\n\u001b[0;32m 16\u001b[0m df_sorted \u001b[38;5;241m=\u001b[39m df\u001b[38;5;241m.\u001b[39msort_values([\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtrade_date\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mts_code\u001b[39m\u001b[38;5;124m'\u001b[39m])\n\u001b[0;32m 18\u001b[0m \u001b[38;5;66;03m# 使用 merge_asof 进行向后合并\u001b[39;00m\n\u001b[1;32m---> 19\u001b[0m merged \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mmerge_asof(\n\u001b[0;32m 20\u001b[0m df_sorted,\n\u001b[0;32m 21\u001b[0m industry_df_sorted,\n\u001b[0;32m 22\u001b[0m by\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mts_code\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;66;03m# 按 ts_code 分组\u001b[39;00m\n\u001b[0;32m 23\u001b[0m left_on\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtrade_date\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 24\u001b[0m right_on\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124min_date\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 25\u001b[0m direction\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbackward\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 26\u001b[0m )\n\u001b[0;32m 28\u001b[0m \u001b[38;5;66;03m# 获取每个 ts_code 的最早 in_date 记录\u001b[39;00m\n\u001b[0;32m 29\u001b[0m min_in_date_per_ts \u001b[38;5;241m=\u001b[39m (industry_df_sorted\n\u001b[0;32m 30\u001b[0m \u001b[38;5;241m.\u001b[39mgroupby(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mts_code\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 31\u001b[0m \u001b[38;5;241m.\u001b[39mfirst()\n\u001b[0;32m 32\u001b[0m \u001b[38;5;241m.\u001b[39mreset_index()[[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mts_code\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124ml2_code\u001b[39m\u001b[38;5;124m'\u001b[39m]])\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:708\u001b[0m, in \u001b[0;36mmerge_asof\u001b[1;34m(left, right, on, left_on, right_on, left_index, right_index, by, left_by, right_by, suffixes, tolerance, allow_exact_matches, direction)\u001b[0m\n\u001b[0;32m 456\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 457\u001b[0m \u001b[38;5;124;03mPerform a merge by key distance.\u001b[39;00m\n\u001b[0;32m 458\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 689\u001b[0m \u001b[38;5;124;03m4 2016-05-25 13:30:00.048 AAPL 98.00 100 NaN NaN\u001b[39;00m\n\u001b[0;32m 690\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 691\u001b[0m op \u001b[38;5;241m=\u001b[39m _AsOfMerge(\n\u001b[0;32m 692\u001b[0m left,\n\u001b[0;32m 693\u001b[0m right,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 706\u001b[0m direction\u001b[38;5;241m=\u001b[39mdirection,\n\u001b[0;32m 707\u001b[0m )\n\u001b[1;32m--> 708\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m op\u001b[38;5;241m.\u001b[39mget_result()\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:1946\u001b[0m, in \u001b[0;36m_OrderedMerge.get_result\u001b[1;34m(self, copy)\u001b[0m\n\u001b[0;32m 1943\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1944\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfill_method must be \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mffill\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m or None\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m-> 1946\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_reindex_and_concat(\n\u001b[0;32m 1947\u001b[0m join_index, left_join_indexer, right_join_indexer, copy\u001b[38;5;241m=\u001b[39mcopy\n\u001b[0;32m 1948\u001b[0m )\n\u001b[0;32m 1949\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_maybe_add_join_keys(result, left_indexer, right_indexer)\n\u001b[0;32m 1951\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:879\u001b[0m, in \u001b[0;36m_MergeOperation._reindex_and_concat\u001b[1;34m(self, join_index, left_indexer, right_indexer, copy)\u001b[0m\n\u001b[0;32m 877\u001b[0m left\u001b[38;5;241m.\u001b[39mcolumns \u001b[38;5;241m=\u001b[39m llabels\n\u001b[0;32m 878\u001b[0m right\u001b[38;5;241m.\u001b[39mcolumns \u001b[38;5;241m=\u001b[39m rlabels\n\u001b[1;32m--> 879\u001b[0m result \u001b[38;5;241m=\u001b[39m concat([left, right], axis\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m, copy\u001b[38;5;241m=\u001b[39mcopy)\n\u001b[0;32m 880\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\reshape\\concat.py:395\u001b[0m, in \u001b[0;36mconcat\u001b[1;34m(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001b[0m\n\u001b[0;32m 380\u001b[0m copy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 382\u001b[0m op \u001b[38;5;241m=\u001b[39m _Concatenator(\n\u001b[0;32m 383\u001b[0m objs,\n\u001b[0;32m 384\u001b[0m axis\u001b[38;5;241m=\u001b[39maxis,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 392\u001b[0m sort\u001b[38;5;241m=\u001b[39msort,\n\u001b[0;32m 393\u001b[0m )\n\u001b[1;32m--> 395\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m op\u001b[38;5;241m.\u001b[39mget_result()\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\reshape\\concat.py:684\u001b[0m, in \u001b[0;36m_Concatenator.get_result\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 680\u001b[0m indexers[ax] \u001b[38;5;241m=\u001b[39m obj_labels\u001b[38;5;241m.\u001b[39mget_indexer(new_labels)\n\u001b[0;32m 682\u001b[0m mgrs_indexers\u001b[38;5;241m.\u001b[39mappend((obj\u001b[38;5;241m.\u001b[39m_mgr, indexers))\n\u001b[1;32m--> 684\u001b[0m new_data \u001b[38;5;241m=\u001b[39m concatenate_managers(\n\u001b[0;32m 685\u001b[0m mgrs_indexers, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnew_axes, concat_axis\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbm_axis, copy\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcopy\n\u001b[0;32m 686\u001b[0m )\n\u001b[0;32m 687\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcopy \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m using_copy_on_write():\n\u001b[0;32m 688\u001b[0m new_data\u001b[38;5;241m.\u001b[39m_consolidate_inplace()\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\internals\\concat.py:131\u001b[0m, in \u001b[0;36mconcatenate_managers\u001b[1;34m(mgrs_indexers, axes, concat_axis, copy)\u001b[0m\n\u001b[0;32m 124\u001b[0m \u001b[38;5;66;03m# Assertions disabled for performance\u001b[39;00m\n\u001b[0;32m 125\u001b[0m \u001b[38;5;66;03m# for tup in mgrs_indexers:\u001b[39;00m\n\u001b[0;32m 126\u001b[0m \u001b[38;5;66;03m# # caller is responsible for ensuring this\u001b[39;00m\n\u001b[0;32m 127\u001b[0m \u001b[38;5;66;03m# indexers = tup[1]\u001b[39;00m\n\u001b[0;32m 128\u001b[0m \u001b[38;5;66;03m# assert concat_axis not in indexers\u001b[39;00m\n\u001b[0;32m 130\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m concat_axis \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m--> 131\u001b[0m mgrs \u001b[38;5;241m=\u001b[39m _maybe_reindex_columns_na_proxy(axes, mgrs_indexers, needs_copy)\n\u001b[0;32m 132\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m mgrs[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mconcat_horizontal(mgrs, axes)\n\u001b[0;32m 134\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(mgrs_indexers) \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m mgrs_indexers[\u001b[38;5;241m0\u001b[39m][\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mnblocks \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\internals\\concat.py:230\u001b[0m, in \u001b[0;36m_maybe_reindex_columns_na_proxy\u001b[1;34m(axes, mgrs_indexers, needs_copy)\u001b[0m\n\u001b[0;32m 220\u001b[0m mgr \u001b[38;5;241m=\u001b[39m mgr\u001b[38;5;241m.\u001b[39mreindex_indexer(\n\u001b[0;32m 221\u001b[0m axes[i],\n\u001b[0;32m 222\u001b[0m indexers[i],\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 227\u001b[0m use_na_proxy\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, \u001b[38;5;66;03m# only relevant for i==0\u001b[39;00m\n\u001b[0;32m 228\u001b[0m )\n\u001b[0;32m 229\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m needs_copy \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m indexers:\n\u001b[1;32m--> 230\u001b[0m mgr \u001b[38;5;241m=\u001b[39m mgr\u001b[38;5;241m.\u001b[39mcopy()\n\u001b[0;32m 232\u001b[0m new_mgrs\u001b[38;5;241m.\u001b[39mappend(mgr)\n\u001b[0;32m 233\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_mgrs\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:604\u001b[0m, in \u001b[0;36mBaseBlockManager.copy\u001b[1;34m(self, deep)\u001b[0m\n\u001b[0;32m 601\u001b[0m res\u001b[38;5;241m.\u001b[39m_blklocs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blklocs\u001b[38;5;241m.\u001b[39mcopy()\n\u001b[0;32m 603\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m deep:\n\u001b[1;32m--> 604\u001b[0m res\u001b[38;5;241m.\u001b[39m_consolidate_inplace()\n\u001b[0;32m 605\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m res\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1791\u001b[0m, in \u001b[0;36mBlockManager._consolidate_inplace\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1789\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_consolidated \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m 1790\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_known_consolidated \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m-> 1791\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_rebuild_blknos_and_blklocs()\n", + "File \u001b[1;32minternals.pyx:755\u001b[0m, in \u001b[0;36mpandas._libs.internals.BlockManager._rebuild_blknos_and_blklocs\u001b[1;34m()\u001b[0m\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\internals\\base.py:84\u001b[0m, in \u001b[0;36mDataManager.shape\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[38;5;129m@property\u001b[39m\n\u001b[0;32m 83\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mshape\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Shape:\n\u001b[1;32m---> 84\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mtuple\u001b[39m(\u001b[38;5;28mlen\u001b[39m(ax) \u001b[38;5;28;01mfor\u001b[39;00m ax \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxes)\n", + "File \u001b[1;32me:\\Python\\anaconda\\envs\\new_trader\\Lib\\site-packages\\pandas\\core\\internals\\base.py:84\u001b[0m, in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[38;5;129m@property\u001b[39m\n\u001b[0;32m 83\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mshape\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Shape:\n\u001b[1;32m---> 84\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mtuple\u001b[39m(\u001b[38;5;28mlen\u001b[39m(ax) \u001b[38;5;28;01mfor\u001b[39;00m ax \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxes)\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + ] } ], "source": [ @@ -211,7 +237,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "c4e9e1d31da6dba6", "metadata": { "ExecuteTime": { @@ -303,7 +329,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "a735bc02ceb4d872", "metadata": { "ExecuteTime": { @@ -319,7 +345,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "53f86ddc0677a6d7", "metadata": { "ExecuteTime": { @@ -382,7 +408,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "dbe2fd8021b9417f", "metadata": { "ExecuteTime": { @@ -410,7 +436,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "85c3e3d0235ffffa", "metadata": { "ExecuteTime": { @@ -433,25 +459,7 @@ }, { "cell_type": "code", - "execution_count": 9, - "id": "a1c5858e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Index(['ts_code', 'ann_date', 'money_cap', 'total_liab'], dtype='object')\n" - ] - } - ], - "source": [ - "print(balancesheet_df.columns)" - ] - }, - { - "cell_type": "code", - "execution_count": 50, + "execution_count": null, "id": "92d84ce15a562ec6", "metadata": { "ExecuteTime": { @@ -464,6 +472,10 @@ "name": "stdout", "output_type": "stream", "text": [ + "使用 'ann_date' 作为财务数据生效日期。\n", + "警告: 从 financial_data_subset 中移除了 366 行,因为其 'ts_code' 或 'ann_date' 列存在空值。\n", + "使用 'ann_date' 作为财务数据生效日期。\n", + "警告: 从 financial_data_subset 中移除了 366 行,因为其 'ts_code' 或 'ann_date' 列存在空值。\n", "开始计算因子: AR, BR (原地修改)...\n", "因子 AR, BR 计算成功。\n", "因子 AR, BR 计算流程结束。\n", @@ -479,31 +491,62 @@ " 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol', 'buy_elg_vol',\n", " 'sell_elg_vol', 'net_mf_vol', 'his_low', 'his_high', 'cost_5pct',\n", " 'cost_15pct', 'cost_50pct', 'cost_85pct', 'cost_95pct', 'weight_avg',\n", - " 'winner_rate', 'cat_l2_code', 'undist_profit_ps', 'ocfps', 'AR', 'BR',\n", + " 'winner_rate', 'l2_code', 'undist_profit_ps', 'ocfps', 'AR', 'BR',\n", " 'AR_BR', 'log_circ_mv', 'cashflow_to_ev_factor', 'book_to_price_ratio',\n", " 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor',\n", - " 'future_return', 'cat_up_limit', 'label', 'lg_elg_net_buy_vol',\n", - " 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'flow_divergence_diff',\n", - " 'flow_divergence_ratio', 'total_buy_vol', 'lg_elg_buy_prop',\n", - " 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change',\n", - " 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness',\n", - " 'floating_chip_proxy', 'cost_support_15pct_change',\n", - " 'cat_winner_price_zone', 'flow_chip_consistency',\n", - " 'profit_taking_vs_absorb', '_is_positive', '_is_negative',\n", - " 'cat_is_positive', '_pos_returns', '_neg_returns', '_pos_returns_sq',\n", - " '_neg_returns_sq', 'upside_vol', 'downside_vol', 'vol_ratio',\n", - " 'return_skew', 'return_kurtosis', 'volume_change_rate',\n", + " 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol',\n", + " 'flow_divergence_diff', 'flow_divergence_ratio', 'total_buy_vol',\n", + " 'lg_elg_buy_prop', 'flow_struct_buy_change',\n", + " 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel',\n", + " 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy',\n", + " 'cost_support_15pct_change', 'cat_winner_price_zone',\n", + " 'flow_chip_consistency', 'profit_taking_vs_absorb', '_is_positive',\n", + " '_is_negative', 'cat_is_positive', '_pos_returns', '_neg_returns',\n", + " '_pos_returns_sq', '_neg_returns_sq', 'upside_vol', 'downside_vol',\n", + " 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate',\n", " 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike',\n", " 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike',\n", " 'vol_std_5', 'atr_14', 'atr_6', 'obv'],\n", " dtype='object')\n", + "Calculating lg_flow_mom_corr_20_60...\n", + "Finished lg_flow_mom_corr_20_60.\n", + "Calculating lg_flow_accel...\n", + "Finished lg_flow_accel.\n", + "Calculating profit_pressure...\n", + "Finished profit_pressure.\n", + "Calculating underwater_resistance...\n", + "Finished underwater_resistance.\n", + "Calculating cost_conc_std_20...\n", + "Finished cost_conc_std_20.\n", + "Calculating profit_decay_20...\n", + "Finished profit_decay_20.\n", + "Calculating vol_amp_loss_20...\n", + "Finished vol_amp_loss_20.\n", + "Calculating vol_drop_profit_cnt_5...\n", + "Finished vol_drop_profit_cnt_5.\n", + "Calculating lg_flow_vol_interact_20...\n", + "Finished lg_flow_vol_interact_20.\n", + "Calculating cost_break_confirm_cnt_5...\n", + "Finished cost_break_confirm_cnt_5.\n", + "Calculating atr_norm_channel_pos_14...\n", + "Finished atr_norm_channel_pos_14.\n", + "Calculating turnover_diff_skew_20...\n", + "Finished turnover_diff_skew_20.\n", + "Calculating lg_sm_flow_diverge_20...\n", + "Finished lg_sm_flow_diverge_20.\n", + "Calculating pullback_strong_20_20...\n", + "Finished pullback_strong_20_20.\n", + "Calculating vol_wgt_hist_pos_20...\n", + "Finished vol_wgt_hist_pos_20.\n", + "Calculating vol_adj_roc_20...\n", + "Finished vol_adj_roc_20.\n", "\n", - "Index: 4450396 entries, 0 to 4450395\n", - "Columns: 118 entries, ts_code to mv_growth\n", - "dtypes: bool(5), datetime64[ns](1), float64(106), int32(4), object(2)\n", - "memory usage: 3.7+ GB\n", + "Index: 4502216 entries, 0 to 4502215\n", + "Columns: 157 entries, ts_code to vol_adj_roc_20\n", + "dtypes: bool(10), datetime64[ns](1), float64(141), int32(3), object(2)\n", + "memory usage: 5.0+ GB\n", "None\n", - "['ts_code', 'trade_date', 'open', 'close', 'high', 'low', 'vol', 'pct_chg', 'turnover_rate', 'pe_ttm', 'circ_mv', 'total_mv', 'volume_ratio', 'is_st', 'up_limit', 'down_limit', 'buy_sm_vol', 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol', 'buy_elg_vol', 'sell_elg_vol', 'net_mf_vol', 'his_low', 'his_high', 'cost_5pct', 'cost_15pct', 'cost_50pct', 'cost_85pct', 'cost_95pct', 'weight_avg', 'winner_rate', 'cat_l2_code', 'undist_profit_ps', 'ocfps', 'AR', 'BR', 'AR_BR', 'log_circ_mv', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'future_return', 'cat_up_limit', 'label', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'flow_divergence_diff', 'flow_divergence_ratio', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', '_ema_5', '_ema_13', '_ema_20', '_ema_60', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', '_stddev_close', '_rank_stddev', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'price_cost_divergence', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth']\n" + "['ts_code', 'trade_date', 'open', 'close', 'high', 'low', 'vol', 'pct_chg', 'turnover_rate', 'pe_ttm', 'circ_mv', 'total_mv', 'volume_ratio', 'is_st', 'up_limit', 'down_limit', 'buy_sm_vol', 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol', 'buy_elg_vol', 'sell_elg_vol', 'net_mf_vol', 'his_low', 'his_high', 'cost_5pct', 'cost_15pct', 'cost_50pct', 'cost_85pct', 'cost_95pct', 'weight_avg', 'winner_rate', 'cat_l2_code', 'undist_profit_ps', 'ocfps', 'AR', 'BR', 'AR_BR', 'log_circ_mv', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'flow_divergence_diff', 'flow_divergence_ratio', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'price_cost_divergence', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'momentum_factor', 'resonance_factor', 'log_close', 'cat_vol_spike', 'up', 'down', 'obv_maobv_6', 'std_return_5_over_std_return_90', 'std_return_90_minus_std_return_90_2', 'cat_af2', 'cat_af3', 'cat_af4', 'act_factor5', 'act_factor6', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'ctrl_strength', 'low_cost_dev', 'asymmetry', 'lock_factor', 'cat_vol_break', 'cost_atr_adj', 'cat_golden_resonance', 'mv_turnover_ratio', 'mv_adjusted_volume', 'mv_weighted_turnover', 'nonlinear_mv_volume', 'mv_volume_ratio', 'mv_momentum', 'lg_flow_mom_corr_20_60', 'lg_flow_accel', 'profit_pressure', 'underwater_resistance', 'cost_conc_std_20', 'profit_decay_20', 'vol_amp_loss_20', 'vol_drop_profit_cnt_5', 'lg_flow_vol_interact_20', 'cost_break_confirm_cnt_5', 'atr_norm_channel_pos_14', 'turnover_diff_skew_20', 'lg_sm_flow_diverge_20', 'pullback_strong_20_20', 'vol_wgt_hist_pos_20', 'vol_adj_roc_20']\n" ] } ], @@ -539,23 +582,46 @@ "df = variance_n(df, n=20)\n", "df = bbi_ratio_factor(df)\n", "df, _ = get_rolling_factor(df)\n", + "df, _ = get_simple_factor(df)\n", "\n", - "# lg_flow_mom_corr(df, N=20, M=60)\n", - "# lg_flow_accel(df)\n", - "# profit_pressure(df)\n", - "# underwater_resistance(df)\n", - "# cost_conc_std(df, N=20)\n", - "# profit_decay(df, N=20)\n", - "# vol_amp_loss(df, N=20)\n", - "# vol_drop_profit_cnt(df, N=20, M=5)\n", - "# lg_flow_vol_interact(df, N=20)\n", - "# cost_break_confirm_cnt(df, M=5)\n", - "# atr_norm_channel_pos(df, N=14)\n", - "# turnover_diff_skew(df, N=20)\n", - "# lg_sm_flow_diverge(df, N=20)\n", - "# pullback_strong(df, N=20, M=20)\n", - "# vol_wgt_hist_pos(df, N=20)\n", - "# vol_adj_roc(df, N=20)\n", + "lg_flow_mom_corr(df, N=20, M=60)\n", + "lg_flow_accel(df)\n", + "profit_pressure(df)\n", + "underwater_resistance(df)\n", + "cost_conc_std(df, N=20)\n", + "profit_decay(df, N=20)\n", + "vol_amp_loss(df, N=20)\n", + "vol_drop_profit_cnt(df, N=20, M=5)\n", + "lg_flow_vol_interact(df, N=20)\n", + "cost_break_confirm_cnt(df, M=5)\n", + "atr_norm_channel_pos(df, N=14)\n", + "turnover_diff_skew(df, N=20)\n", + "lg_sm_flow_diverge(df, N=20)\n", + "pullback_strong(df, N=20, M=20)\n", + "vol_wgt_hist_pos(df, N=20)\n", + "vol_adj_roc(df, N=20)\n", + "\n", + "calculate_complex_factor(df)\n", + "cs_rank_net_lg_flow_val(df)\n", + "cs_rank_flow_divergence(df)\n", + "cs_rank_industry_adj_lg_flow(df) # Needs cat_l2_code\n", + "cs_rank_elg_buy_ratio(df)\n", + "cs_rank_rel_profit_margin(df)\n", + "cs_rank_cost_breadth(df)\n", + "cs_rank_dist_to_upper_cost(df)\n", + "cs_rank_winner_rate(df)\n", + "cs_rank_intraday_range(df)\n", + "cs_rank_close_pos_in_range(df)\n", + "cs_rank_opening_gap(df) # Needs pre_close\n", + "cs_rank_pos_in_hist_range(df) # Needs his_low, his_high\n", + "cs_rank_vol_x_profit_margin(df)\n", + "cs_rank_lg_flow_price_concordance(df)\n", + "cs_rank_turnover_per_winner(df)\n", + "cs_rank_ind_cap_neutral_pe(df) # Placeholder - needs external libraries\n", + "cs_rank_volume_ratio(df) # Needs volume_ratio\n", + "cs_rank_elg_buy_sell_sm_ratio(df)\n", + "cs_rank_cost_dist_vol_ratio(df) # Needs volume_ratio\n", + "cs_rank_size(df) # Needs circ_mv\n", "\n", "df = df.rename(columns={'l1_code': 'cat_l1_code'})\n", "df = df.rename(columns={'l2_code': 'cat_l2_code'})\n", @@ -568,7 +634,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": null, "id": "b87b938028afa206", "metadata": { "ExecuteTime": { @@ -606,7 +672,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": null, "id": "f4f16d63ad18d1bc", "metadata": { "ExecuteTime": { @@ -838,8 +904,8 @@ " # 使用当日中位数填充该特征列的 NaN 值\n", " # inplace=True 会直接修改 group DataFrame\n", " group[feature_col].fillna(median_val, inplace=True)\n", - " else:\n", - " print(f\"Warning: Feature column '{feature_col}' not found in daily group for {group['trade_date'].iloc[0]}. Skipping.\")\n", + " # else:\n", + " # print(f\"Warning: Feature column '{feature_col}' not found in daily group for {group['trade_date'].iloc[0]}. Skipping.\")\n", "\n", " return group\n", "\n", @@ -852,7 +918,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": null, "id": "40e6b68a91b30c79", "metadata": { "ExecuteTime": { @@ -1143,7 +1209,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": null, "id": "47c12bb34062ae7a", "metadata": { "ExecuteTime": { @@ -1177,7 +1243,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": null, "id": "b76ea08a", "metadata": {}, "outputs": [ @@ -1189,7 +1255,7 @@ "0 000001.SZ 2019-01-02 16.574219\n", "2738 000001.SZ 2019-01-03 16.583965\n", "5477 000001.SZ 2019-01-04 16.633371\n", - "['undist_profit_ps', 'AR_BR', 'pe_ttm', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'cat_up_limit', 'vol_break', 'weight_roc5', 'price_cost_divergence', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'cashflow_to_ev_factor', 'ocfps', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor']\n", + "['vol', 'pct_chg', 'turnover_rate', 'volume_ratio', 'winner_rate', 'undist_profit_ps', 'ocfps', 'AR', 'BR', 'AR_BR', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'momentum_factor', 'resonance_factor', 'log_close', 'cat_vol_spike', 'up', 'down', 'obv_maobv_6', 'std_return_5_over_std_return_90', 'std_return_90_minus_std_return_90_2', 'cat_af2', 'cat_af3', 'cat_af4', 'act_factor5', 'act_factor6', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'ctrl_strength', 'low_cost_dev', 'asymmetry', 'lock_factor', 'cat_vol_break', 'cost_atr_adj', 'cat_golden_resonance', 'mv_turnover_ratio', 'mv_adjusted_volume', 'mv_weighted_turnover', 'nonlinear_mv_volume', 'mv_volume_ratio', 'mv_momentum', 'lg_flow_mom_corr_20_60', 'lg_flow_accel', 'profit_pressure', 'underwater_resistance', 'cost_conc_std_20', 'profit_decay_20', 'vol_amp_loss_20', 'vol_drop_profit_cnt_5', 'lg_flow_vol_interact_20', 'cost_break_confirm_cnt_5', 'atr_norm_channel_pos_14', 'turnover_diff_skew_20', 'lg_sm_flow_diverge_20', 'pullback_strong_20_20', 'vol_wgt_hist_pos_20', 'vol_adj_roc_20', 'cat_up_limit', 'industry_obv', 'industry_return_5', 'industry_return_20', 'industry__ema_5', 'industry__ema_13', 'industry__ema_20', 'industry__ema_60', 'industry_act_factor1', 'industry_act_factor2', 'industry_act_factor3', 'industry_act_factor4', 'industry_act_factor5', 'industry_act_factor6', 'industry_rank_act_factor1', 'industry_rank_act_factor2', 'industry_rank_act_factor3', 'industry_return_5_percentile', 'industry_return_20_percentile', '000852.SH_MACD', '000905.SH_MACD', '399006.SZ_MACD', '000852.SH_MACD_hist', '000905.SH_MACD_hist', '399006.SZ_MACD_hist', '000852.SH_RSI', '000905.SH_RSI', '399006.SZ_RSI', '000852.SH_Signal_line', '000905.SH_Signal_line', '399006.SZ_Signal_line', '000852.SH_amount_change_rate', '000905.SH_amount_change_rate', '399006.SZ_amount_change_rate', '000852.SH_amount_mean', '000905.SH_amount_mean', '399006.SZ_amount_mean', '000852.SH_daily_return', '000905.SH_daily_return', '399006.SZ_daily_return', '000852.SH_up_ratio_20d', '000905.SH_up_ratio_20d', '399006.SZ_up_ratio_20d', '000852.SH_volatility', '000905.SH_volatility', '399006.SZ_volatility', '000852.SH_volume_change_rate', '000905.SH_volume_change_rate', '399006.SZ_volume_change_rate']\n", "去除极值\n", "开始截面 MAD 去极值处理 (k=3.0)...\n" ] @@ -1198,7 +1264,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "MAD Filtering: 100%|██████████| 24/24 [00:04<00:00, 5.00it/s]\n" + "MAD Filtering: 100%|██████████| 114/114 [00:22<00:00, 5.04it/s]\n" ] }, { @@ -1213,7 +1279,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "MAD Filtering: 100%|██████████| 24/24 [00:03<00:00, 6.27it/s]\n" + "MAD Filtering: 100%|██████████| 114/114 [00:18<00:00, 6.16it/s]\n" ] }, { @@ -1251,15 +1317,15 @@ "output_type": "stream", "text": [ "截面 MAD 去极值处理完成。\n", - "feature_columns: ['undist_profit_ps', 'AR_BR', 'pe_ttm', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'cat_up_limit', 'vol_break', 'weight_roc5', 'price_cost_divergence', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'cashflow_to_ev_factor', 'ocfps', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor']\n", + "feature_columns: ['vol', 'pct_chg', 'turnover_rate', 'volume_ratio', 'winner_rate', 'undist_profit_ps', 'ocfps', 'AR', 'BR', 'AR_BR', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'momentum_factor', 'resonance_factor', 'log_close', 'cat_vol_spike', 'up', 'down', 'obv_maobv_6', 'std_return_5_over_std_return_90', 'std_return_90_minus_std_return_90_2', 'cat_af2', 'cat_af3', 'cat_af4', 'act_factor5', 'act_factor6', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'ctrl_strength', 'low_cost_dev', 'asymmetry', 'lock_factor', 'cat_vol_break', 'cost_atr_adj', 'cat_golden_resonance', 'mv_turnover_ratio', 'mv_adjusted_volume', 'mv_weighted_turnover', 'nonlinear_mv_volume', 'mv_volume_ratio', 'mv_momentum', 'lg_flow_mom_corr_20_60', 'lg_flow_accel', 'profit_pressure', 'underwater_resistance', 'cost_conc_std_20', 'profit_decay_20', 'vol_amp_loss_20', 'vol_drop_profit_cnt_5', 'lg_flow_vol_interact_20', 'cost_break_confirm_cnt_5', 'atr_norm_channel_pos_14', 'turnover_diff_skew_20', 'lg_sm_flow_diverge_20', 'pullback_strong_20_20', 'vol_wgt_hist_pos_20', 'vol_adj_roc_20', 'cat_up_limit', 'industry_obv', 'industry_return_5', 'industry_return_20', 'industry__ema_5', 'industry__ema_13', 'industry__ema_20', 'industry__ema_60', 'industry_act_factor1', 'industry_act_factor2', 'industry_act_factor3', 'industry_act_factor4', 'industry_act_factor5', 'industry_act_factor6', 'industry_rank_act_factor1', 'industry_rank_act_factor2', 'industry_rank_act_factor3', 'industry_return_5_percentile', 'industry_return_20_percentile', '000852.SH_MACD', '000905.SH_MACD', '399006.SZ_MACD', '000852.SH_MACD_hist', '000905.SH_MACD_hist', '399006.SZ_MACD_hist', '000852.SH_RSI', '000905.SH_RSI', '399006.SZ_RSI', '000852.SH_Signal_line', '000905.SH_Signal_line', '399006.SZ_Signal_line', '000852.SH_amount_change_rate', '000905.SH_amount_change_rate', '399006.SZ_amount_change_rate', '000852.SH_amount_mean', '000905.SH_amount_mean', '399006.SZ_amount_mean', '000852.SH_daily_return', '000905.SH_daily_return', '399006.SZ_daily_return', '000852.SH_up_ratio_20d', '000905.SH_up_ratio_20d', '399006.SZ_up_ratio_20d', '000852.SH_volatility', '000905.SH_volatility', '399006.SZ_volatility', '000852.SH_volume_change_rate', '000905.SH_volume_change_rate', '399006.SZ_volume_change_rate']\n", "df最小日期: 2019-01-02\n", - "df最大日期: 2025-04-09\n", - "2058298\n", + "df最大日期: 2025-05-06\n", + "2058185\n", "train_data最小日期: 2020-01-02\n", "train_data最大日期: 2022-12-30\n", - "1678529\n", + "1730349\n", "test_data最小日期: 2023-01-03\n", - "test_data最大日期: 2025-04-09\n", + "test_data最大日期: 2025-05-06\n", " ts_code trade_date log_circ_mv\n", "0 000001.SZ 2019-01-02 16.574219\n", "2738 000001.SZ 2019-01-03 16.583965\n", @@ -1287,55 +1353,81 @@ "# train_data, _ = create_deviation_within_dates(train_data, feature_columns)\n", "# test_data, _ = create_deviation_within_dates(test_data, feature_columns)\n", "\n", - "feature_columns = [\n", - " 'undist_profit_ps', \n", - " 'AR_BR', \n", - " 'pe_ttm',\n", - " 'alpha_22_improved', \n", - " 'alpha_003', \n", - " 'alpha_007', \n", - " 'alpha_013', \n", - " 'cat_up_limit', \n", - " 'cat_down_limit', \n", - " 'up_limit_count_10d', \n", - " 'down_limit_count_10d', \n", - " 'consecutive_up_limit', \n", - " 'vol_break', \n", - " 'weight_roc5', \n", - " 'price_cost_divergence', \n", - " 'smallcap_concentration', \n", - " 'cost_stability', \n", - " 'high_cost_break_days', \n", - " 'liquidity_risk', \n", - " 'turnover_std', \n", - " 'mv_volatility', \n", - " 'volume_growth', \n", - " 'mv_growth', \n", - " 'lg_flow_mom_corr_20_60', \n", - " 'lg_flow_accel', \n", - " 'profit_pressure', \n", - " 'underwater_resistance', \n", - " 'cost_conc_std_20', \n", - " 'profit_decay_20', \n", - " 'vol_amp_loss_20', \n", - " 'vol_drop_profit_cnt_5', \n", - " 'lg_flow_vol_interact_20', \n", - " 'cost_break_confirm_cnt_5', \n", - " 'atr_norm_channel_pos_14', \n", - " 'turnover_diff_skew_20', \n", - " 'lg_sm_flow_diverge_20', \n", - " 'pullback_strong_20_20', \n", - " 'vol_wgt_hist_pos_20', \n", - " 'vol_adj_roc_20',\n", - " 'cashflow_to_ev_factor',\n", - " 'ocfps',\n", - " 'book_to_price_ratio',\n", - " 'turnover_rate_mean_5',\n", - " 'variance_20',\n", - " 'bbi_ratio_factor'\n", - "]\n", - "feature_columns = [col for col in feature_columns if col in train_data.columns]\n", + "# feature_columns = [\n", + "# 'undist_profit_ps', \n", + "# 'AR_BR', \n", + "# 'pe_ttm',\n", + "# 'alpha_22_improved', \n", + "# 'alpha_003', \n", + "# 'alpha_007', \n", + "# 'alpha_013', \n", + "# 'cat_up_limit', \n", + "# 'cat_down_limit', \n", + "# 'up_limit_count_10d', \n", + "# 'down_limit_count_10d', \n", + "# 'consecutive_up_limit', \n", + "# 'vol_break', \n", + "# 'weight_roc5', \n", + "# 'price_cost_divergence', \n", + "# 'smallcap_concentration', \n", + "# 'cost_stability', \n", + "# 'high_cost_break_days', \n", + "# 'liquidity_risk', \n", + "# 'turnover_std', \n", + "# 'mv_volatility', \n", + "# 'volume_growth', \n", + "# 'mv_growth', \n", + "# 'lg_flow_mom_corr_20_60', \n", + "# 'lg_flow_accel', \n", + "# 'profit_pressure', \n", + "# 'underwater_resistance', \n", + "# 'cost_conc_std_20', \n", + "# 'profit_decay_20', \n", + "# 'vol_amp_loss_20', \n", + "# 'vol_drop_profit_cnt_5', \n", + "# 'lg_flow_vol_interact_20', \n", + "# 'cost_break_confirm_cnt_5', \n", + "# 'atr_norm_channel_pos_14', \n", + "# 'turnover_diff_skew_20', \n", + "# 'lg_sm_flow_diverge_20', \n", + "# 'pullback_strong_20_20', \n", + "# 'vol_wgt_hist_pos_20', \n", + "# 'vol_adj_roc_20',\n", + "# 'cashflow_to_ev_factor',\n", + "# 'ocfps',\n", + "# 'book_to_price_ratio',\n", + "# 'turnover_rate_mean_5',\n", + "# 'variance_20',\n", + "# 'bbi_ratio_factor'\n", + "# ]\n", + "# feature_columns = [col for col in feature_columns if col in train_data.columns]\n", + "# feature_columns = [col for col in feature_columns if not col.startswith('_')]\n", + "\n", + "feature_columns = [col for col in test_data.head(10).merge(industry_df, on=['cat_l2_code', 'trade_date'], how='left').merge(index_data, on='trade_date', how='left').columns]\n", + "feature_columns = [col for col in feature_columns if col not in ['trade_date',\n", + " 'ts_code',\n", + " 'label']]\n", + "feature_columns = [col for col in feature_columns if 'future' not in col]\n", + "feature_columns = [col for col in feature_columns if 'label' not in col]\n", + "feature_columns = [col for col in feature_columns if 'score' not in col]\n", + "feature_columns = [col for col in feature_columns if 'gen' not in col]\n", + "feature_columns = [col for col in feature_columns if 'is_st' not in col]\n", + "feature_columns = [col for col in feature_columns if 'pe_ttm' not in col]\n", + "# feature_columns = [col for col in feature_columns if 'volatility' not in col]\n", + "feature_columns = [col for col in feature_columns if 'circ_mv' not in col]\n", + "feature_columns = [col for col in feature_columns if 'code' not in col]\n", + "feature_columns = [col for col in feature_columns if col not in origin_columns]\n", "feature_columns = [col for col in feature_columns if not col.startswith('_')]\n", + "# feature_columns = [col for col in feature_columns if col not in ['ts_code', 'trade_date', 'vol_std_5', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_007', 'consecutive_up_limit', 'mv_volatility', 'volume_growth', 'mv_growth', 'arbr']]\n", + "feature_columns = [col for col in feature_columns if col not in ['intraday_lg_flow_corr_20', \n", + " 'cap_neutral_cost_metric', \n", + " 'hurst_net_mf_vol_60', \n", + " 'complex_factor_deap_1', \n", + " 'lg_buy_consolidation_20',\n", + " 'cs_rank_ind_cap_neutral_pe',\n", + " 'cs_rank_opening_gap',\n", + " 'cs_rank_ind_adj_lg_flow']]\n", + "\n", "numeric_columns = df.select_dtypes(include=['float64', 'int64']).columns\n", "numeric_columns = [col for col in numeric_columns if col in feature_columns]\n", "# feature_columns = select_top_features_by_rankic(df, numeric_columns, n=10)\n", @@ -1344,16 +1436,16 @@ "train_data = fill_nan_with_daily_median(train_data, feature_columns)\n", "test_data = fill_nan_with_daily_median(test_data, feature_columns)\n", "\n", - "train_data = train_data.dropna(subset=feature_columns)\n", + "train_data = train_data.dropna(subset=[col for col in feature_columns if col in train_data.columns])\n", "train_data = train_data.dropna(subset=['label'])\n", "train_data = train_data.reset_index(drop=True)\n", "# print(test_data.tail())\n", - "test_data = test_data.dropna(subset=feature_columns)\n", + "test_data = test_data.dropna(subset=[col for col in feature_columns if col in train_data.columns])\n", "# test_data = test_data.dropna(subset=['label'])\n", "test_data = test_data.reset_index(drop=True)\n", "\n", "transform_feature_columns = feature_columns\n", - "transform_feature_columns = [col for col in transform_feature_columns if col in feature_columns and not col.startswith('cat')]\n", + "transform_feature_columns = [col for col in transform_feature_columns if col in feature_columns and not col.startswith('cat') and col in train_data.columns]\n", "# transform_feature_columns.remove('undist_profit_ps')\n", "print('去除极值')\n", "cs_mad_filter(train_data, transform_feature_columns)\n", @@ -1366,7 +1458,7 @@ "# cs_neutralize_industry_cap(test_data, transform_feature_columns)\n", "# cs_zscore_standardize(test_data, transform_feature_columns)\n", "\n", - "mad_filter_feature_columns = [col for col in feature_columns if col not in transform_feature_columns and not col.startswith('cat')]\n", + "mad_filter_feature_columns = [col for col in feature_columns if col not in transform_feature_columns and not col.startswith('cat') and col in train_data.columns]\n", "cs_mad_filter(train_data, mad_filter_feature_columns)\n", "cs_mad_filter(test_data, mad_filter_feature_columns)\n", "\n", @@ -1393,64 +1485,64 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": null, "id": "e23d1759", "metadata": {}, "outputs": [], "source": [ - "feature_columns = [\n", - " 'undist_profit_ps', \n", - " 'AR_BR', \n", - " 'pe_ttm',\n", - " 'alpha_22_improved', \n", - " 'alpha_003', \n", - " 'alpha_007', \n", - " 'alpha_013', \n", - " 'cat_up_limit', \n", - " 'cat_down_limit', \n", - " 'up_limit_count_10d', \n", - " 'down_limit_count_10d', \n", - " 'consecutive_up_limit', \n", - " 'vol_break', \n", - " 'weight_roc5', \n", - " 'price_cost_divergence', \n", - " 'smallcap_concentration', \n", - " 'cost_stability', \n", - " 'high_cost_break_days', \n", - " 'liquidity_risk', \n", - " 'turnover_std', \n", - " 'mv_volatility', \n", - " 'volume_growth', \n", - " 'mv_growth', \n", - " 'lg_flow_mom_corr_20_60', \n", - " 'lg_flow_accel', \n", - " 'profit_pressure', \n", - " 'underwater_resistance', \n", - " 'cost_conc_std_20', \n", - " 'profit_decay_20', \n", - " 'vol_amp_loss_20', \n", - " 'vol_drop_profit_cnt_5', \n", - " 'lg_flow_vol_interact_20', \n", - " 'cost_break_confirm_cnt_5', \n", - " 'atr_norm_channel_pos_14', \n", - " 'turnover_diff_skew_20', \n", - " 'lg_sm_flow_diverge_20', \n", - " 'pullback_strong_20_20', \n", - " 'vol_wgt_hist_pos_20', \n", - " 'vol_adj_roc_20',\n", - " 'cashflow_to_ev_factor',\n", - " 'ocfps',\n", - " 'book_to_price_ratio',\n", - " 'turnover_rate_mean_5',\n", - " 'variance_20',\n", - " 'bbi_ratio_factor'\n", - "]\n", - "feature_columns = [col for col in feature_columns if col in train_data.columns]" + "# feature_columns = [\n", + "# 'undist_profit_ps', \n", + "# 'AR_BR', \n", + "# 'pe_ttm',\n", + "# 'alpha_22_improved', \n", + "# 'alpha_003', \n", + "# 'alpha_007', \n", + "# 'alpha_013', \n", + "# 'cat_up_limit', \n", + "# 'cat_down_limit', \n", + "# 'up_limit_count_10d', \n", + "# 'down_limit_count_10d', \n", + "# 'consecutive_up_limit', \n", + "# 'vol_break', \n", + "# 'weight_roc5', \n", + "# 'price_cost_divergence', \n", + "# 'smallcap_concentration', \n", + "# 'cost_stability', \n", + "# 'high_cost_break_days', \n", + "# 'liquidity_risk', \n", + "# 'turnover_std', \n", + "# 'mv_volatility', \n", + "# 'volume_growth', \n", + "# 'mv_growth', \n", + "# 'lg_flow_mom_corr_20_60', \n", + "# 'lg_flow_accel', \n", + "# 'profit_pressure', \n", + "# 'underwater_resistance', \n", + "# 'cost_conc_std_20', \n", + "# 'profit_decay_20', \n", + "# 'vol_amp_loss_20', \n", + "# 'vol_drop_profit_cnt_5', \n", + "# 'lg_flow_vol_interact_20', \n", + "# 'cost_break_confirm_cnt_5', \n", + "# 'atr_norm_channel_pos_14', \n", + "# 'turnover_diff_skew_20', \n", + "# 'lg_sm_flow_diverge_20', \n", + "# 'pullback_strong_20_20', \n", + "# 'vol_wgt_hist_pos_20', \n", + "# 'vol_adj_roc_20',\n", + "# 'cashflow_to_ev_factor',\n", + "# 'ocfps',\n", + "# 'book_to_price_ratio',\n", + "# 'turnover_rate_mean_5',\n", + "# 'variance_20',\n", + "# 'bbi_ratio_factor'\n", + "# ]\n", + "# feature_columns = [col for col in feature_columns if col in train_data.columns]" ] }, { "cell_type": "code", - "execution_count": 133, + "execution_count": null, "id": "8f134d435f71e9e2", "metadata": { "ExecuteTime": { @@ -1553,7 +1645,7 @@ }, { "cell_type": "code", - "execution_count": 138, + "execution_count": null, "id": "c6eb5cd4-e714-420a-ac48-39af3e11ee81", "metadata": { "ExecuteTime": { @@ -1568,13 +1660,13 @@ "text": [ "train data size: 36400\n", "原始样本数: 36400, 去除标签为空后样本数: 36400\n", - "cat_features: [7]\n" + "cat_features: [27, 30, 37, 39, 41, 80, 86, 87, 88, 100, 102, 125]\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4301941223d144c89c9302df7bb676ce", + "model_id": "a830a64e308a436b919bfc0dc59eb9a7", "version_major": 2, "version_minor": 0 }, @@ -1589,10 +1681,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "0:\tlearn: 0.6421053\ttest: 0.1200000\tbest: 0.1200000 (0)\ttotal: 98.9ms\tremaining: 49.3s\n", - "bestTest = 0.8\n", - "bestIteration = 17\n", - "Shrink model to first 18 iterations.\n" + "0:\tlearn: 0.6527197\ttest: 0.3052632\tbest: 0.3052632 (0)\ttotal: 170ms\tremaining: 1m 25s\n", + "bestTest = 0.4869565217\n", + "bestIteration = 83\n", + "Shrink model to first 84 iterations.\n" ] } ], @@ -1604,12 +1696,12 @@ "# feature_contri = [2 if feat.startswith('act_factor') or 'buy' in feat or 'sell' in feat else 1 for feat in feature_columns]\n", "# light_params['feature_contri'] = feature_contri\n", "# print(f'feature_contri: {feature_contri}')\n", - "model, scaler, pca = train_model(train_data.dropna(subset=['label']).groupby('trade_date', group_keys=False).apply(lambda x: x.nsmallest(50, 'total_mv')), feature_columns)\n" + "model, scaler, pca = train_model(train_data.dropna(subset=['label']).groupby('trade_date', group_keys=False).apply(lambda x: x.nsmallest(50, 'total_mv')).merge(industry_df, on=['cat_l2_code', 'trade_date'], how='left').merge(index_data, on='trade_date', how='left'), feature_columns)\n" ] }, { "cell_type": "code", - "execution_count": 139, + "execution_count": null, "id": "5d1522a7538db91b", "metadata": { "ExecuteTime": { @@ -1629,6 +1721,8 @@ "score_df = test_data\n", "score_df = fill_nan_with_daily_median(score_df, ['pe_ttm'])\n", "score_df = score_df[score_df['pe_ttm'] > 0]\n", + "score_df = score_df.merge(industry_df, on=['cat_l2_code', 'trade_date'], how='left')\n", + "score_df = score_df.merge(index_data, on='trade_date', how='left')\n", "# score_df = score_df.groupby('trade_date', group_keys=False).apply(lambda x: x.nsmallest(50, 'total_mv')).reset_index()\n", "numeric_columns = score_df.select_dtypes(include=['float64', 'int64']).columns\n", "numeric_columns = [col for col in feature_columns if col in numeric_columns]\n", @@ -1643,44 +1737,32 @@ ").reset_index(drop=True) # drop=True 避免添加旧索引列\n", "# save_df = score_df.groupby('trade_date', group_keys=False).apply(lambda x: x.nlargest(1, 'score')).reset_index()\n", "save_df = score_df.groupby('trade_date', group_keys=False).apply(lambda x: x.nsmallest(1, 'total_mv')).reset_index()\n", - "save_df[['trade_date', 'score', 'ts_code']].to_csv('predictions_test.tsv', index=False)\n", - "# " + "save_df[['trade_date', 'score', 'ts_code']].to_csv('predictions_test.tsv', index=False)\n" ] }, { "cell_type": "code", - "execution_count": 140, - "id": "340a82b9", + "execution_count": null, + "id": "09b1799e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "53077\n", - "0 2.98\n", - "1 8.26\n", - "2 10.03\n", - "3 6.06\n", - "4 6.06\n", - " ... \n", - "168084 5.03\n", - "168085 -0.98\n", - "168086 5.44\n", - "168087 3.01\n", - "168088 -0.24\n", - "Name: pct_chg, Length: 168089, dtype: float64\n" + "174\n", + "['vol', 'pct_chg', 'turnover_rate', 'volume_ratio', 'winner_rate', 'undist_profit_ps', 'ocfps', 'AR', 'BR', 'AR_BR', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'momentum_factor', 'resonance_factor', 'log_close', 'cat_vol_spike', 'up', 'down', 'obv_maobv_6', 'std_return_5_over_std_return_90', 'std_return_90_minus_std_return_90_2', 'cat_af2', 'cat_af3', 'cat_af4', 'act_factor5', 'act_factor6', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'ctrl_strength', 'low_cost_dev', 'asymmetry', 'lock_factor', 'cat_vol_break', 'cost_atr_adj', 'cat_golden_resonance', 'mv_turnover_ratio', 'mv_adjusted_volume', 'mv_weighted_turnover', 'nonlinear_mv_volume', 'mv_volume_ratio', 'mv_momentum', 'lg_flow_mom_corr_20_60', 'lg_flow_accel', 'profit_pressure', 'underwater_resistance', 'cost_conc_std_20', 'profit_decay_20', 'vol_amp_loss_20', 'vol_drop_profit_cnt_5', 'lg_flow_vol_interact_20', 'cost_break_confirm_cnt_5', 'atr_norm_channel_pos_14', 'turnover_diff_skew_20', 'lg_sm_flow_diverge_20', 'pullback_strong_20_20', 'vol_wgt_hist_pos_20', 'vol_adj_roc_20', 'cat_up_limit', 'industry_obv', 'industry_return_5', 'industry_return_20', 'industry__ema_5', 'industry__ema_13', 'industry__ema_20', 'industry__ema_60', 'industry_act_factor1', 'industry_act_factor2', 'industry_act_factor3', 'industry_act_factor4', 'industry_act_factor5', 'industry_act_factor6', 'industry_rank_act_factor1', 'industry_rank_act_factor2', 'industry_rank_act_factor3', 'industry_return_5_percentile', 'industry_return_20_percentile', '000852.SH_MACD', '000905.SH_MACD', '399006.SZ_MACD', '000852.SH_MACD_hist', '000905.SH_MACD_hist', '399006.SZ_MACD_hist', '000852.SH_RSI', '000905.SH_RSI', '399006.SZ_RSI', '000852.SH_Signal_line', '000905.SH_Signal_line', '399006.SZ_Signal_line', '000852.SH_amount_change_rate', '000905.SH_amount_change_rate', '399006.SZ_amount_change_rate', '000852.SH_amount_mean', '000905.SH_amount_mean', '399006.SZ_amount_mean', '000852.SH_daily_return', '000905.SH_daily_return', '399006.SZ_daily_return', '000852.SH_up_ratio_20d', '000905.SH_up_ratio_20d', '399006.SZ_up_ratio_20d', '000852.SH_volatility', '000905.SH_volatility', '399006.SZ_volatility', '000852.SH_volume_change_rate', '000905.SH_volume_change_rate', '399006.SZ_volume_change_rate']\n" ] } ], "source": [ - "print(len(score_df[score_df['label'] == 1]))\n", - "print(score_df['pct_chg'])" + "print(len(feature_columns))\n", + "print(feature_columns)" ] }, { "cell_type": "code", - "execution_count": 141, + "execution_count": null, "id": "7e9023cc", "metadata": {}, "outputs": [], @@ -1877,6 +1959,254 @@ "# print(\"\\n--- 最终汇总报告 DataFrame ---\")\n", "# print(factor_analysis_report)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a0000d75", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "开始分析 'score' 在 'circ_mv' 和 'future_return' 下的表现...\n", + "准备数据,处理 NaN 值...\n", + "原始数据 173284 行,移除 NaN 后剩余 172470 行用于分析。\n", + "对 'circ_mv' 和 'future_return' 进行 100 分位数分箱...\n", + "按二维分箱分组计算 Spearman Rank IC...\n", + "整理结果用于绘图...\n", + "circ_mv_bin 0 1 2 3 4 5 6 7 8 9 ... 90 91 92 \\\n", + "future_return_bin ... \n", + "0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n", + "1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n", + "2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n", + "3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n", + "4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n", + "... .. .. .. .. .. .. .. .. .. .. ... .. .. .. \n", + "95 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n", + "96 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n", + "97 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n", + "98 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n", + "99 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n", + "\n", + "circ_mv_bin 93 94 95 96 97 98 99 \n", + "future_return_bin \n", + "0 NaN NaN NaN NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN NaN NaN NaN \n", + "2 NaN NaN NaN NaN NaN NaN NaN \n", + "3 NaN NaN NaN NaN NaN NaN NaN \n", + "4 NaN NaN NaN NaN NaN NaN NaN \n", + "... .. .. .. .. .. .. .. \n", + "95 NaN NaN NaN NaN NaN NaN NaN \n", + "96 NaN NaN NaN NaN NaN NaN NaN \n", + "97 NaN NaN NaN NaN NaN NaN NaN \n", + "98 NaN NaN NaN NaN NaN NaN NaN \n", + "99 NaN NaN NaN NaN NaN NaN NaN \n", + "\n", + "[100 rows x 100 columns]\n", + "生成热力图...\n", + "分析完成。\n" + ] + }, + { + "data": { + "image/png": "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nz59dOedd95w31WqVNH8+fNlGMZ1/y0DAADA/7FQDgCAyeLi4tSuXTsdOXJEtWvXVvHixXX48GHNnj1b27dv17x589yLYi6XS926ddOqVatUvHhxtWnTRqdPn9ayZcv0008/afr06am28Hjvvfc0bdo0FSpUSE899ZROnz6tpUuXavXq1ZoyZYoqVaqUbk8DBw7U3LlzVbRoURUrVkzh4eGpnl+9erW6d++uyMhI1atXT+Hh4frpp580cOBA/fPPP+rRo4dHP4v27du7b1x5PY899th1M7t375Z0ZSuX+fPnKyQkRElJSbp8+bLmz5+vxMRE5cqVK92F8tOnT+uBBx7I9PxOp1OzZs1SQECA3n//fZ07d06ffPJJlvqXpMcff1wTJ07Ugw8+qDlz5ujll19O9bxhGJo+fbr7+x9++EH/93//pyFDhqhVq1ZyuVwyDENNmzbV22+/7c61bt1ap06dSveGpzfi+PHj6d7AMz2JiYn6/fffNXDgQHdPKS5fvqzOnTtr48aNqlKlimrVqqVTp07phx9+0LZt2/Ttt9+m2rJEkvbu3at3331XpUqVUsuWLfXLL7/ou+++U3x8fIZ7nxuGocGDB/tskVySjh07JklpPuBKkZXf2/QEBQWpSZMmmjp1qjZv3qyqVau6n/vtt9905MgRPffcc6m243n11Ve1fPly3X///Wrbtq3i4uK0ZMkStW/fXgsXLvTKYvL17Ny5U+3atVNycrIaNmyo/Pnz6/fff9eoUaN04sQJDRo0KFX+0KFD6tSpkx588EG1atVK69at0yeffKJdu3bpk08+cS9YJyUl6cUXX9T69etVpUoV1ahRQ4cPH9YPP/ygDRs2aMGCBVn+i5CMFC5cWE6nU2fPnmWfcgAAABtgoRwAAJNt2LBBhw8f1tNPP613333X/fj777+vJUuW6PDhw7r77rslXbnB5KpVq/TYY49p/Pjx7issv/vuO73yyisaP368e3/k1atXa9q0aSpbtqymT5/u3uZhzZo1eumll/Tqq69q6dKlaa7S/OabbxQXF6cpU6ak2TpCki5evKh+/fopV65cWrBgge644w5JUq9evfTkk09q0qRJiomJUb58+bL9s3jllVcUGBio3LlzKzIy0v240+nUoEGDdPr0ab366qsqXry4EhMT0128crlcSkhI0JkzZ9yP1a1bVw6HQ5LUr18/rVixQps3b05zXIrz58/r/Pnzaa6Clq5coZzywUVkZKRmzpypzZs369FHH1VCQoKaNGmi8PBwbdq0Sc8//7w6dOiQZj/qHTt26Omnn3YvOteuXVu1a9dOU+vbb7/VgQMHlD9/fp05c0bVq1fXggUL9OGHH6pBgwa6fPmypCtbufhCQkLCdbcLKVu2bKrvAwIC9Nxzz6ldu3bux3799Vdt3LjR/UFBigceeEBDhw7V6tWr1aRJk1Tn+fzzz/Xcc8/pjTfeUEBAgJxOp+rXr6/Vq1fr0qVLaT7MkaShQ4dq7ty5Plskl678rkpSWFiY18/drFkz91X4Vy+Uf//99+7nU5w/f17Lly9X8eLFNWvWLPfvbM2aNTV8+HBt2bLFJwvln332mZxOp8aMGaNGjRq5H2/ZsqXmzp2rN954I9XV8adPn1ZMTIz7Axan06nnnntOq1at0o8//qi6detKkr788kutX79eL774ol599VX38V988YWGDRumqVOn6vXXX7+h3lN+16/+iw4AAADkXCyUAwBgspSrHvfv36+4uDjdcsstkqS+ffuqb9++qbILFy6UdGWx9+oF7nr16mnUqFGptnr4+uuvJUl9+vRJtbhZs2ZN1atXT8uWLdO6dev0+OOPp6px6NAhffHFF3rooYfS7Xft2rU6ffq0oqKiNGvWrFTP3XLLLTp27Ji2bt2a7sLv9aR3E86LFy+qW7duOn36tHr06KF27dqpVq1aaty4sd5880137sKFC3r33Xf12muvZfkGnFe7em/zlD3Br92eRrpypfTVi7Lh4eF69NFHJV1ZHE1ZID18+LAkqXjx4mnOcfLkSUnK9OrsxMREjRkzRiEhIWrdurUmTpyo/Pnz6z//+Y8mTJigCRMm6Omnn5YkFShQIDsv1WPh4eH6999/M8107txZ0pX9zPfs2aMRI0akWsCVpEcffdR9tX+KgwcPavv27ZKubC9zrSJFiqhv377uK4ojIyNVqVIlLVmyRP/++2+aRd/33ntPM2fOVLly5Xy2SC7J3d/VH7x4S7ly5VS2bFktW7ZMgwcPVlBQkJKTk7VkyRKVLFlSFSpUcGdz5cqlyMhInTlzRgcPHlSJEiUkSfXr11f9+vW93ltGPvzwQ3344Yfu7xMTE7VlyxadO3dOCQkJOn78uPvDNkkKDQ1N9ZcVkZGR6tChg1599VWtXLnSvVC+aNEiSVe2lxk9erQ7HxcXJ+nKB5A36vTp05J890EUAAAAzMVCOQAAJrv//vvVtGlTLVq0SI888ojKli2rqKgoVatWTfXq1Uu1IL5//36FhYW5F71ShIWF6Yknnkj12J9//ilJ6e5FfN9992nZsmX6888/0yyU165dO8NFckn666+/JF1ZTE5ZUL7W8ePHM37B2XDo0CF169ZNu3fv1sMPP6zu3btLurJ38IIFC9S5c2cVLlxYLpdLr7zyin766Sft2rVLM2fOzPbiVvny5d1X7v/000+SrlydOm3aNM2ePVuVK1eWy+VScnJyls63Y8cOSWmvsJaytlA+btw4HTlyRO3atUu1kNi+fXsdOHBArVq1cs/i9ttvz1JPN+rOO++87mx79+4tSapUqZJefPFFLViwIM1CuXTlZzB79mxt2rRJu3bt0tmzZ91XFqf3M27QoEGav35ImbFhGKkenzt3ro4fP65SpUpp165d+umnn9L8nt8sKR90pSzYXqtNmzbauXOnVq5c6dHWIM2bN9eIESO0fv16Pfroo9q8ebNOnDiR6op96cpWLa+//rqGDh2qxo0bq0SJEoqKilLFihXVuHFjjz5M8tSGDRu0ePFibdu2Tfv371dSUlKq7aSuVqRIkTTb7pQuXVrS/z58kqQDBw5IUqqtia7mjfeg48eP65ZbbuGmqwAAADYReP0IAAC42T744APNmzdP3bt3V7FixfTLL7+oT58+atq0qc6dO5elc1y6dEnx8fFpFg2zexO6e++9N9PnU84/YMAA7d69O92vtm3bZqtmer7++mu1bNlSe/fulaRUW7l069ZNly5d0uDBg5WQkKCePXvqp59+Ur169fTll196dAVo79699dZbb8nlcmnp0qWqUKGCgoKCdOTIEUlXFmoHDx6cakuYjCQnJ+uXX35RRESEoqOj0zyfslBeqFChdI9fvXq1Jk+erHz58qXZ7z1//vwaPXq0SpUq5b5RZspC4s1Wvnx5rVu3LkvZmjVr6r777tP69eu1bdu2VM/t2LFDDRo00KRJk5Q/f369+OKLmjx5coZ7jUvpX5mfkePHj+ull17SnDlzVLBgQb3zzjs+2z4j5a8Qjhw5ku5V5SdPnlRSUlKaxeCsatKkiYKCgtzbrXz//fcKCAhQ06ZN02SfeeYZLV++XAMHDlTlypX1119/6e2331bdunX1+++/e1Q/uz788EO1b99ea9euVZUqVTRo0CAtXLgw3Q9PpCsL/NdKWVS/+r3NMAzlyZMnw/egtWvX3nDva9euVfny5W/4PAAAAPAPLJQDAGCyQ4cO6bffftM999yjl156SSNHjtTKlSvVoUMH/fXXX/rqq6/c2ZIlSyohIcF9JfHVnnjiCT344IM6f/68pP8tnqZ31feNLLCmLATu27cv3fPOmDHDfTW1J7Zt26aYmBgNGDBAYWFh+uKLL9JkoqKi9Nxzz+mnn37SE088oeXLl+v555/XuHHj3Ff0Xs++ffv0xRdfqEuXLqke//bbb3XkyBH3NjBX75+cVcuXL9eRI0dUp06dVDdXTHHixAlJGV9Rnj9/fuXJk0evvfZapjcR3LBhg0JCQny2UF6nTh1t2LAhy1frvvTSS5Kk8ePHp3p87Nixio+P12effaYxY8aoY8eOqlmzZpoPea6W3s8xI82aNdMrr7yi3Llzq1evXjp06FCqvdBvprvuuktFixbVxYsXtXXr1lTPnT59WseOHVOxYsU83sO8YMGCeuihh7RixQpdvHhRy5YtU5UqVVSkSJE0tX777TeFh4erXbt2Gjp0qObPn68JEyYoPj4+1XYlN8vJkyc1efJklShRQosXL9agQYPUpk0bRUVFufdyv9bhw4cVHx+f6rH9+/dLUqq/rChRooTOnz/v/rd0tVmzZmnmzJk31HtiYqKWLVvm3uoFAAAAOR8L5QAAmGzOnDlq06aNVq5cmerxUqVKSZJOnTrlfizlKszhw4crMTHR/fjGjRt15MgRlStXzr1NQMuWLSVJo0ePdi+eS1eukly2bJmKFCmihx9+ONv9PvLII7r11lv13Xffac+ePe7HXS6Xhg4dqrfffltnz57N9nklaeLEiXrmmWe0ceNGNWzYUN98842qVauWJrd48WI1a9ZM9913nw4dOqSqVauqX79+GV49Hx8frx07dmj27Nn6448/FBcXp8aNG2vYsGHuq7sl6ezZs/roo49UsmRJ988vu+Li4jRs2DAFBAToP//5T7qZlJlmtFBeoUIFffnll+49yNOTshf8Aw88kGZLkpvl8ccfV9GiRTV27Ngs5evXr6+SJUvql19+ce8/Lv3vg4KrFz4PHTqkESNGeKXPq2/C2qJFC913332aPHmyDh486JXzX0/79u0lXbma+uor2cePH6/k5ORUN7X0RPPmzXX+/HkNGzZMp0+fVvPmzdNk/vjjD7Vp0ybNhxRlypSRlPp95WY5efKkDMNQwYIFU/2OfvPNN1q+fHm6xyQkJOiTTz5J9X3Kh2VXb5+TcrPXjz76KNWV+6tXr9abb76pb7755oZ6nzRpkoKCgjK88h0AAAA5D3uUAwBgshYtWmjGjBnq16+fli5dqiJFiujUqVNaunSpAgMD1aBBA3f2ueee09q1a7V69Wo1adJENWrU0JkzZ7R06VKFhoZq8ODB7uxjjz2m//znP5o2bZqefPJJ1a5dW6dPn9aKFSsUERGhkSNHerTAGhERoffee089evRQy5YtVbduXRUqVEi//vqrdu3apQYNGqhGjRoe/Sw6dOigPXv2qGXLluku4h86dEjvvvuuVq1apa5du2rixInq2LGjNm7cqGeeeUbPPvusatWqlWZbi5iYGP3xxx+SrtwcsH79+nrsscf0yCOPuBdrk5KS9Nprr+no0aP68ssv0/3ZLFq0SFu2bNEzzzyT7t7vCQkJ6tatm44dO6Znn3021c0Vr3b06FGFhYWl2k7mWuXKlXP/7/SutJ48ebKSk5NVq1atDM/hbUFBQerXr5+6du2qxo0bu29impHAwEC9+OKL6t+/vyZMmODeWqVGjRravXu3OnbsqMcff1xHjx7VTz/95L5J6tUf7NyowMBADRgwQO3atdPbb7+tKVOmeO3cGYmJidHmzZu1bNkyNW3aVI8//rgcDoc2b96s0qVLq2PHjjd0/rp16ypXrlyaPXu2wsPDU71HpKhWrZruuecezZw5UwcOHFC5cuV06dIl9wL1jS7WZ0Xp0qV1xx13aOPGjerWrZuKFi2qLVu2aMeOHcqbN6/OnTuXZi/3vHnzaurUqfrjjz9UsmRJrV+/Xvv27VP16tVTvc727dtr9erVmjt3rn7//XdVq1ZN58+f15IlSxQZGakBAwZ43PeePXv06aefqn///qlukAwAAICcjSvKAQAwWYkSJfT111/rySef1B9//KEZM2bo559/VpUqVTR16tRUV1QHBwfrk08+0euvv67g4GDNmjVLv/zyi2rVqqW5c+eqUqVKqc49YMAAvf/++ypYsKDmz5+vDRs2qH79+vr666/TZLOjVq1amjVrlmrUqKG1a9dq9uzZCgwM1NChQ29oS4fQ0FB9+OGHqRbJU67I3bRpkxo3bqxVq1apXr16atiwoQoWLKiZM2fq2Wef1Y4dO9S3b19VrVpVjRs3Vvfu3d2LcA0bNlT16tX1wQcfaN26dRo3bpyefvpp9yL5P//8o44dO2rNmjV67bXXVLVqVXf9q69W3blzp2bNmuW+UerVDh48qLZt22rDhg16+OGH012oMwxDGzdu1O7du1Nd9Xw9SUlJkv53k8stW7Zo1qxZioyMdG8RczWXy5XpNiY3ok6dOmrdurX69OmjXbt2XTfftGlT3XnnnVq1apV7y59evXqpS5cuSkxM1IwZM/THH3/oueee0/Tp0xUYGKiVK1d6dU/xypUrq1GjRvr555+1bNkyr503I4GBgRozZowGDhyo0NBQffXVVzp48KCee+45zZw584YXXyMiItyLxnXr1k33fKGhoZoxY4a6d+/uvnHqokWLVLhwYb399tvq2rXrDfWQFaGhoZo6darq1q2rzZs3a9asWQoKCtLo0aPdf22xePHiVMcUL15cY8eOdfd84cIFdezY0X2F99Xn/uyzz9SnTx+5XC7Nnj1bv/76q+rVq6cFCxbo/vvv96jno0ePqnPnzqpevbqeffZZz188AAAA/E6AcbP+vygAAAAvWLFihbp16yZJuueeezR48GBVqVIlTW7fvn366quv9O233+r8+fN66qmnNHz4cElXFpjT22v89OnTmj59ur744gslJSVp8ODBat26tfv5Dh06aP369Ro0aJDCwsL0wQcfKDExUWvWrHHvhX7s2DFNmzZNX331lRITE9WgQYN0r9aPiYnRli1b3Avvffv21QsvvJCln8GUKVP0wQcfaOrUqbrzzjvVtm1bnT59Wl27dlXPnj3T5Js0aaIzZ87ol19+ydL5sysxMVEdO3bUn3/+qSVLlnh8Y0rASi5fvqymTZsqKChIM2fOzPL9DgAAAJAzsPUKAACwtJo1a+r+++9XlSpV1LNnzwy3iylVqpQGDx6sAQMG6Lfffku1rUlGN+T86aefNGXKFJUtW1bvvPNOqu1OJKldu3bau3evhg4dKunK1f+9e/dOtYCWnJysNWvWKDg4WK+//rqee+65dGu1a9dOf/31l6Kjo9W0aVM1btw4yz+DlP3oExISVKxYMQ0dOlSTJk1y3ywzvfzFixezfP7sCg0N1aeffqp169axSI4cIzg4WG+88YbKlSvHIjkAAIANcUU5AACwvMTExJt2w8q//vpLxYsXz/BGoFlx+PBhhYaGqlChQl7s7H9Onz6tU6dOqUiRIu5tNgzDuKGeAQAAAAD/w0I5AAAAAAAAAMDWuJknAAAAAAAAAMDWWCgHAAAAAAAAANgaC+UAAAAA4GcSEhKum2GXTQAAgKxjoRwAkKP88MMP+vrrrzN8fuHChfruu++ydK74+HglJiYqOTk5y/UvX76s+Ph4nT17NsvHwLqSkpJ06dIls9sAkAN89913OnfunPv7S5cuaejQoXrjjTeyfa6zZ8/qkUceUYcOHXTo0KF0My6XS0888YQ6d+6sf//91+O+AQAA7CLY7AYAAPCmTz75RIcOHVLLli3TfX7YsGHKmzevnnzyyeuea+DAgVq8eLFHfRQoUEBr16716FiYIzk5WSdPntT+/fu1e/du/f7771qzZo169uyp9u3bm90eAD92/Phx9evXT7fddptWrFihkJAQhYeHa8+ePdq6dav++9//qlSpUlk+3/jx4xUXFyeXy6XExETt27dP0pUP90JDQ1WyZEl9//332rdvn+6//37ddttt7mMNw9DFixcVHh6uwECumwIAAEjBQjkAwK+dOXNGBw4cUFhYmMLCwhQUFKSQkBD3osG1goOD3c8bhqGEhATly5dPd955Z5ps1apVlT9/fgUHBysoKCjVc8uXL9ehQ4fUunVr5c6d2/345cuXlZiYqPDwcO++UNwUJ0+eVJcuXXT69GmdOHFCSUlJ7ufCw8N15513au/evSZ2CCAnmDx5spKSktShQweFhIS4H+/Vq5fatWunoUOHatq0aVk61+bNmzVz5kxJ0oYNG9S4ceNUzzdo0EAjR47UmDFjJF35S6pvvvnG/bzL5ZIk/fjjjypatOiNvCwAAIAcJcBg4zoAgB9bsWKFevXq5V4kj4+Pl8vlUt68edPNx8XFKSAgQLlz55ZhGEpMTFSHDh3Us2fPbNXt1KmTfvrpJ0suNMTExGjjxo3avXu32a34hZdfflkul0t33HGHwsLCNGXKFPXt21f//e9/FRAQ4M5t3bpV27dvT/ccQUFBiomJueFekpKSNGnSJC1cuFDHjh1Trly5VL16dY0dO/aGzw1ca9++fXrmmWfUv39/tWjRIt1MXFycJkyYoKVLl+rUqVMqX768+vfvr+jo6DTZxMREffbZZ+7f31KlSunVV1/VI4884rWeBw8erF9++UUrV67MMLNu3TqNHz9eu3btUmRkpFq2bKkePXooODjtNUIOh0NjxozR9u3bFRAQoEaNGum1115Trly5vNbzgQMH9OSTT6pgwYJaunSpQkNDUz3fs2dPLVmyRP3799fzzz+f6bkOHz6sVq1a6fz585o8ebK2bt2qcePG6cMPP1RUVJQSExMVGRmpuXPnavLkyerUqZMqVqyoqVOn6o8//tD777+vpKQkJSQkqF69el59nQAAAP6OK8oBAH6tbt26cjgc7u9jYmK0f//+DLc9efLJJxUZGak5c+b4qkVY3EcffeT+3/v27dOUKVMUGRmZapFcurL4Nm7cuHTPERkZ6ZWF8jFjxmjKlCl66KGHVL9+fZ05c0a//fbbDZ8XuNbp06fVuXNnnT9/PsNMfHy8OnTooB07dqhChQpq0KCB1qxZo5iYGM2bNy/VViEul0svv/yyVq1apVKlSqldu3basmWLXnzxRU2dOlXVq1e/4Z6/+OILzZ49O92/AErx3Xff6bXXXlN4eLiefPJJJSYmasqUKTp58qTee++9VNmNGzeqY8eOcrlcaty4sSIiIrRw4UIdOHBAn3/+eZr3AE8kJydrwIABSkpKUp8+fdIskktXtvlav369Ro4cqdKlS+vRRx9N91w7duxQt27ddPr0afXs2VMPP/ywwsLCNG7cOO3bt8+9pdjatWs1depU3XffferVq5cCAwP1999/a+PGjcqbN6+qVKlyw68LAAAgJ2KhHACQ45w6dUply5bN8Pn777/fh9343ogRI3Tx4kWz28hxUrbTWb58uYoUKeJ+/Pnnn9eff/7plRrffvut7r777lSLdNm5mWx6Dh8+rDp16uipp57S8OHDvdGmLWzYsEHt27dX9+7d1aNHD7Pb8aq9e/eqa9eu+vvvvzPNTZgwQTt27NATTzyhkSNHKjAwUD169FDz5s31xhtvaNasWe7s7NmztWrVKlWuXFmff/65QkND5XK5FBMTowEDBmjp0qWpthzJjuTkZI0ZM0YTJ07MNHfq1CkNHjxYISEhmjFjhu677z5JUsWKFfXmm2+qcePG7kXohIQE9evXT4mJifr000/1+OOPS5Lq1aunjh07as6cOWrTpo1H/V5t6tSp2rJliypWrJjhvTEKFiyo4cOHq2vXrurRo4c++ugj1ahRI1XGMAx98sknOn78uJo3b64uXbpIku69914FBQVp8+bNkq78rFI+0BsyZIh7D/Lq1asrICBADoeDhXIAAIAMcPcWAECOkzt3bg0bNizdr8KFC5vd3k1XpEiRbN0Uzs4uXLigpKQkZbQTXWJioi5cuCCn0+netiEwMFDBwcHur4CAgDR72Hvq+PHjuv3221NdycrN9uBN+/fvV+vWrSVd2UIqI5cvX9bs2bMVEhKigQMHun8PIyMj9cILL2jbtm3av3+/O//VV19JkgYNGuS+ajooKEhdu3bVkSNHtH79eo97fvPNNzVx4kR16dIl06vJFy5cqPj4eLVt29a9SC5JTz/9tO644w59/fXX7sdWrlypI0eOqG7duu5FckmqUaOGKlasmCrrqZ07d2rs2LGKjIzUsGHDMr1CvXbt2ho0aJCcTqc6deqkyZMnp/qQLCAgQOPGjdOQIUPc52revLn69eunKVOm6LPPPpMkOZ1ODR06VEOGDFFkZKT27dunffv2KTg4WB9//LFq1qyZam4AAAD4H64oBwDkOCEhIRleNR4REXHd4+Pj4xUSEqKQkBCP//TeMAy5XC4lJCQoLCws3b1xYb6nnnoq3atq33rrLb311lvu71988UUVKFDAh50BN8epU6fci7KZ7fMdGxuruLg4Pfzww7r11ltTPZey5/jatWtVsmRJnT59Wn/++aeKFSumcuXKpcpWrVpVISEhWrdunWrWrOlRz/Hx8fr4449Vt25dLVq0KMPcpk2bJEn169dP9XhwcLCqV6+uVatWXTeb8vo+/vhjXbhwIdXNmrPj6NGj6tSpkxITEzV06FCVKFHiuse0a9dOERERGjRokEaOHKkff/xRAwcOdO8HHxQUpGeeecadP3z4sHLlyqWHH37Y/djq1avVp0+fTOtERkZq27ZtHr0uAACAnIz/rx0AkOOcOXNGjRs3zvD562290qZNG+3duzdLterUqXPdzJdffqlq1apl6XzX2rp1qyZMmKBt27YpMDBQJUqUUExMjJ588skMF/GzcjPP2rVrS7pyVeX+/fv12Wefad26dWrYsKFef/31VNmzZ8/q448/1vLly3X69GkVKVJENWvWVNeuXZUvX75sv6b58+erf//+GjBggHbs2KEVK1aoRIkS+uijj/TFF19o/vz5KlCggIYNG6bKlSurV69e+uGHH/TDDz+oZMmSqc7Vr18/LViwQAsWLNC9996b7V66deumpKQk9xXhCxYs0MaNG9W8eXNVq1ZNLpdLSUlJuueee1Lthe9N124TtHHjxlSPXf37k/J607uJ7NUzTdlu5WopP6cUV58jZSbDhg1Lc1PH9Gpeuy3J4sWLNWvWLO3evVvTpk1Ls1i6c+dOTZgwQZs2bVJ8fLxKlCih9u3bq1WrVtn+eWX0mq/3e3zhwgVNmjRJS5Ys0dGjR5UvXz7Vrl1bvXv3Vv78+VO9rquNHz9e48ePd39/9b+rcePGafz48en+G0/v3+HVP+fmzZtrzpw5WrBggfbt26dVq1bplltuSdVH9+7d1bp1a40YMUJr165VcnKyKlasqEGDBumuu+7y6GdWqVIlVa1a9bq5EydOSFK6/66KFi2qkJAQ94dMmWVDQ0NVpEiRVB9IjR8/XuPGjVOHDh3Ur18/9+OjR4/Wp59+qs6dO6t3797uxz/44IMs/dXGiRMnFBAQkG4fxYoV09mzZxUXF6dbbrnF3fPVV55fnTUMQ4cOHVJUVNR1617r0KFD+s9//qMTJ06oTZs2WrZsmX7++WcFBwdn6S9E3nvvPQ0fPlzbtm3TK6+8om+++ca99dPVgoOD0/xcUj4Mnjx5crofTMTExGT5/74BAADYDQvlAIAcp0CBAhnezDNlYS0zdevWVdWqVdNdhEixfPlyHTp0SK1bt073isPk5GS5XC5dvHjR4yuRFy1apH79+ikkJEQNGjRQnjx59OOPP+rVV1+Vw+FQ//79PTrv1X7++We9/PLLkqQyZcqk2ZrmxIkTevbZZ3Xo0CFVrlxZDRo0cC+Grly5UvPnz1eePHk8qj1mzBg9+OCDeuCBB7R+/Xo9/fTTKliwoBo2bKj58+dr9OjR+uqrr9SsWTP98MMPWrx4sbp37+4+PjExUStWrNA999zj0SK5JDVv3tz9vy9fvqyxY8dKkh544AE1aNBAISEh7m0kbtZCeefOnd3/+9NPP1WRIkXUtGlT92NX74eeVXny5HGf98KFC5oxY4bKli2rWrVqpcp4w8CBAzV37lwVLVpUxYoVS7Ogt3r1anXv3l2RkZGqV6+ewsPD9dNPP2ngwIH6559/vLL/9/V+j+Pi4vTss89q7969qlGjhurUqaM9e/Zo9uzZ2rJli+bNm6eIiAgVKVLE/XM7evSoFi1apMqVK6ty5co33OPVLl++rJdeekk///yzSpYsqZIlS6a7gHry5En3e0zz5s21detWrV69WsePH9eCBQs82pYnq9sEXbhwQZIyfP+65ZZbdPz48Sxl8+TJ485KV37nV65cqenTp6tFixa655579Ndff+mzzz7TPffco27dunncc2RkZLp/OZTy+/7PP//olltucfd82223pcnmzZtX0pWtkDxZKP/hhx/c27q8/vrrevDBB7N1fN++fVW9enX1799fffv2df+b+uabb/TBBx8oNDRUgYGBOn/+vH7//XfVqlVLiYmJiomJcb8Xnj9/XidPnkxz7qs/GAQAAEBqLJQDAPzW33//rXPnzrm3SZGkixcvyuVyad++fekek5SUpISEhFTPJyUlyeVyua8s7NWr13Vr79+/X4cOHVKnTp3SXNnrDSdOnNCgQYMUFhamefPmufccf/nll9WoUSN9+eWX6tixowoWLOhxjbi4OL3yyitq166dunTpoly5cqXJDBkyRIcOHVLPnj3VtWtX9+ODBw/W7NmzNXv2bL344ose1a9QoYI+++wz7dq1S82aNZMkzZw50/2BwLFjxyRd2TP41ltvTbNQvmbNGsXFxaVaaL4R8+bN0z///CPpyvYUzzzzjO67776bfgPMq6+c/fTTT1W0aNFUj3kiT5487nMcPnxYM2bM0L333nvD573WN998o7i4OE2ZMiXNzQelK/8e+/Xrp1y5cmnBggW64447JF35N/bkk09q0qRJiomJ8egvE1Jk5fd49OjR2rNnj9566y21bdvW/fi7776rL7/8UvPnz1e7du101113uX9GGzZs0KJFi1S9enWv38xz0qRJMgxDc+fOVYUKFTLMzZkzR/Xq1dOoUaMUEhIil8ulli1bKjY2VgcOHEjzFxbelLKYmt6VzNKVK8UvXbqU5ey5c+fc3wcHB2v48OFq0aKFhg4dqunTp+vtt9+WYRgaMWKE+8Op7AoMDMxwe62Uc6bc6Dil5/Ty12az66WXXlK5cuVUvXp1hYaGauPGjYqIiFBwcLDq1Kkjp9OpDRs2pDnuySef1MGDB91b3UydOjXV81WqVNG7776r0NBQff/995o7d66ioqI0YMAAXb58WYULF3Zfuf/KK69k2B/bSAEAAKSPhXIAgN+aOHGi5s2bl+5zmW29cuLEiTTPZ3YVuhmWLFmiS5cu6aWXXkp1Y848efJo9OjROnnypPvDAU+dP39ezZo106uvvpru8+fOndPKlStVuHDhNDf969y5s6pVq6ZixYp5XD9la5CUK/KrVKnivurz6qv0g4OD9cQTT2j69OnatWuXe1uPxYsXKzAwUE2aNPG4hxRxcXH66KOPFBERoYsXL+rWW29VgQIFtGDBApUpU0YvvPDCDdfIiQ4dOqQvvvhCDz30ULrPr127VqdPn1ZUVJRmzZqV6rlbbrlFx44d09atW7P0lx4Zud7vcXJysr777jsFBwfr2LFjGj16tPu5M2fOSJJ+/fVXtWvXzuMesuv48eNauHDhdW+6mytXLg0ZMsT9bz0oKEgPP/ywYmNjderUqZu6UB4ZGSnpyl9upCcpKUlJSUnZzqa455571L17d40ePVq9e/fW2rVr1a1bN4//OkS68vM6ffp0hj1c/d+rew4LC0uVTXkd1/acHVdve5JyhXpiYqL++eefDD8cOXnyZKY3nC5SpIj7L0yGDRsm6cq/o9jYWJUrV07Fixd3L5R/9NFH6f677NSpU7r3ZQAAAAAL5QAAP9avXz+99tprCg8PV1hYmJKSktSzZ0+tXr1akydP1iOPPKJFixYpLi5Obdu2lWEY6ty5s3777Tf3IkLKHtSeXjl4s+zfv19S2v2rJWVpf+GsCA0NzXBxUZIOHjyo5ORklSlTJs2f6l+9YOOpa7esyeymec2bN9f06dO1ePFilStXThcvXtSqVav00EMPZbqwlFVDhgzRv//+q169emnMmDEKDAzUqFGj1LRpU40ePdp980Irc7lcN2VLBZfLleFztWvXznCRXJL++usvSVduDBkbG5tu5uotOTxxvd/jM2fOuK9mnjhx4k3pIT2Z/dzatGlz3UVy6cpNJa+9kWbKFdCGYdxYg9dx++23S7ryYci1Ll++rLNnz7o/2MosK0n//vtvmtchXblJ7vLly/XDDz+obNmy6tKlyw31XLhwYf3xxx86d+6ce3H66h6k/y1ap7xvHDp0KM3i/LVZb/njjz+UnJyc7vt6YmKizp49q9KlS1/3PGvXrtXu3bsVEBCgkydPasKECUpKStJXX33lzkRERKS7vRI3lgYAAMhY9jc2BADAIm655Rbly5dP4eHh2rFjh5555hmtXr1aQ4YMcS9sfvbZZ+6Fz6CgII0ePVqlSpVSx44dNWrUKCUmJio8PNx9Mz9/cPnyZcXHx9/Q1Y6SVLBgQRUqVMjj4+Pj4332AUN0dLRKly6txYsXS5JWrVolp9OZai9vTy1evFjffvut6tWrp/r167sfz58/v/r376+kpCStWLHihuvcTImJienuR+wNR44cyfC56139m7KYO2DAAO3evTvdr6u3QvHE9X6PU3qIiorKsIc5c+bcUA/puZGfW4rixYt7qZvsK1WqlMLCwrRjx440z+3YsUMul8u99VPevHl15513yuFwpFnAP3HihI4cOZLuNlHx8fHuRenTp0+79w33VMrPdfv27Wme++233yT9b9uRrGRvZGur9KxevVrSlb+euVbKv9/rvSe7XC69//77uvfee3XbbbepYMGCmjx5si5fvqwuXbooLi5O0pUPIcqWLZvma+PGjV59TQAAADkJC+UAAL916dIlrVixQi+88IJat26tw4cP65lnntGtt96qtWvXat26dUpISFBQUJDWrVundevWaePGjYqJiVGdOnU0ceJEPfbYY3rnnXe0evXqDLcNMEPKlgq7d+9O89ynn36qBx98MNXVgzdDsWLFFBgYqL1796a5Ovbo0aN68MEH1aZNm5vaw9WaNWumQ4cOafv27Vq8eLEiIyNTLWx7Yvv27XrjjTdUsGBBDR06NM3zjRs31ueff55qb/QVK1bom2++cX+dOnXqhnrIjoCAAElpr1betGlThlcwZ+WGjxmd9+zZs9q1a5cnrUr63+9xevcM2Llzp2bMmJHuQqw33XrrrcqbN68OHjyY5t/4pUuXNGPGDH3zzTdpjruRn9tff/3llavUb3R7pRsRFhamGjVq6LfffktzI9sFCxZIkh5++GH3Y3Xr1tWJEye0fPny62ZTDBkyRMeOHVPHjh118uRJvfnmmzfUc7169SQpzXvjkSNHtGHDBt13333u/fAfe+wxhYSEaNasWUpOTnZnL1y4oGXLlunWW29N98pvT128eFFz585VRESEHn/88TTPpyyUX+8vZCZMmKBdu3alujfEfffdpwEDBigmJsb9lznvvPOOFi9enOarfPnyXntNAAAAOQ0L5QAAv/Xf//5X3bp109q1a9W0aVP98MMP+vnnn9W1a1f997//VYcOHfTXX3/pzJkz6tChgzp06KAuXbrovffe00cffaT3339fgYGBmj59+k2/YWN2NWzYUGFhYZoxY0aqRcZLly5pyZIlkqRq1ard1B7y5s2rWrVq6fjx42m2rJg/f75Perha06ZNFRgYqJkzZ2rNmjWqX7++e59hT/z111966aWXlJCQoA8//DDdrSGktAt8w4YNU9++fd1fKdvk+EJKj3v37nU/lpiYqJEjR2Z4TKFChRQSEpJmW4zLly+nOe+ePXtSZcaMGaP4+HiP+03ZOuS7775LdW6Xy6WhQ4fq7bff1tmzZz0+f1YEBgbqiSeekNPp1KRJk1I9N3/+fL399tvuK32vduedd0pKu53I9X5uhmFo+PDhN31rFF944YUXFBgYqD59+ujPP/9034D066+/1h133KFHH33UnY2JiVFERITefPNNbdmyRZK0cuVKTZw4Ublz51bDhg1Tnfv777/Xd999p2bNmum1115Tq1attHTpUvfCuifKlSunGjVqaNWqVRo3bpySkpJ0/PhxvfLKK0pKSlLLli3d2dtuu819Y9Q333xTTqdT58+fV9++fXXmzBk99dRTXt3K6MMPP9SpU6fUokUL3XLLLWmeT/nALbOF8tWrV+uTTz7RAw88oEaNGqV6rlWrVnr++efdH94ULlxYpUqVSvOV0c1OAQAAwB7lAAA/1qdPHy1atEjPP/+8+8rViRMnKiQkRMHBwQoICFCXLl10+vRpzZ49Wy6XS+fOnZPT6ZR05QrlunXr6quvvtIdd9yh0NBQM19OKoUKFdLQoUM1YMAAtWzZUvXr11fu3Ln1008/6ciRI4qJiVFUVNRN7+PNN9/Url27NHbsWK1bt0733Xef9uzZo3Xr1umuu+664T2Fs+P2229X1apV3QtpzZo1u6HzFSpUSJUrV1blypWztOCfctXw8uXLU+3P/vzzz+vPP/+8oV6yqn79+vrss880fPhwhYSEKDQ0VB9//LGCgoLcW0pcKzg4WE2aNNH8+fPVrVs3lShRQsePH9exY8c0Y8YMSVKlSpVUoEABzZkzR2XKlNE999yj+fPna+nSpapYsaK2bdvmUb8RERF677331KNHD7Vs2VJ169ZVoUKF9Ouvv2rXrl1q0KCBatSo4fHPI6t69+6tjRs3aty4cfr55591//33659//tGKFSt02223qXfv3mmOKVKkiKpXr65vv/1WhmGoUKFCOnTokIKDgzVq1ChJV65KDg8P16effqpChQqpUKFC+uKLL7Rv3z6VLl3aZ78XN8uDDz6ofv36acSIEXriiSfcN7uNjIzUyJEjU71n3nXXXRo2bJj69eunZ5991p0NCQnR+++/n2obk3/++UdDhgxRgQIFNGDAAEnS66+/rjVr1uidd95RlSpVVLRoUY96Hj58uJ5//nmNHz9ekyZNksvlksvlUp06dfTss8+myvbr10/79+/XnDlztGDBAhmGocuXL6tChQrq2bOnR/XTM3v2bE2fPl2FCxfO8LwpW/VktFBuGIZGjRqlkJAQvfPOOwoICEj3w5isfEBz9RX0AAAA+B8WygEAfitlkfNqKQvmKUJCQhQUFOS+2VzKVaIpcuXKpZdeeilL9fbs2ePeGzzlCtKsbM/gqebNm6to0aL65JNPtGLFCl2+fFmlS5dW165d9fTTT9+0ulcrXLiw5s2bpwkTJmjZsmXatm2bChQooOeee07du3f3+d7uzZs316+//qrChQurevXqN3SuXLlyacyYMalubpfZIlPKfuyBgYGpjgkICFBCQsIN9ZJV999/v0aOHKkJEyaoR48euvXWW9WoUSP16NFDTz75ZIbHDRo0SPny5dPSpUu1atUq5cmTJ1U+d+7cmjRpkt59910NGzZMoaGheuihhzRv3jx9/PHHHi+US1KtWrU0a9YsTZgwQWvXrlViYqJKlCihoUOH+uz3OE+ePJo9e7Y+/fRTLVmyRDNnzlShQoXUqlUrdevWLcN9oUePHq1Ro0Zp9erV+vfff3XbbbcpJibG/fydd96pCRMmaOTIkerfv79y586tWrVqac6cOV5daDXTf/7zH1WqVElffvmlDh06pNKlS6tz585p3kslqVGjRrr33nv12Wef6c8//1SRIkXce2WnMAxD/fr107lz5/TRRx+5t0K55ZZbNGTIEHXu3Fl9+/bVjBkzPHp/LVCggObPn6/p06drzZo1Cg4OVuPGjdWiRQv31dYpIiIiNG3aNM2bN09Lly7V5cuXVatWLT333HNeuellYmKixo4dqylTpuiWW27RxIkT071B6JkzZ/Ttt99KUoYfEAQEBGjMmDHavn27ypQpI0nuDwGulvL91VuzXCvlZw4AAIDUAoyc8HehAADbSkxM1Pjx4xUWFua+ivxqM2fOVHx8fJpFg+TkZLlcLiUmJurpp5/WXXfddd1ay5YtU48ePdzfh4aGatOmTQoPD/fOi4HpHA6HWrZsqUGDBum5555L9dzff/+tw4cP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jB07tqz8+PHjy65hoxwAAAAAyIRSKZd0C6RUuzfKn3rqqejWrVt88YtfrEY/AAAAAADQopI3xMvVrjPKX3jhhTj11FPjhBNOiDfffLNaPQEAAAAAsJK99957MXLkyOjXr18ccsgh8dJLL5W1/le/+lWMGDGi1eezZs2KESNGRL9+/eLII4+M2bNnV6vllabijfIZM2bEmDFj4oorrohx48bF97///Xjvvfeq2RsAAAAAACtBqVSKUaNGxfvvvx+33nprjBgxIkaOHBkff/zxCq2/6aabYsKECa0+X7BgQRx99NHRrVu3uOuuu2K33XaLUaNGxeLFi6t9C1VV0Ub5rFmz4vjjj4+LLroott1229hjjz1i1KhRcfTRR8fcuXOr3SMAAAAAQPuVVsF/KvT000/HM888E+eff35sueWWcfDBB8cWW2wRDz744OeuvfPOO+MPf/hDHHrooa2+u+++++K9996L888/P3r27BnHHntszJ8/P55++unKm62BsjfK33rrrTj22GPjnHPOiR133LHl86997WvxjW98I773ve/F/Pnzq9okAAAAAADVM3369Nh4441jq622avmsX79+8dxzz33u2h133DF+85vfxHrrrbfM6/bp0ycaGxtbPuvbt+8KXTdJuVKptML/3eGdd96Jb3/72zFmzJjYZ599lpm58sorY9q0aXHttdfG6quvXrVGqyWfzyfdAgAAAABURXNzc9It1JUtblr5PwpZa73+a/lvgE+ZMmWZn1999dXxxBNPxA033NDy2eTJk+Pxxx+Pq666aoVq/+xnP4snn3wyJk+e3PLZGWecEaVSKS688MKWzy666KJYvHhxnH766St03SSstqLBjz/+OI4++ug45phj2twkj4gYNWpUnHfeeXHSSSfFFVdcUZUmq23pB0ixWIxCoRBNTU3R0NDQKp/P58t66Mgnm29rzfLmnLZ7kK9sjRmnN1+tGmZcu3xSPZlx5fk09mTGydcw42TzaezJjJOvUQ/5eppxGnuqh3ySM65FjazloVKrrbZadO7ceYnP1lhjjSgWi+26bseOHaNjx46trpv237dc4Y3yrl27xrnnnhv9+vX73OyZZ54ZU6dObVdjAAAAAADVVCrlkm6h6tp6Y/zzNDY2ttq8njdvXnTq1Kld/TQ2NsbMmTOrft2Vrawzype1SX7nnXfGRx991OrzAQMGVN4VAAAAAAArTd++feOVV15ZYm/3hRdeiI022qhd1+3Xr18888wzsWjRoqped2Ur+8c8/92iRYti7NixMXv27Gr1AwAAAADASrb11ltHr169YtKkSbF48eJ48cUX4/77749BgwbF4sWL46OPPlpis3tF7bbbbrFw4cK4/vrrIyLi4Ycfjueffz4GDRpU7VuoqnZtlEdElPFboAAAAAAApMT48eNjypQpseuuu8Y3vvGNOOCAA2LPPfeM2bNnx4ABA+Lll18u+5qrr756TJw4MX75y1/GrrvuGscff3wcf/zxseWWW66EO6ieFT6jHAAAAACgrnnndwnbbLNN3HfffTF16tRobGyM7bbbLiIiNt1005gxY8bnrj/hhBOW+fnuu+8eDzzwQEybNi169uwZW2+9dVX7XhlslAMAAAAAZFRDQ0PstddeVb/u2muvHYMHD676df/ls88+i8WLF0fnzp3j448/jr/85S+x6aabRu/evSu6XruPXgEAAAAAgFp58sknY7fddovHH388Pv744zjwwANj1KhRcfDBB8ftt99e0TXbvVGey+XaewkAAAAAAFghF110Ueyzzz7Rv3//uO+++2LBggVx3333xYgRI+Laa6+t6Jp+zBMAAAAAgLoxc+bMOOCAA2LNNdeMZ555Jvbdd9/YbLPNYsiQIfH2229XdM1cKWM73fl8PukWAAAAAKAqmpubk26hrmx+44SkW6i6WUeemnQLNTdo0KA46qij4hvf+EZ87Wtfi5NPPjmGDBkS9957b0ycODGmTJlS9jUz+WOeSz9AisViFAqFaGpqioaGhlb5fD5f1kNHPtl8W2uWN+e03YN8ZWvMOL35atUw49rlk+rJjCvPp7EnM06+hhknm09jT2acfI16yNfTjNPYUz3kk5xxLWpkLQ9ZdNhhh8WFF14Yl1xySXTv3j322GOPmDJlSkyYMCEOOOCAiq6ZyY1yAAAAAADq0zHHHBO9evWKN998M/bdd99Yc8014/3334/DDjssvv/971d0TRvlAAAAAADUlb333nuJPx966KHtul67f8wTAAAAAKAulFbBfzLo1Vdfrfo1bZQDAAAAAFA39t9//xg2bFhcc8018be//a0q17RRDgAAAABA3fjjH/8YBx54YPzpT3+KIUOGxCGHHBLXX399zJ49u+JrOqMcAAAAAIC6sdVWW8VWW20V3/ve9+LDDz+MRx99NB5++OH45S9/GVtssUX85je/KfuaNsoBAAAAgGzI6Jneq7Lu3bvHNttsE3PmzIk333wzXn755YquU/FG+bvvvhuvv/56/N///V988skn0aVLl1h//fWjubk5OnRwogsAAAAAANW3cOHCmDp1ajz88MPxyCOPxDvvvBN77bVXHH300bHXXntVdM1cqVQq67+j3HvvvXHVVVfFq6++GmuttVY0NDRELpeLDz/8MObPnx/du3eP448/Po488siKGlrZ8vl80i0AAAAAQFU0Nzcn3UJd2fxXE5JuoepmHXVq0i3U3A477BALFy6M3XffPYYOHRqDBg2KhoaGdl2zrDfKJ0+eHFdffXWcfPLJsffee0f37t2X+P6vf/1r3HDDDTF+/PhYc80145BDDmlXcyvL0g+QYrEYhUIhmpqalvn/0Hw+X9ZDRz7ZfFtrljfntN2DfGVrzDi9+WrVMOPa5ZPqyYwrz6exJzNOvoYZJ5tPY09mnHyNesjX04zT2FM95JOccS1qZC0PWXTmmWfG3nvvHWuttVbVrlnWRvl1110X5513Xuy9997L/H7LLbeMc889N/7+97/H7373u9RulAMAAAAAGVTKJd0BVXDwwQdX/ZplHSa+aNGimDNnzufmPvnkk+jWrVvFTQEAAAAAQK2U9Ub517/+9bj44otjwYIFsf/++8f666+/xPeFQiGuvfbaePrpp+PXv/51VRsFAAAAAICVoayN8tGjR0cul4vLL788LrnkkujevXt069YtOnToEHPmzIn58+fHNttsE9dff31sv/32K6tnAAAAAAComrI2ynO5XIwePTqOPvroePrpp2POnDmxYMGC6NSpU6yzzjrRu3fv2HTTTVdWrwAAAAAAFSuVku6AtFrhjfI33ngjevToERERa665Zuy5555lrQEAAAAAgDRaoR/zfPXVV+Ob3/xmPPDAAyt84cmTJ8eIESPio48+qrg5AAAAAABY2VZoo3yrrbaK66+/Pi666KI49dRT4913320z+8Ybb8Rxxx0Xt912W9x8883RrVu3qjULAAAAAADVtsJHrzQ1NcU999wTV199dQwdOjS23Xbb6NevX6y33npRKpXinXfeiSeeeCJef/31OProo+Ooo46K1VYr6wh0AAAAAICVxxnltCFXKpV/hP2nn34ajz32WMyYMSPefffd6NChQ6y33nqx7bbbxs4775zqDfJ8Pp90CwAAAABQFc3NzUm3UFc2u/7ipFuouteP/nHSLSTiww8/jIceeihmzZoVw4cPj2nTpsXGG28c2223XUXXq2hHu1OnTjFo0KAYNGhQRUWTtvQDpFgsRqFQiKampmhoaGiVz+fzZT105JPNt7VmeXNO2z3IV7bGjNObr1YNM65dPqmezLjyfBp7MuPka5hxsvk09mTGydeoh3w9zTiNPdVDPskZ16JG1vKQRYVCIY466qiYN29eLF68OIYMGRJTp06N3/3ud3H11VfHnnvuWfY1V+iMcgAAAAAASIPzzjsvBgwYEH/+85/jXwemnHnmmXHEEUfEZZddVtE1bZQDAAAAANlQyq16/2TQv94o7969+xKff/WrX42ZM2dWdE0b5QAAAAAA1I311lsvCoVCq8+fe+65WH/99Su6Znp/dRMAAAAAAJZy1FFHxfjx4+ONN96IXC4X//u//xt33XVX3HzzzfHjH1f246Y2ygEAAAAAqBuHH354dOnSJa688soolUoxadKk2HjjjeOss86K//iP/6jomjbKAQAAAACoKwcffHAcfPDB8fHHH0epVIo111yzXdezUQ4AAAAAZEKulHQHVFvXrl2rch0/5gkAAAAAQN34wx/+EK+99lpVr2mjHAAAAACAunHppZfGn/70p6peM1cqlTL1Fw7y+XzSLQAAAABAVTQ3NyfdQl3Z/JeXJN1C1c36/ilJt1BzEydOjOeeey4mT55ctWtm8ozypR8gxWIxCoVCNDU1RUNDQ6t8Pp8v66Ejn2y+rTXLm3Pa7kG+sjVmnN58tWqYce3ySfVkxpXn09iTGSdfw4yTzaexJzNOvkY95OtpxmnsqR7ySc64FjWylqdMmXpleNX1wx/+MH74wx/G6NGj4/TTT48NNtig3ddcqRvln376aXTq1GlllgAAAAAAIEP222+/iIiYPXt2PPzww7Heeust8f2UKVPKvmbZG+XvvfdefPnLX45nn302Vlut7eULFy6M4cOHx5gxY2KXXXYpuzEAAAAAAFjaCSecUPVrlr1R3rlz51i4cGEMGzYsvvCFL8Smm24aW221VfTv3z+am5tj9dVXj4iICy+8MGbMmBHrrrtu1ZsGAAAAACCbDj744Kpfs+KjV0aNGhXvvvtuvPPOO/HUU0/FddddF6VSKQ455JD47LPP4ve//31ccsklsfXWW1ezXwAAAACAypRySXdAlX3wwQdRKpWisbGxXddZoY3yUqkUM2fOjC233DIiInK5XHzta19bIrN48eK49NJL45e//GXkcrk4++yzY8iQIe1qDgAAAAAAlnb33XfH5ZdfHm+99VZERGyyySYxevToGDZsWEXXW6GN8ieeeCKOOuqo2GqrrWLAgAER8c8f6vzkk09i+vTpMXXq1HjggQfi7bffju985zuxePHi+PnPfx5f+cpXqvKLowAAAAAAEBFx1113xdixY+OAAw5oOa/88ccfj9NOOy0ioqLN8hXaKO/Tp0/86le/ihdffDH+/Oc/R+fOnWPHHXeMzz77LNZZZ53Yc88945hjjomvfOUr0bVr14iIeOedd+JHP/pR/OY3vym7KQAAAAAAWJarr746jj322Bg9enTLZwceeGBsuOGGceWVV668jfKuXbtGc3Nz7LzzzrHDDjvESy+9FA0NDXH77bfH1KlTY7311ov999+/Jb9gwYI4+eST49BDD41bbrklDj300LIbAwAAAACoqlLSDVANb7/9dgwcOLDV5wMHDozrr7++omvmSqXS5/7rUSwW48tf/nIMHTo0unfvHq+++mpcddVVccEFF8Qmm2wSjY2Ncd1118XQoUPjiCOOiNtvvz0effTRGDx4cGy++eax6667VtTcypDP55NuAQAAAACqorm5OekW6srmP5+YdAtVN+u4k5NuoeYOO+yw2GCDDWLSpEnRsWPHiPjnb2iOGTMm5syZE7/97W/LvuYKbZRHRLz++uvxq1/9KtZYY4146623YqONNoqpU6fGNddcExERgwcPjn79+sX06dOjc+fOMW7cuBg6dGjZDa1s+Xy+1QOkWCxGoVCIpqamaGhoWKE15daQr12+rTXLm3Pa7kG+sjVmnN58tWqYce3ySfVkxpXn09iTGSdfw4yTzaexJzNOvkY95OtpxmnsqR7ySc64FjWylqc8NspXDc8991wcddRRsd5660X//v0jIuLpp5+Od955J2644YbYbrvtyr5mhxUJvfTSS/H4449Hnz594v/+7//i7bffjjXWWCMOOOCA+Nvf/hYREZ06dYrJkyfHOeecE++//3688MILZTcDAAAAAADLs/3228ctt9wS/fr1ixdeeCGef/756NevX9x6660VbZJHrOAZ5fl8Pm644YZYbbXVYu7cufH3v/893n333WhsbIyXXnopXn/99ZbsokWLYqeddop77703dt5559hrr70qagwAAAAAoKqcUb7K2GqrrWLChAlVu94KbZR//etfj69//esxderU+Otf/xqXXnppfPLJJ3H++edHQ0NDXHrppfHss8/GN77xjejcuXMccMABsc4668T48eNjzz33jFwuV7WGAQAAAADItg8//DDefvvt6N27d7z11lvx//7f/4t999031l133Yqut0JHryxevDjOPPPMOPHEE+Mf//hH7LDDDnHyySfHMcccE2ussUaccsopLRvkr7/+euy2224xePDgyOVy8eCDD1bUGAAAAAAALO3FF1+M/fbbr+X3M99///2YMGFC7L///vHSSy9VdM0V2igvlUrRtWvXuOuuu6Jr166xYMGC+PrXvx577713nHvuufHpp5/GZ599FsOHD48HHnggNt5444iIGDJkSLzyyisVNQYAAAAAAEu76KKLon///nHmmWdGRESfPn1i6tSpsdNOO1V8HMsKHb3SsWPHOO200yIi4tBDD40DDjggIiJOOumkePPNN2PDDTeMq666KiIiOnfu3LLu29/+dnTv3r2ixgAAAAAAqsoZ5auEF198MX7xi18sccxK586d4/DDD4+RI0dWdM0VeqP833Xt2jXWWWediIjo1q1bbLPNNtG1a9f48pe/3CprkxwAAAAAgGrq1q1bvPzyy60+f/nll2PNNdes6Jor9Eb5v3z22Wfx+9//Pg488MDlFvz0009jyJAhcc0118QXv/jFihoDAAAAAIClfetb34qJEyfGvHnzYocddoiIiKeeeiquvfbaOO644yq6Zlkb5R06dIjzzz8/9t577+VulHfq1Cneeuut6NixY0VNAQAAAADAshx77LExb968uOqqq+Kzzz6LUqkUq6++ehx55JFx7LHHVnTNXKlUKutknt69e8ef/vSnuOeee+KFF16IQYMGxc477xyNjY2tcvfee29sscUWFTW2suTz+aRbAAAAAICqaG5uTrqFurL5VT9NuoWqm3X8SUm3kJhisRivvvpqRERsueWW0bVr14qvVdYb5RERuVwuIiLefPPNuO++++Luu++ODh06xFZbbRUDBw6MAQMGtLzunlZLP0CKxWIUCoVoamqKhoaGVvl8Pl/WQ0c+2Xxba5Y357Tdg3xla8w4vflq1TDj2uWT6smMK8+nsSczTr6GGSebT2NPZpx8jXrI19OM09hTPeSTnHEtamQtD1nW0NAQ2223XVWutcIb5R988EHMnTu35c+nn356nHrqqTFr1qyYPn16TJ8+PZ599tn4/e9/H5999lnLhjoAAAAAAFTLRx99FJMmTYqDDjoo+vbtGxMmTIhbb701evToERMnToxevXqVfc0OnxdYvHhx/OpXv4p99903Lr/88iW+69ixY2y55ZYxbNiwOPXUU+M3v/lNPPXUU/Gf//mfZTcCAAAAAACf5yc/+Uk88cQTsdZaa8UTTzwRN954Yxx++OEREXHBBRdUdM3P3Sjv0KFD/Pd//3ccdNBBceqpp0ZbR5rPmjUrfvvb38aZZ54ZO+64Y5s5AAAAAIAk5Eqr3j9Z9Oijj8bJJ58cW265ZTz22GMxePDgGDNmTJx44onx7LPPVnTNFTp65eabb47VVmsdfeqpp2LKlCnxwAMPxFtvvRWdO3eOfv36xd///veKmgEAAAAAgOXJ5XLRuXPniIh49tlnY7/99ouIiNVWWy1WX331iq65Qhvl/9okX7x4ceRyuVi0aFE8+eSTceSRR0avXr1i6NChsddee8V2221XcSMAAAAAAPB5Bg4cGOeee25st9128fTTT8e5554b7777bvzmN7+Jvn37VnTNFf4xz4iI+fPnR6lUigULFsSAAQPizjvvjN69e7fK/evYlUWLFlXUFAAAAAAALMtZZ50VZ599drzyyisxbty42GKLLeLCCy+Ml156Ka655pqKrrlCG+UvvPBCbLrpptHY2BhTp06NNddcM3K53DI3ySMiPvvssxg2bFjL6+8AAAAAAFAN6623Xlx99dVLfHbiiSfG6aefXvE1V2ij/Oyzz46ZM2fGV7/61dhvv/2isbHxc9d861vfijlz5sQbb7wRu+66a8UNAgAAAABURUZ//LKezZs3L9Zcc83Pza2xxhplr/l3udK/zklpQ6lUij/96U/x8MMPx/333x/vvvtu5HK5Jb5fboFcLgqFQllNrUz5fD7pFgAAAACgKpqbm5Nuoa5s8bOfJt1C1b12wklJt7DSvPLKK/Hd7343rrzyyth+++1XaM2DDz4Y5513Xtx9993RrVu3Fa71uRvl/27hwoVx//33x4033hjPPfdcHHDAATFmzJjYcMMNW2UXLVoUCxcujLlz58a66667wg2tbPl8vtUDpFgsRqFQiKampmhoaFihNeXWkK9dvq01y5tz2u5BvrI1ZpzefLVqmHHt8kn1ZMaV59PYkxknX8OMk82nsSczTr5GPeTracZp7Kke8knOuBY1spanPDbK68+jjz4ap556anzrW9+KY489Njp16rTM3Lx58+LSSy+Nhx56KK666qrYZpttyqpT1o95rrbaajF06NAYOnRoPPLII3HhhRfG/vvvHzfffHN88YtfXCLbsWPH6Nixo3PKAQAAAACoyB577BF33HFHXHzxxbHnnnvG4MGDo1+/frHeeutFqVSKd955J5544ol47LHHYujQoXHXXXeV9Sb5v5S1Uf7v9tprr9hpp53ipZdearVJDgAAAAAA1bDBBhvET3/605gzZ07cf//98eyzz7YcEb7++uvHwIED44wzzoh11lmn4hoVb5RHRPzjH/+Ivn37tucSAAAAAADwuTbYYIMYMWLESrl2h0oXLl68OH74wx/Gj370oyq2AwAAAAAAtVXxRvk111wTL774Yuyzzz7V7AcAAAAAAGqqoqNX7r333rjqqqvi0EMPjVwuF88++2xsuOGGsf7660eHDhXvvQMAAAAArDS5UtIdkFZlb5RPnjw5LrroojjwwAPjqKOOiq997WuRy+UiIqJDhw6x3nrrxYYbbhh9+/aNUaNGxZprrln1pgEAAAAAoFpWeKN81qxZcd5558Vf/vKX+P73vx9jxoyJmTNnRkTEww8/HH//+9/jnXfeiTlz5sRrr70Wv/vd7+LTTz+Ns846a6U1DwAAAAAA7bVCG+W33357jBs3Lpqbm+O3v/1tbLfddi3f5XK52HDDDWPDDTdcYk2HDh3ioYceslEOAAAAAECq5Uql0ueezPPGG2/EX//61/jyl7+8xOczZ86Mr33ta1EoFFqtufHGG6NYLMZxxx33uU1Mnjw5zj///CU+Gzt2bBx11FHx/PPPx09+8pOYOXNm7LbbbnH++efH2muv/bnXbEs+n694LQAAAACkSXNzc9It1JVel09KuoWqmzn6xKRbWCWs0BvlPXr0iB49epR14SOPPHKFs88880yMGjUqvv3tb7d8tsYaa8R7770XRx99dHzta1+Lyy67LP7rv/4rxo0bF1deeWVZvSxt6QdIsViMQqEQTU1N0dDQ0Cqfz+fLeujIJ5tva83y5py2e5CvbI0ZpzdfrRpmXLt8Uj2ZceX5NPZkxsnXMONk82nsyYyTr1EP+XqacRp7qod8kjOuRY2s5YHq6LCiwb/+9a/L/LxUKkW/fv3iG9/4RkyaNClee+21spt45plnYtddd41u3bq1/NOpU6e45ZZbokuXLnHGGWdEjx494tRTT40nn3wy/v73v5ddAwAAAAAAlmWFNsrfeeed+I//+I8YPnx4PPPMM62+Hzt2bGy33XZxzz33xP777x8TJ06MFTjRJSIi/v73v8fs2bPj3HPPjT59+sTgwYPjxhtvjIiI6dOnxy677BKrr756RER07tw5evfuHc8+++wK3h4AAAAAACzfCh29sv7668ekSZPi2muvjcMPPzyGDh0aZ555ZixatChyuVwceuihkcvl4vTTT4/f/OY3cdFFF8W7774bEyZM+Nxrv/TSS9GzZ8848cQTo6mpKf785z/HuHHjYrPNNou5c+dG7969l8h379495syZU9nd/v8Vi8Ul/jx//vwl/u+KrCm3hnxt88ta83lzTts9yJe/xozTna9GDTOubb4WNcy4uvla1DDj6uZrUcOMk83XooYZVzdfixppz9fbjGtRY1XLJz3jWtTIUn5ZxwizHCv2bi8ZtEI/5vnvHnzwwTjnnHMil8vFCSecEPfee2/84he/iE6dOrVk/vCHP8Spp54a55xzTnzzm98su6kf//jHsXDhwvjwww9jl112ie9973st351yyinRq1ev+MEPflD2dSP+ec7TggULylrTuXPnstbIJ5tPY0/y1c2nsSf55GvIVzefxp7kk68hX918GnuSr24+jT3JJ19Dvrr5NPYkn3yNrOX79++/wlkiel22Cv6Y54+y82Oef/3rX+PVV1+N7bffPjbccMOI+Od+9aeffhrbbrttbLbZZhVfu+yN8oiIDz/8MM4888x46KGH4pxzzomvf/3rrTLnnntu3HPPPXHvvffGOuusU9b1J06cGE8++WT07Nkz1l133TjttNNavjvuuONiwIABcfTRR5fbdkT8c6O8V69eS3w2f/78mDVrVmy++ebRpUuXVmtmzpzZas3yyCebb2vN8uactnuQr2yNGac3X60aZly7fFI9mXHl+TT2ZMbJ1zDjZPNp7MmMk69RD/l6mnEae6qHfJIzrkWNrOW9UV4eG+X16aOPPoqxY8fGlClTIpfLxS9/+cvYfffdIyLi8MMPj6effjpyuVzstdde8dOf/jS6du1ado0VOnplad27d48rrrgiJkyYEGeffXYMHDgwevbsuUTmmGOOibfeeis6d+683Gv97Gc/i86dO8cxxxzT8tm0adNio402in79+sWdd97Z8nmpVIoXX3wxDjjggErabtHWA6RLly5tflfuQ0c+2fzy1rQ157Tdg3zla8w4nflq1jDj2uRrUcOMq5uvRQ0zrm6+FjXMONl8LWqYcXXztahRL/l6mXEtaqyq+aRmXIsaWcvDqu6cc86JmTNnxnXXXRd9+vSJ7t27t3x30003xQcffBBPPfVUnHfeeXH++efH+PHjy65R0Ub5v5x66qmx5557ttokj4jYcMMN4+c//3nkcrnlXmO77baLk046KTbbbLPYdNNN44477ohnn302brzxxthiiy1i/Pjxcc8998TXvva1uPnmm+Ojjz6K3XbbrT1tAwAAAABZ5IzyuvTwww/H5Zdf3vIW+b/r0KFDrLPOOrHPPvtEqVSKsWPH1n6jPCJil112afO7z9skj4jYa6+9YsyYMXHBBRfEBx98ENtss03ceOONMWDAgIiIOP/881tu7oMPPohzzjlnif9iAAAAAADAqmuttdaKd99993Nzc+fOrfhvZLR7o7wajjjiiDjiiCOW+d1BBx0Uu+66azz//PPxpS99KXr06FHj7gAAAAAASMrw4cPj/PPPj48++ij222+/2GijjZb4ft68efHggw/G+PHjY/jw4RXVqOjHPOtZPp9PugUAAAAAqIrm5uakW6grvS5dBX/Mc8yq/2OeERG/+MUv4uc//3l88sknscYaa0S3bt2iY8eO8fHHH8dHH30UpVIpDj300PjJT34SHTp0KPv6qXijvNaWfoAUi8UoFArR1NS0zFfz8/l8WQ8d+WTzba1Z3pzTdg/yla0x4/Tmq1XDjGuXT6onM648n8aezDj5GmacbD6NPZlx8jXqIV9PM05jT/WQT3LGtaiRtTzlyWXqleFVy7HHHhtHHHFEPPbYY/HKK6/E+++/H59++mk0NDTE5ptvHrvvvntsttlmFV8/kxvlAAAAAADUlzXXXDP222+/2G+//ap+7fLfQQcAAAAAgFWIjXIAAAAAADLN0SsAAAAAAKTWlClTysoPHjy47Bo2ygEAAACAbPBjnnXp+OOPX+FsLpeLQqFQdg0b5QAAAAAApFa5b5RXol0b5S+++GKcffbZ8dJLL8WiRYtafV/Jzj0AAAAAAPzLJptsstJrtGujfOzYsRERMXHixFhnnXWq0hAAAAAAANRSrlQqVXwyT9++feOaa66JXXbZpZo9rVT5fD7pFgAAAACgKpqbm5Nuoa5sOXFS0i1U3V9PPjHpFlYJ7XqjvLm5OV544YW62iiPaP0AKRaLUSgUoqmpKRoaGlrl8/l8WQ8d+WTzba1Z3pzTdg/yla0x4/Tmq1XDjGuXT6onM648n8aezDj5GmacbD6NPZlx8jXqIV9PM05jT/WQT3LGtaiRtTxQHR3as/i8886L3//+93HDDTfEp59+Wq2eAAAAAACgZtr1RvnRRx8dxWIxxo8fHxdffHGsv/760aHD/7f3XotfIwUAAAAAgPZo10b5CSecUK0+AAAAAABWqlzFv9bIqq5dG+UHH3xwtfoAAAAAAIBEtOuMcgAAAAAAqHft2igfNmxY3HXXXdXqBQAAAAAAaq5dR680NjbGK6+8Uq1eAAAAAABWnlIu6Q5IqXa9UT569Oi47bbbIp/PV6sfAAAAAACoyCOPPFLRuna9Uf7GG2/EV7/61Tj88MPj0EMPjT59+izx/UEHHdSeywMAAAAAwBJOPvnkmDBhQnTs2LHls1dffTXGjx8ff/nLX2L69OllXzNXKpVKlTY0aNCgti+cy8WUKVMqvfRK4+13AAAAAFYVzc3NSbdQV7a6+NKkW6i6V388JukWam6fffaJXr16xRVXXBHz5s2Lyy+/PG699dbYeeed46STToptttmm7Gu2643yhx56qD3LE7P0A6RYLEahUIimpqZoaGholc/n82U9dOSTzbe1ZnlzTts9yFe2xozTm69WDTOuXT6pnsy48nwaezLj5GuYcbL5NPZkxsnXqId8Pc04jT3VQz7JGdeiRtbylKniV4ZJk5tvvjm+//3vxze+8Y146623YvPNN4/rr78+dt5554qv2a4zygEAAAAAoJbWXXfdmDx5cnTr1i3WWGON+MUvftGuTfKIdr5Rfueddy73e2eUAwAAAADQHlOnTl3m58ccc0ycf/75MWLEiBg3blystto/t7sHDBhQdo12bZRfccUVLf+7VCrFu+++G4sWLYouXbpEY2OjjXIAAAAAANplxIgRn5v5zne+ExH//O3MQqFQdo2qnlG+aNGiuP/++2PSpElx8cUXt+fSAAAAAABVlXNGeV166aWXVnqNdm2UL61jx44xZMiQ2GijjeL888+PW2+9tZqXBwAAAACAqqvqRvm/NDc3x2uvvbYyLg0AAAAAQIbl8/k455xz4qWXXopFixa1+r7mR68s6xD1+fPnxx133BGbbLJJey4NAAAAAACtnH766RERMXHixFhnnXWqcs12bZQv6xD1jh07xpe+9KW48MIL23NpAAAAAIDqckb5KuFvf/tbXHPNNbHLLrtU7Zq5UqmUqX898vl80i0AAAAAQFU0Nzcn3UJd2Xr8pUm3UHWvjB2TdAs1N3z48Nhzzz3jmGOOqdo1V8oZ5Wm39AOkWCxGoVCIpqamaGhoaJXP5/NlPXTkk823tWZ5c07bPchXtsaM05uvVg0zrl0+qZ7MuPJ8Gnsy4+RrmHGy+TT2ZMbJ16iHfD3NOI091UM+yRnXokbW8pBF5513Xnz/+9+Pzp07x7e+9a3o1KlTu6/ZoT2L77zzzvjwww9bfX7jjTfG9773vfZcGgAAAAAAWjn66KNj3rx5MX78+OjXr1985StficGDB7f8U4l2vVE+duzYuPXWW6N79+5LfN7U1BSXXHJJey4NAAAAAACtnHDCCVW/Zrs2ykulUuRyuVaff/DBB602zwEAAAAAkpTL1K81rroOPvjgql+z7I3yO+64I+64446WP5955pnRtWvXlj8vWrQopk+fHscdd1x1OgQAAAAAgH/z5ptvRj6fj08++aTls4ULF8a0adNi/PjxZV+v7I3yTTbZJAYOHBgREU8++WRsu+22sf7667d836lTp/jhD38YO+20U9nNAAAAAADA8txzzz1x6qmnRqlUilKpFBtuuGF8+OGHUSwWK/4x3LI3ygcOHNiyUX7llVfGN7/5zdh2220rKg4AAAAAAOW48sor4wc/+EEceuihMWjQoPj1r38dnTt3jiOOOCKGDh1a0TU7tKehAQMGLHHsCgAAAABAapVWwX8y6O23345ddtkl1l9//dh6663j2WefjXXWWSd+8IMfxOTJkyu6Zrs2yidPnhybb755ey4BAAAAAAArbJNNNok//elPERHRv3//mDp1akRErLfeevH+++9XdM2yj15Z2uOPPx533XVXvP766zF+/Pi4++67Y6211opvf/vb7b00AAAAAAAs4dhjj41TTz01evToEfvtt18cddRRMX/+/HjmmWcqPqM8VyqVKn5B/5577omTTjopttlmmygUCnHHHXfEtGnT4uKLL47Ro0fHd7/73UovvdLk8/mkWwAAAACAqqh0UzCrvnjBpUm3UHUvnzEm6RYSMW3atOjatWv07t07brrpprjtttuisbExxo0bF7169Sr7eu16o/yqq66KkSNHxg9/+MPo3bt3REQcccQR0bFjx7juuutSuVEeEXHAC38oK/+HPgeU9dDJ5/PyCebbWlMsFqNQKERTU1M0NDTUtCf56ubbWmPG6c1Xq4YZ1y6fVE9mXHk+jT2ZcfI1zDjZfBp7MuPka9RDvp5mnMaeapEfs91PVjh/6fNnlz3jI698YIWvf+Oor1Y0s23WPWSF89Pfuz3O+ODnK5y/YO3jUjezcvPTOh+zwvnm+PMKZ4nMnum9Kurfv3/L/x4+fHgMHz68Xddr1xnlb731Vuy2226tPu/Vq1e888477bk0AAAAAABERMTcuXPjrrvuimuvvTZuueWWmDNnTqvM22+/Heeee25F12/XG+Vf+tKX4u67727Zvc/lchER8cc//rHlDXMAAAAAAKjUzJkzY/jw4fH+++9Hly5dYv78+dGpU6eYNGlS7L333vG3v/0tfvGLX8Rdd90V66yzTpx11lll12jXRvnJJ58cRx99dDz33HORy+XiyiuvjNmzZ8fLL78c1113XXsuDQAAAAAAMXHixFh77bXjxhtvjK222irmzp0bP/nJT+Lss8+O//mf/4l777031l133Tj11FPjm9/8ZkU12rVRPnDgwPjDH/4Q1157beRyuXjrrbfii1/8YlxyySUVHZgOAAAAALCy5JxRXpeefvrpOPvss2OrrbaKiIi11lorTj/99Nh1113j6aefjtNPPz0OPfTQ6NSpU8U12rVRHhGxxRZbxPjx49t7GQAAAAAAaOWDDz6ITTfddInP1llnnYiIuPrqq6tyDHi7N8oBAAAAAGBlmjVrVnTo0KHV5zNnzoxFixYt8dm2225b9vXbtVF+1llnxdChQ2PnnXduz2UAAAAAAKBNP/7xj5f5+Yknnhi5XC4iIkqlUuRyuSgUCmVfv10b5c8880xsuummNsoBAAAAAOrMe++9F2eddVb85S9/iS222CIuvPDCFTrGZNGiRTFx4sS4/fbbo6GhIU455ZQYOnRoy/cXXXRR/Nd//dcSa6666qrYe++9K+rzxhtvrGhdOdq1Uf7tb387rr322jjssMOiW7du1eoJAAAAAICVqFQqxahRoyIi4tZbb43nn38+Ro4cGXfffXd07dp1uWsvu+yyuOuuu+JnP/tZrL766nHCCSfEZptt1nLkyTPPPBMXXHBB7LPPPi1runTpUnGvAwcOrHjtisqVSqWKf+t19uzZcd1118Wf/vSnOPHEE6NPnz5LfL/xxhu3u8Fqy+fzSbcAAAAAAFXR3NycdAt15UvnXZp0C1U348wxFa2bNm1aHH744XHPPffEVlttFRERRx99dBxwwAFx4IEHtrnu008/jZ122ilOOeWUOPzwwyMi4tprr43XX389Lrjggvj000+jf//+8cADD8SGG25YUW9JaNcb5YMGDWr536NHj67KWTC1sPQDpFgsRqFQiKampmhoaGiVz+fzZT105JPNt7VmeXNO2z3IV7bGjNObr1YNM65dPqmezLjyfBp7MuPka5hxsvk09mTGydeoh3w9zTiNPdVDPskZ16JG1vIwePDg5X4/ZcqUZX4+ffr02HjjjVs2ySMi+vXrF88999xyN8pfe+21KBaLscceeyyx7g9/+ENERDz//PMR8c9N97/97W/Rs2fPGDlyZHzta19b4XtKQrs2ytv6fzIAAAAAQOpUfLbGqmfu3LnRs2fPJT7r3r375778PHfu3OjYsWP06NGj5bNu3brFnDlzIiLilVdeia222ipOP/302GyzzeLuu++Ok08+Obbaaqv40pe+VP0bqZJ2bZRvsskm1eoDAAAAAIAyVfoy82qrrRadO3de4rM11lgjisXi567r1KnTEp916dKlZd23vvWt+Na3vtXy3dFHHx0PPfRQ/PGPf0z1RnmHlXnxxYsXx8CBA+OVV15ZmWUAAAAAAChDY2NjvPfee0t8Nm/evFab4MtaN3/+/Jg3b17LZ3Pnzl3uuvXXXz/efPPN9jW8kq3UjfJSqRQfffRRLFq0aGWWAQAAAACgDH379o1XXnklPvroo5bPXnjhhdhoo42Wu65Hjx6x7rrrxrRp05a57vTTT285rzwiYuHChfHcc8997nWTtlI3ygEAAAAA0iJXWvX+qdTWW28dvXr1ikmTJsXixYvjxRdfjPvvvz8GDRoUixcvbvMF6A4dOsTQoUPjiiuuiHnz5sX//d//xa9+9asYNGhQREQ0NzfHT3/603j00Ufj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xp7MOPkaZpxsPo09mXHyNeohX08zTmNP9ZBPcsa1qJG1PGTRlClTqn7Ndm2Ut+XAAw+M8ePHr4xLAwAAAACQYUu/wF0NHap9wQULFsTNN9+8zDezAQAAAACgPY455ph48MEHq3rNdr1R3rt372X+mOfqq68e5557bnsuDQAAAABQXRX/WiNp8sEHH8RLL70Ue++9d9Wu2a6N8htvvLHVZx07doxevXpFY2Njey4NAAAAAACtHHvssXHOOefEQQcdFJtuumlVrtmujfKBAwdWpQkAAAAAAFgR3bp1i7333jsOPfTQ+P73vx99+vRZ4vsBAwaUfc12bZTPnj071l9//VhttSUvc88998SsWbPi+OOPb8/lAQAAAABgCSNGjGj53xdffPES3+VyuSgUCmVfs10b5YMHD45bb701tt122yU+7969e1x//fU2ygEAAACA1Mg5o3yV8NJLL1X9mh3as7hUWva/WZ06dYoOHdp1aQAAAAAAqImy3yh/8skn48knn2z58+9+97tYf/31W/68aNGieOCBB+IrX/lKdToEAAAAAIAV8Oabb1b0A5+5UluvhbfhjjvuiNtvvz0iIqZOnRrbbLNNdO3ateX7zp07x/bbbx/f+973okuXLmU39Morr8Shhx4aN9xwQ2y//fYREfHII4/EhAkTYs6cOTFkyJA488wzo3PnzmVfOyIin89XtA4AAAAA0qa5uTnpFurKtmMvTbqFqntx/JikW6i5Dz74ICZOnBjPPvtszJ8/v+XzRYsWxbvvvhsvvvhi2dcse6P83/Xu3Ttuu+22VmeUV+qzzz6Lb37zmzFgwIAYO3ZsRETMmDEj/uM//iNGjhwZw4YNi4svvjg23njjlu/Llc/nWz1AisViFAqFaGpqioaGhhVaU24N+drl21qzvDmn7R7kK1tjxunNV6uGGdcun1RPZlx5Po09mXHyNcw42XwaezLj5GvUQ76eZpzGnuohn+SMa1Eja3nKY6N81fCjH/0oXnnlldh5553jt7/9bZx99tnxt7/9Lf7zP/8zTjvttDjyyCPLvmaqDhK/5ppr4qOPPoof/ehHLZ9Nnjw5mpqaYuTIkdGjR48YN25c3HLLLbFgwYLkGgUAAAAA6k9pFfwng/7yl7/E6aefHmeeeWZ07949tthiizj55JPj8MMPj0cffbSia7Zro/yll16q2tvk+Xw+fvGLX8RXv/rVuPfee2PWrFkRETF9+vTYY489WnIbbLBBNDY2xssvv1yVugAAAAAA1Jd/HZSy/fbbtxy1su+++8ZTTz1V0fXK/jHPf3fllVcu9/tRo0at0HVKpVKcffbZ0bVr18jlcjFjxoyYMGFC/OAHP4i5c+dGz549l8h379495syZE3369Kmo72KxuMSf/3WOzb+fZ/N5a8qtIV/b/LLWfN6c03YP8uWvMeN056tRw4xrm69FDTOubr4WNcy4uvla1DDjZPO1qGHG1c3Xokba8/U241rUWNXySc+4FjWylF/WMcKwqtt1113jwgsvjMsuuyx23nnnuPPOO2OfffaJxx9/fInf0yxHu84oHzFiRMv/LpVK8fbbb8dbb70VjY2NsfXWW8eNN964Qtd56qmn4ogjjoif//zn8ZWvfCUiIh544IEYPXp0bLzxxnHSSSfFkCFDWvKHH354HHbYYXHAAQeU3XM+ny/72JbOnTuXtUY+2Xwae5Kvbj6NPcknX0O+uvk09iSffA356ubT2JN8dfNp7Ek++Rry1c2nsSf55GtkLd+/f/8VzhKx7Wmr4BnlF2XvjPJ//OMfccopp8SwYcPiq1/9ahx44IExe/bsiIgYPXp0HHfccWVfs10b5cvy/PPPx+mnnx5jxoyJwYMHr9Cau+++O0477bR4/vnno2PHjhERMWfOnNhzzz2jQ4cOcfrppy+xKT9s2LA4/vjjY7/99iu7v3w+H7169Vris/nz58esWbNi8803jy5durRaM3PmzFZrlkc+2Xxba5Y357Tdg3xla8w4vflq1TDj2uWT6smMK8+nsSczTr6GGSebT2NPZpx8jXrI19OM09hTPeSTnHEtamQt743y8mx76iq4UT4hexvlS/v444/j8ccfj8bGxthhhx0quka7jl5Zlu222y6uuOKK+OEPf7jCG+Ubb7xxLF68OD755JOWV+PffPPNiIg46KCDYtq0aS0b5R9//HG89tprsfHGG1fcY1sPkC5durT5XbkPHflk88tb09ac03YP8pWvMeN05qtZw4xrk69FDTOubr4WNcy4uvla1DDjZPO1qGHG1c3Xoka95OtlxrWosarmk5pxLWpkLQ9Z17Vr1xXei25Lu37Msy0bbbRRvP322yuc33777WOLLbaIs846K95444148cUX44ILLohdd901RowYEQ8++GBM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I0bEyJEj4+OPP/7ctZdddlncdddd8bOf/SwmTZoUF154Ybz44osREbFgwYI4+uijo1u3bnHXXXfFbrvtFqNGjYrFixev7Ftql1RslC/tqquuiv322y+23HLLmD59euyxxx4t322wwQbR2NgYL7/8coIdAgAAAAB1p7QK/lOhp59+Op555pk4//zzY8stt4yDDz44tthii3jwwQeXu+7TTz+Nm266KUaNGhUDBw6Mfv36xZFHHhk333xzRETcd9998d5778X5558fPXv2jGOPPTbmz58fTz/9dOXN1kAqjl75d++9917cddddcccdd0RExNy5c6Nnz55LZLp37x5z5syJPn36VFSjWCwu8ef58+cv8X9XZE25NeRrm1/Wms+bc9ruQb78NWac7nw1aphxbfO1qGHG1c3XooYZVzdfixpmnGy+FjXMuLr5WtRIe77eZlyLGqtaPukZ16JGlvLLOkaYbBk8ePByv58yZcoyP58+fXpsvPHGsdVWW7V81q9fv3juuefiwAMPbPN6r732WhSLxSVebu7Xr1/84Q9/aLlunz59orGxseX7vn37xnPPPRc77rjjCt1TElLxY57/7rLLLosZM2bENddcExER++23X4wePTqGDBnSkjn88MPjsMMOiwMOOKDs6+fz+bKPbencuXNZa+STzaexJ/nq5tPYk3zyNeSrm09jT/LJ15Cvbj6NPclXN5/GnuSTryFf3Xwae5JPvkbW8v3791/hLBEDv73q/ZjnWm/es9zv29oov/rqq+OJJ56IG264oeWzyZMnx+OPPx5XXXVVm9d76qmn4sgjj4zp06e3fDZjxowYPnx4TJ06Nc4444wolUpx4YUXtnx/0UUXxeLFi+P0009f0duquVS9Ub548eK444474owzzmj5rLGxMd57770lcnPnzo1OnTpVXKepqWmJP8+fPz9mzZoVm2++eXTp0qVVfubMma3WLI98svm21ixvzmm7B/nK1phxevPVqmHGtcsn1ZMZV55PY09mnHwNM042n8aezDj5GvWQr6cZp7GnesgnOeNa1MhaHtraCP88q622WnTu3HmJz9ZYY43P/RsNq622Wqu92S5durSs69ixY3Ts2LHVdZfe402bVG2U/+Uvf4mPP/44vvzlL7d81rdv35g2bVqMGDEiIiI+/vjjeO2119r1K6lt/ZWULl26tPlduX+NRT7Z/PLWtDXntN2DfOVrzDid+WrWMOPa5GtRw4yrm69FDTOubr4WNcw42XwtaphxdfO1qFEv+XqZcS1qrKr5pGZcixpZy7Picqk6WyNZy3pBed68eZ/7gnJjY2PMnz8/5s2bF2uuuWZELPlic2NjY8ycObPs6yYtVT/mOWXKlBg4cOAS/08bNmxYPPjggzF16tSIiLjyyiujsbExmpubk2oTAAAAAKCu9e3bN1555ZX46KOPWj574YUXYqONNlruuh49esS6664b06ZNW+a6fv36xTPPPBOLFi0q67pJS9VG+aOPPhoDBw5c4rNtttkmTjjhhDjqqKNit912i9/+9rdxwQUXRIcOqWodAAAAAKBubL311tGrV6+YNGlSLF68OF588cW4//77Y9CgQbF48eL46KOPltjs/pcOHTrE0KFD44orroh58+bF//3f/8WvfvWrGDRoUERE7LbbbrFw4cK4/vrrIyLi4Ycfjueff77l+7RK3Y95tuWNN96IGTNmRJ8+fWKDDTao+Dr5fL6KXQEAAABAcpy6UJ6djlz1fszziRtPrHjt9OnT49hjj43PPvss5s6dGwceeGBceOGF8eabb8bgwYPjzjvvXOaZ+XPnzo3vf//78fLLL0epVIrNNtssbrrpppajWB577LEYM2ZMrL766vHBBx/EyJEjY9SoURX3WQt1s1FeLfl8vtUDpFgsRqFQiKampmWeAbWsNeXWkK9dvq01y5tz2u5BvrI1ZpzefLVqmHHt8kn1ZMaV59PYkxknX8OMk82nsSczTr5GPeTracZp7Kke8knOuBY1spanPDuNWAU3yidXvlEe8c9nwtSpU6OxsTG22267FV63ePHimDZtWnz66acxcODAWH311Zf4/oMPPohp06ZFz549Y+utt25Xj7WQqh/zBAAAAACgdhoaGmKvvfYqe12HDh1iwIABbX6/9tprx+DBg9vTWk056BsAAAAAgEyzUQ4AAAAAQKbZKAcAAAAAINOcUQ4AAAAAZEKulHQHpJU3ygEAAAAAyDQb5QAAAAAAZJqNcgAAAAAAMs0Z5QAAAABANpQcUs6y5UqlbP3bkc/nk24BAAAAAKqiubk56Rbqys5H/DTpFqru8V+flHQLq4RMvlG+9AOkWCxGoVCIpqamaGhoaJXP5/NlPXTkk823tWZ5c07bPchXtsaM05uvVg0zrl0+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t7BKSPzHPN98880444wzYtKkSdG7d+945pln4pRTTonNN988Nthggzj++ONj5MiRMWzYsLj44otj0qRJMXbs2HbVXPoBUiwWo1AoRFNTUzQ0NLTK5/P5sh468snm21qzvDmn7R7kK1tjxunNV6uGGdcun1RPZlx5Po09mXHyNcw42XwaezLj5GvUQ76eZpzGnuohn+SMa1Eja3nKtDjpBkirxI9eeeGFF6Jnz56xxx57xHrrrRf77LNPbLnlljFz5syYPHlyNDU1xciRI6NHjx4xbty4uOWWW2LBggVJtw0AAAAAwCoi8Y3yrbfeOl555ZV4+OGHY/78+XH//ffHq6++GrvvvntMnz499thjj5bsBhtsEI2NjfHyyy8n2DEAAAAAAKuSxI9e2WqrreKYY46J4447ruWzs88+O7baaquYO3du9OzZc4l89+7dY86cOdGnT5+KaxaLxSX+PH/+/CX+74qsKbeGfG3zy1rzeXNO2z3Il7/GjNOdr0YNM65tvhY1zLi6+VrUMOPq5mtRw4yTzdeihhlXN1+LGmnP19uMa1FjVcsnPeNa1MhSflnHCAPlS/zHPAuFQhxxxBExYcKE2GOPPSKfz8fJJ58cp556alx++eUxevToGDJkSEv+8MMPj8MOOywOOOCAiurl8/myj27p3LlzWWvkk82nsSf56ubT2JN88jXkq5tPY0/yydeQr24+jT3JVzefxp7kk68hX918GnuST75G1vL9+/df4SwRgweNT7qFqpvyUPt+z5F/Snyj/KKLLoo333wzrrzyypbPrr322nj00Udj4cKFMXTo0BgxYkTLd8OGDYvjjz8+9ttvv4rq5fP56NWr1xKfzZ8/P2bNmhWbb755dOnSpdWamTNntlqzPPLJ5ttas7w5p+0e5CtbY8bpzVerhhnXLp9UT2ZceT6NPZlx8jXMONl8Gnsy4+Rr1EO+nmacxp7qIZ/kjGtRI2t5b5SXx0Y5bUn86JWFCxfGe++9t8Rn7733XixevDj69u0b06ZNa9ko//jjj+O1116LjTfeuF0123qAdOnSpc3vyn3oyCebX96atuactnuQr3yNGaczX80aZlybfC1qmHF187WoYcbVzdeihhknm69FDTOubr4WNeolXy8zrkWNVTWf1IxrUSNreaD9Ev8xz759+8azzz4bEydOjP/+7/+Oyy67LG6++ebYd999Y9iwYfHggw/G1KlTIyLiyiuvjMbGxmhubk64awAAAAAAVhWJv1G+//77x/vvvx8333xz3HDDDbHWWmvFiBEjYvjw4dGhQ4c44YQT4qijjoq11147isViXH755dGhQ+L7+wAAAABAvUn0EGrSLPEzylfEG2+8ETNmzIg+ffrEBhts0K5r5fP5KnUFAAAAAMly8kJ5Bn9lFTyj/GFnlFdD4m+Ur4gePXpEjx49qna9pR8gxWIxCoVCNDU1LfMMqHw+X9ZDRz7ZfFtrljfntN2DfGVrzDi9+WrVMOPa5ZPqyYwrz6exJzNOvoYZJ5tPY09mnHyNesjX04zT2FM95JOccS1qZC0PVIczTAAAAAAAyLS6eKMcAAAAAKDd0n8KNQnxRjkAAAAAAJlmoxwAAAAAgEyzUQ4AAAAAQKY5oxwAAAAAyIScI8ppgzfKAQAAAADINBvlAAAAAABkmo1yAAAAAAAyLVcqlTJ1Mk8+n0+6BQAAAACoiubm5qRbqCt773lB0i1U3YP/e0bSLawSMvljnks/QIrFYhQKhWhqaoqGhoZW+Xw+X9ZDRz7ZfFtrljfntN2DfGVrzDi9+WrVMOPa5ZPqyYwrz6exJzNOvoYZJ5tPY09mnHyNesjX04zT2FM95JOccS1qZC0PVIejVwAAAAAAyDQb5QAAAAAAZFomj14BAAAAALIntzjpDkgrb5QDAAAAAJBpNsoBAAAAAMg0G+UAAAAAAGSajXIAAAAAADLNj3kCAAAAANlQKiXdASnljXIAAAAAADItVypl6z+j5PP5pFsAAAAAgKpobm5OuoW68tXdzk+6hap74E/jkm5hlZDJo1eWfoAUi8UoFArR1NQUDQ0NrfL5fL6sh458svm21ixvzmm7B/nK1phxevPVqmHGtcsn1ZMZV55PY09mnHwNM042n8aezDj5GvWQr6cZp7GnesgnOeNa1MhaHqiOTG6UAwAAAAAZlKmzNSiHM8oBAAAAAMg0G+UAAAAAAGSajXIAAAAAADLNGeUAAAAAQCbkSg4pZ9m8UQ4AAAAAQKbZKAcAAAAAINNslAMAAAAAkGm5UilbB/Pk8/mkWwAAAACAqmhubk66hbqyz87nJt1C1d3/+FlJt7BKyOSPeS79ACkWi1EoFKKpqSkaGhpa5fP5fFkPHflk822tWd6c03YP8pWtMeP05qtVw4xrl0+qJzOuPJ/Gnsw4+RpmnGw+jT2ZcfI16iFfTzNOY0/1kE9yxrWokbU8UB2OXgEAAAAAINNslAMAAAAAkGk2ygEAAACAbFi8Cv6zEjzyyCMxdOjQ6N+/f4wbNy4WLFiwwmtnzZoVI0aMiH79+sWRRx4Zs2fPbvmuVCrFTjvtFF/60pda/tlxxx1Xxi2UzUY5AAAAAAARETFjxow4/vjjY//9948777wzPvzww5g0adIKrV2wYEEcffTR0a1bt7jrrrtit912i1GjRsXixf/c0X/ttddiwYIF8fjjj8fUqVNj6tSp8fDDD6/M21lhNsoBAAAAAIiIiMmTJ0dTU1OMHDkyevToEePGjYtbbrllhd4qv+++++K9996L888/P3r27BnHHntszJ8/P55++umIiHjmmWeiX79+0djYGN26dYtu3brFWmuttbJvaYWslnQDAAAAAABUZvDgwcv9fsqUKWVdb/r06fHlL3+55c8bbLBBNDY2xssvvxx9+vT53LV9+vSJxsbGls/69u0bzz33XOy4447x9NNPx+uvvx677LJLzJ8/P3beeec444wzokePHmX1uDLYKAcAAAAAMiFXKiXdQiqMGTMmHn300WV+17179+jZs2erz+bMmfO5G+Vz585tc23EP49e2XPPPeO73/1ufPbZZ3HeeefFmDFj4tZbb23H3VSHjXIAAAAAgDpV7hvjERHjxo2L+fPnL/O77373u9G5c+clPltjjTWiWCx+7nU7duwYHTt2bLX2vffei4iIm2++eYnvzjvvvNh7771j5syZ0atXr3JuoepslAMAAAAAZMgXvvCF5X73r43tf5k7d2506tTpc6/b2NgYM2fOXOKzefPmtbl2/fXXj4iIN998M/GN8lyplK2/b5DP55NuAQAAAACqorm5OekW6sq+A36SdAtVd9/Us6t6vQkTJsTbb78dl112WUREfPzxx7HTTjvFzTffHNttt91y1/6///f/Yty4cfHII4+0vFn+zW9+M/bee+845JBDYvjw4XHbbbdFQ0NDRET8+c9/ju985ztxzz33xFZbbVXV+yhXJt8oX/oBUiwWo1AoRFNTU8uQ/l0+ny/roSOfbL6tNcubc9ruQb6yNWac3ny1aphx7fJJ9WTGlefT2JMZJ1/DjJPNp7EnM06+Rj3k62nGaeypHvJJzrgWNbKWp0zZeme4IsOGDYtv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fBI//vGP44UXXohtt902pk6dGl26dIn77rsvDjzwwBg9enQMGTKkJX/44YfHYYcdFgcccEBF9fL5fCxYsKCsNZ07dy5rjXyy+TT2JF/dfBp7kk++hnx182nsST75GvLVzaexJ/nq5tPYk3zyNeSrm09jT/LJ18havn///iucJWLIVqck3ULV3fvqJUm3sEpIfKP8X+bMmRP5fD5GjhwZEydOjGHDhsW3vvWtGDp0aIwYMaIlN2zYsDj++ONjv/32q6hOPp+PXr16LfHZ/PnzY9asWbH55ptHly5dWq2ZOXNmqzXLI59svq01y5tz2u5BvrI1ZpzefLVqmHHt8kn1ZMaV59PYkxknX8OMk82nsSczTr5GPeTracZp7Kke8knOuBY1spb3Rnl5hvQ6OekWqu7emROTbmGVkPjRK/+ywQYbxMSJE2PAgAExbNiwiIjo27dvTJs2rWWj/OOPP47XXnstNt5443bVausB0qVLlza/K/ehI59sfnlr2ppz2u5BvvI1ZpzOfDVrmHFt8rWoYcbVzdeihhlXN1+LGmacbL4WNcy4uvla1KiXfL3MuBY1VtV8UjOuRY2s5YH2S/zHPP/lhRdeiHvvvTfOOuusls+GDRsWDz74YEydOjUiIq688spobGyM5ubmpNoEAAAAAGAVk4o3ykulUpx//vlx5JFHxhe/+MWWz7fZZps44YQT4qijjoq11147isViXH755dGhQ2r29wEAAAAAqHOpOaN8ed54442YMWNG9OnTJzbYYIN2XSufz1epKwAAAABIlpMXyjNkixOTbqHq7n1tUtItrBJS8Ub55+nRo0f06NGjatdb+gFSLBajUChEU1PTMs+AyufzZT105JPNt7VmeXNO2z3IV7bGjNObr1YNM65dPqmezLjyfBp7MuPka5hxsvk09mTGydeoh3w9zTiNPdVDPskZ16JG1vJAdTjDBAAAAACATLNRDgAAAABAptkoBwAAAAAg0+rijHIAAAAAgHYrlZLugJTyRjkAAAAAAJlmoxwAAAAAgEyzUQ4AAAAAQKY5oxwAAAAAyIbFzihn2bxRDgAAAABApuVKpWz91Gs+n0+6BQAAAACoiubm5qRbqCtDev4o6Raq7t6/XZZ0C6uETB69svQDpFgsRqFQiKampmhoaGiVz+fzZT105JPNt7VmeXNO2z3IV7bGjNObr1YNM65d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RUT+h+VOp6MXd4pYr/8ehCK2KTs7G6PRiMlk0nQrNkrHsYjIk1OiXERERERERERERESKNQ3HFREREREREREREZFiTYlyERERERERERERESnWlCgXERERERERERERkWJNiXIRERERERERERERKdaUKBcRERERERERERGRYk2JchERERF5rOzs7AKVi4iIiIiIWBMlykVERESKifj4ePO/jUYjmzdvJiYmJl/rvvnmm8yePTtP2datW+nYsSNpaWm/u+69e/cAiImJYeXKlQDcvXvXvPz48eN5YisKmZmZxMbGFmmblrJr1y6GDRtGenr679a7ceMGycnJf05QIiIiIiI2RolyERERkWJi+PDhTJo0CQA7OzvCwsJYvHjxY9dLSkriyJEjGAyGPOV+fn4kJiYSGhr6yHXj4+N55ZVXiI6OJioqyry9adOmsXDhQgA++ugjZs6cWdjdeqh33nmH5cuXF2mbvyc1NfWJ27h+/TqxsbH8+uuveT5JSUns3r2b77///oFlly5d4sqVKwB88803jB49mqysrCeORURERESkuClh6QBERERELOHw4cMEBgYSFRVl6VD+FPv37yciIoIJEyaYy8aOHcuwYcPo06cPjRo1euS627Ztw2g00rt3bzIyMjAYDDg6OuLl5cXQoUMpW7asua7JZOLevXuUKlUKAC8vL/7617/yz3/+kwEDBuDg4EBcXBw7d+5ky5Yt5OTkcO7cOd5///0i29eVK1cSGxtLeHi4uSwyMpLp06cTGRlJgwYNmDVrFhUrViyybY4dO5YWLVoQFBRU6DbmzZvH999/j4ODwwPLXF1d+de//vVAeU5ODs899xzh4eEMGTKEkydPMn/+fPMNERERERERyR+DyWQyWToIERERkT9bamoqFy9epH79+pYO5Q+Xk5ND7969cXV15fPPP8+zbOjQoVy4cIFvvvkGNze3h67fuXNn7O3t2bhxIzNmzGDFihW/u72yZcty+PBhAA4cOEB0dDSZmZnExcWxbds2Ro4cSUREBHXr1qVBgwb07duXH374wbz9nJwcHBwccHFxKfC+JiYm0qVLF7788ktq1qxpLuvcuTO1a9dm8ODBbN26lTNnzvDtt99SokTRjBtJTk5m8ODBtG7dmpEjRxZJm4WRlJREly5dCA8PN++/iIiIiIg8nhLlIiIiIjZu6dKlLFiwgHXr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tQKga9eurFixgm3bttGsWbNC7t19zz77rHlUfq46depw7NixPGURERHmGxRFKSEhgQEDBtC+ffsCJckh740SgMmTJ9OsWTM6duxo/rz88ssPjNz/7Y2F//u//8Pe3j7fTx+IiIiIiIgS5SIiImJD6tSpA8DRo0fNZb/++iuvv/46p0+ftppt5PL392fPnj3s2bOHpk2bUq5cuUK3dffuXUJCQnjllVfMo8xzxcfHFypRfvPmTWJjY/nll1+oWbMm7u7uD627atUqbt26xZkzZ/j5559ZsGABAwYMwMnJCYB+/fpx+vRpIiIiHjuX+uO88sorbNiw4YGyAwcOcO7cOeB+f+3cufOJk/K/deXKFfr3709gYCBBQUEFXv+3iXJXV1f69+/Pd999Z/5MmzbtsVO5bNy4kVdeeeWB9kRERERE5NE09YqIiIjYjBo1atCxY0dmz56N0WjkqaeeIiQkhKpVq/Liiy9azTZydezYkblz55Kens6rr75a6HZu377N8OHDuXPnDhMmTMizLCkpidu3b+drqg+j0Uh2djYlS5bE19eXH374gapVq3Lo0KE8o9RzcnIwmUzmhG7fvn2pVasWBw8eZOjQoaSlpeHq6srp06epX78+d+/excnJCZPJRHJy8iMT7vnRq1cv/P39OXXqFL6+vgC0bt2axo0bM3DgQNq0acOBAwfw8PCgd+/ehd7Ob0VGRjJixAimTp1a6JH/v51fPTk5ma+//pqwsDBzWU5ODqVKlXpkG1evXuU///kP69atK1QMIiIiIiLFlRLlIiIiYlPmzJnDvHnzmDNnDjk5OTRq1IiZM2eaRy9byzbg/tzaDRo04NixYyxevLjA6xuNRrZv3878+fO5desWoaGh5pHjUVFRbN26lSNHjlCiRAnq1av3yHays7OB+yOmO3To8NA6x44d4+uvvzb/PWvWLHNyv2TJktSqVYtNmzZRpkwZ5s+fz48//sixY8dISEggODiYbt26ERMTQ2BgIEuXLv3deH6Pq6srU6dOZeLEiaxatQp3d3cMBgNLlizhk08+Yd++fTRp0oQJEyY8MLL+Sfz73/9mxowZNG3atNBtGI3GPH/PnTv3kXUTEhI4f/48N27cME+9kpGRwdtvv82bb75Z6BeiioiIiIgUVwbTb4euiIiIiEihGY3GBxKe/83Ozi7fc58/qSNHjvDGG2/w4osvMm3aNKpUqWJelpGRQdu2balatSp/+9vfaNOmzSPb+fDDDzl16hTLli3jwoULODo6/u60HllZWVSoUAEPDw/27t3Lt99+y969e+nSpQtvv/02ZcuW5cqVK8yYMYODBw8yYcIEAgMDSU1NZdiwYZw4cYJZs2bRtWvXQu/7vHnzuHHjBrNnzy50G3+2Cxcu0Llz53y9zPPSpUv4+/tTs2ZNFi9ejLe3NwsXLiQ2Npa5c+dq2hURERERkQJSolxERESkCE2ZMoVvv/32kcsDAwN55513/rR4Ll26xNNPP/1EbfzjH//g/PnzrF69usDrRkVFsXnzZl577TW8vb3N5VlZWSxatIiePXtStWpVc3lOTg6rV6+md+/eODg4FDpmk8lESkoKbm5uhW7jf116ejqlS5fO87e9vT0lS5a0YFQiIiIiItZJiXIRERGRInTt2jVu3779yOXu7u54eXn9iRGJiIiIiIjI4yhRLiIiIiIiIiIiIiLF2p8zQaaIiIiIiIiIiIiIyP8oJcpFREREREREREREpFhTolxEREREREREREREijUlykVERERERERERESkWFOiXERERERERERERESKNSXKRURERERERERERKRYU6JcRERERERERERERIo1JcpFREREREREREREpFj7f0KofOQ+kD+UAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from scipy.stats import spearmanr\n", + "from tqdm import tqdm # 用于显示进度条 (可选)\n", + "\n", + "# 设置 Matplotlib/Seaborn 样式 (可选)\n", + "sns.set_theme(style=\"whitegrid\")\n", + "plt.rcParams['font.sans-serif'] = ['SimHei'] # 或者其他支持中文的字体\n", + "plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题\n", + "\n", + "def analyze_score_performance_2d(score_df: pd.DataFrame,\n", + " score_col: str = 'score',\n", + " label_col: str = 'label',\n", + " condition1_col: str = 'circ_mv',\n", + " condition2_col: str = 'future_return',\n", + " n_bins: int = 100,\n", + " min_samples_per_bin: int = 30): # 每个格子最少样本数\n", + " \"\"\"\n", + " 分析 score 在两个条件下 (如市值、未来收益) 的二维分箱表现。\n", + "\n", + " Args:\n", + " score_df (pd.DataFrame): 包含分数、标签和条件列的 DataFrame。\n", + " score_col (str): 预测分数所在的列名。\n", + " label_col (str): 目标标签所在的列名 (应为数值或可排序类别)。\n", + " condition1_col (str): 第一个条件列名 (例如 'circ_mv')。\n", + " condition2_col (str): 第二个条件列名 (例如 'future_return')。\n", + " n_bins (int): 每个条件划分的箱数 (分位数数量)。\n", + " min_samples_per_bin (int): 计算指标所需的最小样本数,小于此数目的格子结果将被屏蔽。\n", + "\n", + " Returns:\n", + " tuple: 包含 (performance_pivot, count_pivot, fig)\n", + " performance_pivot: 以二维分箱为索引/列的 Spearman 相关系数矩阵。\n", + " count_pivot: 每个二维分箱的样本数量矩阵。\n", + " fig: 生成的热力图 Matplotlib Figure 对象。\n", + " \"\"\"\n", + " print(f\"开始分析 '{score_col}' 在 '{condition1_col}' 和 '{condition2_col}' 下的表现...\")\n", + "\n", + " required_cols = [score_col, label_col, condition1_col, condition2_col]\n", + " if not all(col in score_df.columns for col in required_cols):\n", + " missing = [col for col in required_cols if col not in score_df.columns]\n", + " raise ValueError(f\"输入 DataFrame 缺少必需列: {missing}\")\n", + "\n", + " # --- 1. 数据准备和清洗 ---\n", + " print(\"准备数据,处理 NaN 值...\")\n", + " # 只保留需要的列,并移除包含 NaN 的行,避免影响分箱和计算\n", + " analysis_df = score_df[required_cols].dropna().copy()\n", + " n_original = len(score_df)\n", + " n_after_drop = len(analysis_df)\n", + " print(f\"原始数据 {n_original} 行,移除 NaN 后剩余 {n_after_drop} 行用于分析。\")\n", + "\n", + " if n_after_drop < min_samples_per_bin * n_bins: # 检查数据量是否过少\n", + " print(f\"警告: 清理 NaN 后数据量 ({n_after_drop}) 可能不足以支持 {n_bins}x{n_bins} 的精细分箱分析。\")\n", + " if n_after_drop < min_samples_per_bin:\n", + " print(\"错误: 有效数据过少,无法进行分析。\")\n", + " return None, None, None\n", + "\n", + " # --- 2. 二维分箱 ---\n", + " print(f\"对 '{condition1_col}' 和 '{condition2_col}' 进行 {n_bins} 分位数分箱...\")\n", + " bin1_col = f'{condition1_col}_bin'\n", + " bin2_col = f'{condition2_col}_bin'\n", + "\n", + " try:\n", + " # 使用 qcut 进行分位数分箱,labels=False 返回 0 到 n_bins-1 的整数标签\n", + " # duplicates='drop' 会丢弃导致边界不唯一的重复值所在的箱子,可能导致某些箱号缺失\n", + " # 对于可视化,这通常可以接受,但如果需要严格的等分,需先 rank\n", + " analysis_df[bin1_col] = pd.qcut(analysis_df[condition1_col], q=n_bins, labels=False, duplicates='drop')\n", + " analysis_df[bin2_col] = pd.qcut(analysis_df[condition2_col], q=n_bins, labels=False, duplicates='drop')\n", + " except Exception as e:\n", + " print(f\"错误: 分箱失败,请检查数据分布或减少 n_bins。错误信息: {e}\")\n", + " # 可以尝试先 rank 再 qcut\n", + " # analysis_df[bin1_col] = pd.qcut(analysis_df[condition1_col].rank(method='first'), q=n_bins, labels=False, duplicates='raise')\n", + " # analysis_df[bin2_col] = pd.qcut(analysis_df[condition2_col].rank(method='first'), q=n_bins, labels=False, duplicates='raise')\n", + " return None, None, None\n", + "\n", + " # --- 3. 分组计算表现指标 (Spearman Rank IC) ---\n", + " print(\"按二维分箱分组计算 Spearman Rank IC...\")\n", + "\n", + " def safe_spearmanr(x, y):\n", + " \"\"\"安全计算 Spearman 相关性,处理数据量过少的情况\"\"\"\n", + " if len(x) < max(2, min_samples_per_bin): # 要求至少有 min_samples_per_bin 个点才计算\n", + " return np.nan\n", + " corr, p_value = spearmanr(x, y)\n", + " return corr if not np.isnan(corr) else np.nan # 确保返回 NaN 而不是 None 或其他\n", + "\n", + " # 按两个分箱列分组\n", + " grouped = analysis_df.groupby([bin1_col, bin2_col])\n", + "\n", + " # 计算每个格子的 Spearman 相关系数\n", + " # apply 可能较慢,但计算相关性通常需要 apply\n", + " performance_series = grouped.apply(lambda sub: safe_spearmanr(sub[score_col], sub[label_col]))\n", + "\n", + " # 计算每个格子的样本数量\n", + " count_series = grouped.size()\n", + "\n", + " # --- 4. 结果整理成 Pivot Table (用于绘图) ---\n", + " print(\"整理结果用于绘图...\")\n", + " try:\n", + " # 将 performance_series 转换成二维矩阵\n", + " # index 为 condition1_bin, columns 为 condition2_bin\n", + " performance_pivot = performance_series.unstack(level=0) # level=0 对应第一个 groupby key (bin1_col)\n", + " count_pivot = count_series.unstack(level=0)\n", + "\n", + " # 可选:按列和索引排序,确保顺序正确\n", + " performance_pivot = performance_pivot.sort_index(axis=0).sort_index(axis=1)\n", + " count_pivot = count_pivot.sort_index(axis=0).sort_index(axis=1)\n", + " \n", + " print(performance_pivot)\n", + "\n", + " except Exception as e:\n", + " print(f\"错误: 无法将结果转换为二维矩阵,可能因为分箱不均匀或数据问题: {e}\")\n", + " return None, None, None\n", + "\n", + " # --- 5. 可视化:绘制热力图 ---\n", + " print(\"生成热力图...\")\n", + " fig, ax = plt.subplots(figsize=(16, 12)) # 调整图像大小\n", + "\n", + " # 使用 count_pivot 创建一个 mask,屏蔽掉样本量过小的格子\n", + " mask = count_pivot < min_samples_per_bin\n", + "\n", + " # 绘制热力图\n", + " sns.heatmap(performance_pivot,\n", + " annot=False, # 100x100 个格子加注释会太密集\n", + " fmt=\".2f\",\n", + " cmap=\"viridis\", # 选择颜色映射, 'viridis', 'coolwarm', 'RdYlGn' 等都不错\n", + " linewidths=.5,\n", + " linecolor='lightgray',\n", + " # mask=mask, # 应用 mask\n", + " ax=ax,\n", + " cbar_kws={'label': f'Spearman Rank IC ({score_col} vs {label_col})'}) # 颜色条标签\n", + "\n", + " # 设置标题和轴标签\n", + " ax.set_title(f'{score_col} 表现分析 (Rank IC vs {label_col})\\n基于 {condition1_col} 和 {condition2_col} {n_bins}x{n_bins} 分箱', fontsize=16)\n", + " ax.set_xlabel(f'{condition1_col} 分位数 (0 -> 高)', fontsize=12)\n", + " ax.set_ylabel(f'{condition2_col} 分位数 (0 -> 高)', fontsize=12)\n", + "\n", + " # 可选:调整刻度标签,避免显示所有 100 个刻度\n", + " if n_bins > 20:\n", + " tick_interval = n_bins // 10 # 大约显示 10 个刻度\n", + " ax.set_xticks(np.arange(0, n_bins, tick_interval) + 0.5)\n", + " ax.set_yticks(np.arange(0, n_bins, tick_interval) + 0.5)\n", + " ax.set_xticklabels(np.arange(0, n_bins, tick_interval))\n", + " ax.set_yticklabels(np.arange(0, n_bins, tick_interval))\n", + "\n", + " plt.xticks(rotation=45, ha='right')\n", + " plt.yticks(rotation=0)\n", + " plt.tight_layout() # 调整布局\n", + "\n", + " print(\"分析完成。\")\n", + " return performance_pivot, count_pivot, fig\n", + "\n", + "# --- 如何使用 ---\n", + "# 假设你的包含预测结果和所需列的 DataFrame 是 final_predictions_df\n", + "# 确保它包含 'score', 'label', 'circ_mv', 'future_return'\n", + "\n", + "# # 示例调用 (你需要有实际的 score_df)\n", + "try:\n", + " # 确保数据类型正确\n", + " cols_to_numeric = ['score', 'label', 'circ_mv', 'future_return']\n", + " for col in cols_to_numeric:\n", + " if col in score_df.columns:\n", + " score_df[col] = pd.to_numeric(score_df[col], errors='coerce')\n", + "\n", + " # 调用分析函数\n", + " performance_matrix, count_matrix, heatmap_figure = analyze_score_performance_2d(\n", + " score_df,\n", + " n_bins=100, # 你要求的100分箱\n", + " min_samples_per_bin=50 # 每个格子至少需要50个样本才显示IC,可以调整\n", + " )\n", + "\n", + " # 显示图像\n", + " if heatmap_figure:\n", + " plt.show()\n", + "\n", + " # 可以查看具体的 performance_matrix 和 count_matrix\n", + " # print(\"\\nPerformance Matrix (Spearman IC):\")\n", + " # print(performance_matrix)\n", + " # print(\"\\nCount Matrix:\")\n", + " # print(count_matrix)\n", + "\n", + "except ValueError as ve:\n", + " print(f\"数据错误: {ve}\")\n", + "except Exception as e:\n", + " print(f\"发生未知错误: {e}\")" + ] } ], "metadata": { diff --git a/main/train/catboost_info/catboost_training.json b/main/train/catboost_info/catboost_training.json index 21d11a3..b72fdf8 100644 --- a/main/train/catboost_info/catboost_training.json +++ b/main/train/catboost_info/catboost_training.json @@ -1,122 +1,188 @@ { "meta":{"test_sets":["test"],"test_metrics":[{"best_value":"Max","name":"Precision"},{"best_value":"Min","name":"CrossEntropy"}],"learn_metrics":[{"best_value":"Max","name":"Precision"},{"best_value":"Min","name":"CrossEntropy"}],"launch_mode":"Train","parameters":"","iteration_count":500,"learn_sets":["learn"],"name":"experiment"}, "iterations":[ -{"learn":[0.6421052632,0.6541943716],"iteration":0,"passed_time":0.09888582676,"remaining_time":49.34402755,"test":[0.12,0.6594913737]}, -{"learn":[0.8571428571,0.6220139285],"iteration":1,"passed_time":0.126637086,"remaining_time":31.5326344,"test":[0,0.6304362522]}, -{"learn":[0.9473684211,0.5916510322],"iteration":2,"passed_time":0.2237985054,"remaining_time":37.07595239,"test":[0,0.6035512695]}, -{"learn":[0.9142857143,0.5644849167],"iteration":3,"passed_time":0.3187122894,"remaining_time":39.52032388,"test":[0.3333333333,0.5795352105]}, -{"learn":[0.890625,0.5410338375],"iteration":4,"passed_time":0.4186655504,"remaining_time":41.44788949,"test":[0.5263157895,0.5591463216]}, -{"learn":[0.8,0.5196276588],"iteration":5,"passed_time":0.5071002677,"remaining_time":41.75125537,"test":[0.3333333333,0.540188151]}, -{"learn":[0.8518518519,0.5010221829],"iteration":6,"passed_time":0.5963597315,"remaining_time":42.00076395,"test":[0.2222222222,0.5237671441]}, -{"learn":[0.8764044944,0.4849534885],"iteration":7,"passed_time":0.6891834997,"remaining_time":42.38478523,"test":[0.3333333333,0.5084826931]}, -{"learn":[0.8804347826,0.4703366289],"iteration":8,"passed_time":0.7791012236,"remaining_time":42.50430009,"test":[0.3125,0.4955966797]}, -{"learn":[0.8875,0.457428825],"iteration":9,"passed_time":0.8683227865,"remaining_time":42.54781654,"test":[0.25,0.4841406793]}, -{"learn":[0.9358974359,0.4457376255],"iteration":10,"passed_time":0.9607379526,"remaining_time":42.70916898,"test":[0.1666666667,0.4736386176]}, -{"learn":[0.8846153846,0.4359375713],"iteration":11,"passed_time":1.015636816,"remaining_time":41.30256385,"test":[0,0.4643907878]}, -{"learn":[0.8510638298,0.4264152672],"iteration":12,"passed_time":1.109906505,"remaining_time":41.57880524,"test":[0.125,0.4563280165]}, -{"learn":[0.8764044944,0.4182715557],"iteration":13,"passed_time":1.200065308,"remaining_time":41.65940996,"test":[0.5555555556,0.4490027941]}, -{"learn":[0.9024390244,0.4110272796],"iteration":14,"passed_time":1.292970984,"remaining_time":41.80606181,"test":[0.7142857143,0.4425872938]}, -{"learn":[0.8735632184,0.4046110501],"iteration":15,"passed_time":1.384038231,"remaining_time":41.86715648,"test":[0.6,0.4368164334]}, -{"learn":[0.8953488372,0.3980741403],"iteration":16,"passed_time":1.476976894,"remaining_time":41.96352,"test":[0.75,0.4317668457]}, -{"learn":[0.8918918919,0.3925273723],"iteration":17,"passed_time":1.572830565,"remaining_time":42.11690735,"test":[0.8,0.4277447374]}, -{"learn":[0.8888888889,0.3880111628],"iteration":18,"passed_time":1.668612368,"remaining_time":42.24223941,"test":[0.3846153846,0.4239844835]}, -{"learn":[0.8876404494,0.383472642],"iteration":19,"passed_time":1.76095623,"remaining_time":42.26294953,"test":[0.4615384615,0.4201444227]}, -{"learn":[0.8850574713,0.3796266965],"iteration":20,"passed_time":1.854194923,"remaining_time":42.29330325,"test":[0.4166666667,0.416756429]}, -{"learn":[0.9,0.3761398694],"iteration":21,"passed_time":1.946033794,"remaining_time":42.28200698,"test":[0.3333333333,0.4137484809]}, -{"learn":[0.8941176471,0.3727471701],"iteration":22,"passed_time":2.038063238,"remaining_time":42.26765933,"test":[0.4285714286,0.4109760471]}, -{"learn":[0.8795180723,0.3698476705],"iteration":23,"passed_time":2.134703485,"remaining_time":42.33828578,"test":[0.375,0.4086826986]}, -{"learn":[0.8791208791,0.366884231],"iteration":24,"passed_time":2.228319674,"remaining_time":42.3380738,"test":[0.5,0.4065253906]}, -{"learn":[0.8736842105,0.3639221459],"iteration":25,"passed_time":2.323324606,"remaining_time":42.35599473,"test":[0.5,0.4043982476]}, -{"learn":[0.908045977,0.3615422916],"iteration":26,"passed_time":2.415464695,"remaining_time":42.31536299,"test":[0.375,0.4028764106]}, -{"learn":[0.8865979381,0.3594712663],"iteration":27,"passed_time":2.507713983,"remaining_time":42.27289286,"test":[0.4285714286,0.4015186632]}, -{"learn":[0.9120879121,0.3576372534],"iteration":28,"passed_time":2.598539037,"remaining_time":42.20385816,"test":[0.5,0.3997085232]}, -{"learn":[0.9318181818,0.3557858833],"iteration":29,"passed_time":2.690970625,"remaining_time":42.1585398,"test":[0.5,0.3982244466]}, -{"learn":[0.9213483146,0.3540102147],"iteration":30,"passed_time":2.78166975,"remaining_time":42.08397138,"test":[0.4285714286,0.3970369737]}, -{"learn":[0.9157894737,0.3527535855],"iteration":31,"passed_time":2.871692482,"remaining_time":41.99850256,"test":[0.375,0.3956321886]}, -{"learn":[0.9215686275,0.3512465785],"iteration":32,"passed_time":2.9635759,"remaining_time":41.93908925,"test":[0.375,0.3947504883]}, -{"learn":[0.9278350515,0.3498231139],"iteration":33,"passed_time":3.055573818,"remaining_time":41.87933527,"test":[0.375,0.3937069499]}, -{"learn":[0.9142857143,0.3482837805],"iteration":34,"passed_time":3.145938705,"remaining_time":41.7960428,"test":[0.3333333333,0.3932520888]}, -{"learn":[0.9278350515,0.347266124],"iteration":35,"passed_time":3.23743666,"remaining_time":41.7269614,"test":[0.3333333333,0.3928204481]}, -{"learn":[0.9304347826,0.3461889827],"iteration":36,"passed_time":3.328402438,"remaining_time":41.65000888,"test":[0.3684210526,0.3921121691]}, -{"learn":[0.9333333333,0.3452881929],"iteration":37,"passed_time":3.420557405,"remaining_time":41.58677687,"test":[0.3333333333,0.3916260851]}, -{"learn":[0.9327731092,0.3436992116],"iteration":38,"passed_time":3.515182057,"remaining_time":41.55125457,"test":[0.3333333333,0.3911342231]}, -{"learn":[0.9268292683,0.3429076257],"iteration":39,"passed_time":3.605384569,"remaining_time":41.46192254,"test":[0.380952381,0.3904462891]}, -{"learn":[0.92,0.3419519488],"iteration":40,"passed_time":3.698595765,"remaining_time":41.40623064,"test":[0.380952381,0.390167806]}, -{"learn":[0.9206349206,0.3410037922],"iteration":41,"passed_time":3.788896896,"remaining_time":41.31701854,"test":[0.3846153846,0.3895910102]}, -{"learn":[0.9236641221,0.3402700516],"iteration":42,"passed_time":3.879475838,"remaining_time":41.23070833,"test":[0.4137931034,0.3890837131]}, -{"learn":[0.928057554,0.3396138301],"iteration":43,"passed_time":3.968922613,"remaining_time":41.13247072,"test":[0.4137931034,0.3885024414]}, -{"learn":[0.9416058394,0.3387833599],"iteration":44,"passed_time":4.062382685,"remaining_time":41.0752027,"test":[0.4137931034,0.3879628092]}, -{"learn":[0.9432624113,0.337743107],"iteration":45,"passed_time":4.152949311,"remaining_time":40.98780407,"test":[0.4,0.3877528754]}, -{"learn":[0.9371069182,0.3372271328],"iteration":46,"passed_time":4.245675297,"remaining_time":40.92108318,"test":[0.3636363636,0.3875401747]}, -{"learn":[0.935483871,0.3365873061],"iteration":47,"passed_time":4.337323988,"remaining_time":40.84313422,"test":[0.3513513514,0.3873875597]}, -{"learn":[0.9320987654,0.33607568],"iteration":48,"passed_time":4.426951095,"remaining_time":40.74601926,"test":[0.3488372093,0.3871630859]}, -{"learn":[0.9272727273,0.3350486856],"iteration":49,"passed_time":4.519590583,"remaining_time":40.67631525,"test":[0.3863636364,0.3873189833]}, -{"learn":[0.9226190476,0.3345484646],"iteration":50,"passed_time":4.610351299,"remaining_time":40.58917124,"test":[0.3913043478,0.3872931315]}, -{"learn":[0.9341317365,0.3338950944],"iteration":51,"passed_time":4.703144315,"remaining_time":40.51939718,"test":[0.3571428571,0.3872769097]}, -{"learn":[0.9281437126,0.3327000884],"iteration":52,"passed_time":4.795113502,"remaining_time":40.44180633,"test":[0.3720930233,0.387190701]}, -{"learn":[0.9180327869,0.33217777],"iteration":53,"passed_time":4.891765914,"remaining_time":40.40236292,"test":[0.3617021277,0.3868662923]}, -{"learn":[0.9189189189,0.331515846],"iteration":54,"passed_time":4.985078412,"remaining_time":40.33381624,"test":[0.3863636364,0.3872360297]}, -{"learn":[0.9206349206,0.3308074105],"iteration":55,"passed_time":5.078761043,"remaining_time":40.2673197,"test":[0.3863636364,0.3871567383]}, -{"learn":[0.9214659686,0.3296911354],"iteration":56,"passed_time":5.1728772,"remaining_time":40.20323859,"test":[0.3720930233,0.3870482042]}, -{"learn":[0.9162561576,0.3292216726],"iteration":57,"passed_time":5.26435142,"remaining_time":40.11798841,"test":[0.3695652174,0.3868121745]}, -{"learn":[0.9099526066,0.3284372505],"iteration":58,"passed_time":5.358146909,"remaining_time":40.04987774,"test":[0.3617021277,0.3867534451]}, -{"learn":[0.9107981221,0.3277626383],"iteration":59,"passed_time":5.450250335,"remaining_time":39.96850245,"test":[0.3617021277,0.3865920139]}, -{"learn":[0.9128440367,0.3271785541],"iteration":60,"passed_time":5.54264137,"remaining_time":39.88884527,"test":[0.3333333333,0.3864595269]}, -{"learn":[0.9132420091,0.3262657177],"iteration":61,"passed_time":5.634435475,"remaining_time":39.80456029,"test":[0.3846153846,0.3865724826]}, -{"learn":[0.9144144144,0.3253470717],"iteration":62,"passed_time":5.725619393,"remaining_time":39.71580436,"test":[0.3859649123,0.3864565701]}, -{"learn":[0.9196428571,0.3247234974],"iteration":63,"passed_time":5.817205759,"remaining_time":39.62971423,"test":[0.4035087719,0.386326199]}, -{"learn":[0.9203539823,0.3235557567],"iteration":64,"passed_time":5.909563563,"remaining_time":39.54861769,"test":[0.4230769231,0.3862506782]}, -{"learn":[0.9166666667,0.3228013444],"iteration":65,"passed_time":6.000892563,"remaining_time":39.46041473,"test":[0.4230769231,0.3862313368]}, -{"learn":[0.9181034483,0.3222814496],"iteration":66,"passed_time":6.098385127,"remaining_time":39.41195164,"test":[0.4230769231,0.385976888]}, -{"learn":[0.9166666667,0.321691948],"iteration":67,"passed_time":6.192261577,"remaining_time":39.33907355,"test":[0.387755102,0.386124566]}, -{"learn":[0.9198312236,0.3209086665],"iteration":68,"passed_time":6.29036754,"remaining_time":39.29200594,"test":[0.38,0.3858969184]}, -{"learn":[0.9193548387,0.3202570783],"iteration":69,"passed_time":6.387468067,"remaining_time":39.23730384,"test":[0.38,0.3858519151]}, -{"learn":[0.9227642276,0.3199307852],"iteration":70,"passed_time":6.480235344,"remaining_time":39.15522482,"test":[0.38,0.3859381239]}, -{"learn":[0.9243027888,0.3194535527],"iteration":71,"passed_time":6.573059775,"remaining_time":39.07318866,"test":[0.387755102,0.3860583496]}, -{"learn":[0.9221789883,0.3188831547],"iteration":72,"passed_time":6.66448866,"remaining_time":38.98269394,"test":[0.3725490196,0.3857856988]}, -{"learn":[0.9227799228,0.3182035527],"iteration":73,"passed_time":6.754729604,"remaining_time":38.88533529,"test":[0.3846153846,0.3859902344]}, -{"learn":[0.9236641221,0.317120495],"iteration":74,"passed_time":6.846888188,"remaining_time":38.79903307,"test":[0.3773584906,0.3859985623]}, -{"learn":[0.9201520913,0.3168538293],"iteration":75,"passed_time":6.935951973,"remaining_time":38.69531101,"test":[0.3818181818,0.3859373101]}, -{"learn":[0.9210526316,0.3163409557],"iteration":76,"passed_time":7.02723699,"remaining_time":38.60417203,"test":[0.3818181818,0.3858856608]}, -{"learn":[0.921641791,0.3156599994],"iteration":77,"passed_time":7.122336557,"remaining_time":38.53366701,"test":[0.3818181818,0.386057373]}, -{"learn":[0.9239130435,0.3152008368],"iteration":78,"passed_time":7.213390385,"remaining_time":38.44097914,"test":[0.4032258065,0.3860869683]}, -{"learn":[0.9241877256,0.3143367929],"iteration":79,"passed_time":7.306290029,"remaining_time":38.35802265,"test":[0.393442623,0.3860341254]}, -{"learn":[0.9222614841,0.3138722842],"iteration":80,"passed_time":7.39447083,"remaining_time":38.25041084,"test":[0.3870967742,0.3861741265]}, -{"learn":[0.9219858156,0.3130961665],"iteration":81,"passed_time":7.490548261,"remaining_time":38.1835265,"test":[0.380952381,0.3866146918]}, -{"learn":[0.9195804196,0.3126652315],"iteration":82,"passed_time":7.581114772,"remaining_time":38.08825132,"test":[0.390625,0.3866864692]}, -{"learn":[0.9206896552,0.3123047231],"iteration":83,"passed_time":7.672097253,"remaining_time":37.9951483,"test":[0.3823529412,0.3868192817]}, -{"learn":[0.9238754325,0.3112267621],"iteration":84,"passed_time":7.767249442,"remaining_time":37.92245316,"test":[0.3880597015,0.3866136882]}, -{"learn":[0.9233333333,0.31078542],"iteration":85,"passed_time":7.857622723,"remaining_time":37.82623032,"test":[0.4078947368,0.3865292697]}, -{"learn":[0.9248366013,0.310220974],"iteration":86,"passed_time":7.951741756,"remaining_time":37.74792351,"test":[0.4230769231,0.3863948568]}, -{"learn":[0.9233226837,0.3097435989],"iteration":87,"passed_time":8.041119236,"remaining_time":37.64705824,"test":[0.4197530864,0.3865127767]}, -{"learn":[0.9242902208,0.3090203724],"iteration":88,"passed_time":8.132233142,"remaining_time":37.5544699,"test":[0.4197530864,0.3865546061]}, -{"learn":[0.9242902208,0.3086560861],"iteration":89,"passed_time":8.223758518,"remaining_time":37.4637888,"test":[0.4197530864,0.3864517144]}, -{"learn":[0.9252336449,0.3080292327],"iteration":90,"passed_time":8.314563822,"remaining_time":37.36985278,"test":[0.4024390244,0.386520752]}, -{"learn":[0.9237804878,0.3076218208],"iteration":91,"passed_time":8.405134637,"remaining_time":37.27494491,"test":[0.4,0.3865970052]}, -{"learn":[0.9244712991,0.3075668981],"iteration":92,"passed_time":8.431468271,"remaining_time":36.8990063,"test":[0.4,0.3865461155]}, -{"learn":[0.9249249249,0.3071175368],"iteration":93,"passed_time":8.526979466,"remaining_time":36.82929429,"test":[0.4,0.3866591254]}, -{"learn":[0.9253731343,0.3066006002],"iteration":94,"passed_time":8.621315637,"remaining_time":36.75402982,"test":[0.4022988506,0.3867526584]}, -{"learn":[0.9262536873,0.3062844648],"iteration":95,"passed_time":8.713016115,"remaining_time":36.66727615,"test":[0.4175824176,0.3869412435]}, -{"learn":[0.9237536657,0.3059603815],"iteration":96,"passed_time":8.803271277,"remaining_time":36.57441572,"test":[0.4222222222,0.3870782606]}, -{"learn":[0.9217391304,0.3052842011],"iteration":97,"passed_time":8.896346597,"remaining_time":36.49317686,"test":[0.4183673469,0.3872464464]}, -{"learn":[0.9340974212,0.3046106937],"iteration":98,"passed_time":8.990842118,"remaining_time":36.41745141,"test":[0.4183673469,0.3871889377]}, -{"learn":[0.9344729345,0.3043589259],"iteration":99,"passed_time":9.086754258,"remaining_time":36.34701703,"test":[0.4329896907,0.387300944]}, -{"learn":[0.9355742297,0.3040324903],"iteration":100,"passed_time":9.176603082,"remaining_time":36.25212505,"test":[0.4270833333,0.3874012316]}, -{"learn":[0.9364640884,0.3036740491],"iteration":101,"passed_time":9.267603214,"remaining_time":36.16182431,"test":[0.4226804124,0.387583686]}, -{"learn":[0.9369863014,0.3032366632],"iteration":102,"passed_time":9.363128189,"remaining_time":36.0889504,"test":[0.4141414141,0.3879282498]}, -{"learn":[0.935483871,0.3026225693],"iteration":103,"passed_time":9.470477606,"remaining_time":36.06066473,"test":[0.4141414141,0.3878271484]}, -{"learn":[0.932642487,0.3020944058],"iteration":104,"passed_time":9.563129108,"remaining_time":35.97558093,"test":[0.387755102,0.387887424]}, -{"learn":[0.9333333333,0.3018100978],"iteration":105,"passed_time":9.654341533,"remaining_time":35.88500532,"test":[0.4257425743,0.3880032281]}, -{"learn":[0.9335038363,0.3012678918],"iteration":106,"passed_time":9.746438932,"remaining_time":35.79766823,"test":[0.4285714286,0.3881157769]}, -{"learn":[0.9248120301,0.3006216497],"iteration":107,"passed_time":9.839507471,"remaining_time":35.71376786,"test":[0.41,0.3882778863]}, -{"learn":[0.9259259259,0.3002269617],"iteration":108,"passed_time":9.933260322,"remaining_time":35.632154,"test":[0.40625,0.3884315592]}, -{"learn":[0.9270072993,0.2997753193],"iteration":109,"passed_time":10.02626052,"remaining_time":35.54765093,"test":[0.4174757282,0.3883866102]}, -{"learn":[0.9270072993,0.2989820227],"iteration":110,"passed_time":10.12042492,"remaining_time":35.46707472,"test":[0.4,0.3882190755]}, -{"learn":[0.928057554,0.2985569329],"iteration":111,"passed_time":10.20997195,"remaining_time":35.37025998,"test":[0.4117647059,0.3881155599]}, -{"learn":[0.9282296651,0.2982289825],"iteration":112,"passed_time":10.30106981,"remaining_time":35.27888509,"test":[0.4077669903,0.3880919868]}, -{"learn":[0.9263657957,0.2976258126],"iteration":113,"passed_time":10.39835662,"remaining_time":35.20847066,"test":[0.4245283019,0.388188151]}, -{"learn":[0.9270588235,0.2971854328],"iteration":114,"passed_time":10.48998057,"remaining_time":35.11863062,"test":[0.4509803922,0.3881395128]}, -{"learn":[0.9270588235,0.2968307339],"iteration":115,"passed_time":10.58192099,"remaining_time":35.02980742,"test":[0.4347826087,0.3886143934]}, -{"learn":[0.9285714286,0.2962460795],"iteration":116,"passed_time":10.67528876,"remaining_time":34.94560338,"test":[0.4226804124,0.388562066]}, -{"learn":[0.9292237443,0.2956911496],"iteration":117,"passed_time":10.76617138,"remaining_time":34.85319887,"test":[0.4387755102,0.3886107856]} +{"learn":[0.6527196653,0.6539506586],"iteration":0,"passed_time":0.1704216301,"remaining_time":85.04039341,"test":[0.3052631579,0.6606884766]}, +{"learn":[0.7857142857,0.62],"iteration":1,"passed_time":0.2950779788,"remaining_time":73.47441672,"test":[0.3103448276,0.6303273112]}, +{"learn":[0.7876106195,0.5895233377],"iteration":2,"passed_time":0.4276100571,"remaining_time":70.84073279,"test":[0.3035714286,0.6038824327]}, +{"learn":[0.8407079646,0.5620427264],"iteration":3,"passed_time":0.5542017602,"remaining_time":68.72101827,"test":[0.3333333333,0.5790144314]}, +{"learn":[0.8421052632,0.5384506159],"iteration":4,"passed_time":0.6721673662,"remaining_time":66.54456925,"test":[0.3333333333,0.5570897895]}, +{"learn":[0.8854166667,0.5166076215],"iteration":5,"passed_time":0.7938193308,"remaining_time":65.35779157,"test":[0.275862069,0.5386381836]}, +{"learn":[0.9069767442,0.4981064667],"iteration":6,"passed_time":0.9169473001,"remaining_time":64.57928842,"test":[0.2666666667,0.5219863824]}, +{"learn":[0.8910891089,0.4814881886],"iteration":7,"passed_time":1.038504212,"remaining_time":63.86800903,"test":[0.2972972973,0.5076717122]}, +{"learn":[0.8727272727,0.466400298],"iteration":8,"passed_time":1.158593073,"remaining_time":63.20768878,"test":[0.325,0.4940914171]}, +{"learn":[0.8679245283,0.4533062343],"iteration":9,"passed_time":1.278586087,"remaining_time":62.65071826,"test":[0.3333333333,0.4827998589]}, +{"learn":[0.8782608696,0.4415312072],"iteration":10,"passed_time":1.399151768,"remaining_time":62.19865587,"test":[0.3181818182,0.4726039497]}, +{"learn":[0.8740740741,0.4312919494],"iteration":11,"passed_time":1.520614059,"remaining_time":61.83830506,"test":[0.2950819672,0.4643194444]}, +{"learn":[0.8689655172,0.4220624715],"iteration":12,"passed_time":1.65168178,"remaining_time":61.87454051,"test":[0.328358209,0.4554793837]}, +{"learn":[0.8721804511,0.413855426],"iteration":13,"passed_time":1.776064504,"remaining_time":61.65481063,"test":[0.3333333333,0.4476724718]}, +{"learn":[0.8741258741,0.406276303],"iteration":14,"passed_time":1.897701386,"remaining_time":61.35901148,"test":[0.3243243243,0.4417778863]}, +{"learn":[0.8857142857,0.3991897383],"iteration":15,"passed_time":2.022444838,"remaining_time":61.17895635,"test":[0.2898550725,0.4361890734]}, +{"learn":[0.9084507042,0.3933755916],"iteration":16,"passed_time":2.145029892,"remaining_time":60.94408458,"test":[0.3529411765,0.4313453776]}, +{"learn":[0.904,0.3882018776],"iteration":17,"passed_time":2.268690386,"remaining_time":60.75048701,"test":[0.3636363636,0.4262438965]}, +{"learn":[0.9078014184,0.3829967282],"iteration":18,"passed_time":2.391550211,"remaining_time":60.54398166,"test":[0.3333333333,0.4224629449]}, +{"learn":[0.9275362319,0.3780131586],"iteration":19,"passed_time":2.516720082,"remaining_time":60.40128196,"test":[0.3580246914,0.4182514106]}, +{"learn":[0.9310344828,0.3741117915],"iteration":20,"passed_time":2.637116202,"remaining_time":60.1513648,"test":[0.325,0.4148546821]}, +{"learn":[0.9361702128,0.3698772169],"iteration":21,"passed_time":2.7655478,"remaining_time":60.08781129,"test":[0.3582089552,0.4119712728]}, +{"learn":[0.9361702128,0.3662776217],"iteration":22,"passed_time":2.893542191,"remaining_time":60.00954893,"test":[0.350877193,0.4090849338]}, +{"learn":[0.9481481481,0.3634891081],"iteration":23,"passed_time":3.022570118,"remaining_time":59.94764067,"test":[0.3620689655,0.4063893229]}, +{"learn":[0.9618320611,0.3606119554],"iteration":24,"passed_time":3.143817095,"remaining_time":59.73252481,"test":[0.3269230769,0.4043189833]}, +{"learn":[0.9562043796,0.3583850365],"iteration":25,"passed_time":3.264164702,"remaining_time":59.50823341,"test":[0.3043478261,0.4021975098]}, +{"learn":[0.958041958,0.3559227803],"iteration":26,"passed_time":3.386818987,"remaining_time":59.33205114,"test":[0.3191489362,0.4007753364]}, +{"learn":[0.9507042254,0.3537762674],"iteration":27,"passed_time":3.50884831,"remaining_time":59.14915723,"test":[0.2941176471,0.3991743435]}, +{"learn":[0.9503546099,0.3512843579],"iteration":28,"passed_time":3.636351478,"remaining_time":59.05936367,"test":[0.3529411765,0.3976788194]}, +{"learn":[0.9473684211,0.3493274549],"iteration":29,"passed_time":3.758162672,"remaining_time":58.87788186,"test":[0.34375,0.3960837131]}, +{"learn":[0.9480519481,0.3476888615],"iteration":30,"passed_time":3.878833699,"remaining_time":58.68300015,"test":[0.3442622951,0.3951454536]}, +{"learn":[0.9407894737,0.3458803675],"iteration":31,"passed_time":3.99919837,"remaining_time":58.48827616,"test":[0.3928571429,0.3936280653]}, +{"learn":[0.9426751592,0.3436222628],"iteration":32,"passed_time":4.12195062,"remaining_time":58.33184665,"test":[0.3859649123,0.3925985514]}, +{"learn":[0.9622641509,0.3419754362],"iteration":33,"passed_time":4.241224935,"remaining_time":58.12972999,"test":[0.3888888889,0.3917349718]}, +{"learn":[0.9518072289,0.3403367002],"iteration":34,"passed_time":4.361181747,"remaining_time":57.94141464,"test":[0.387755102,0.3910504015]}, +{"learn":[0.9520958084,0.3387332487],"iteration":35,"passed_time":4.483649917,"remaining_time":57.78926559,"test":[0.46,0.3901231011]}, +{"learn":[0.95,0.3373228288],"iteration":36,"passed_time":4.603690386,"remaining_time":57.60834186,"test":[0.4666666667,0.3894119737]}, +{"learn":[0.9451219512,0.3361083272],"iteration":37,"passed_time":4.722536707,"remaining_time":57.41610417,"test":[0.4285714286,0.3887729763]}, +{"learn":[0.9515151515,0.3348690907],"iteration":38,"passed_time":4.842935168,"remaining_time":57.24597724,"test":[0.4,0.388536594]}, +{"learn":[0.9553072626,0.33377502],"iteration":39,"passed_time":4.977564421,"remaining_time":57.24199084,"test":[0.4821428571,0.3876555447]}, +{"learn":[0.9516129032,0.3329283688],"iteration":40,"passed_time":5.095291287,"remaining_time":57.04240733,"test":[0.4259259259,0.3868581814]}, +{"learn":[0.9441624365,0.3318725764],"iteration":41,"passed_time":5.214816884,"remaining_time":56.8663365,"test":[0.4210526316,0.3866296929]}, +{"learn":[0.945,0.3308382043],"iteration":42,"passed_time":5.338435483,"remaining_time":56.73639572,"test":[0.4482758621,0.3860138346]}, +{"learn":[0.95,0.3292620538],"iteration":43,"passed_time":5.465617855,"remaining_time":56.64367596,"test":[0.3818181818,0.3857928331]}, +{"learn":[0.9466019417,0.3283621194],"iteration":44,"passed_time":5.58926307,"remaining_time":56.51365993,"test":[0.4,0.3855309787]}, +{"learn":[0.9468599034,0.3272893262],"iteration":45,"passed_time":5.712551007,"remaining_time":56.38039472,"test":[0.3962264151,0.3852399902]}, +{"learn":[0.9488372093,0.3261484589],"iteration":46,"passed_time":5.840725769,"remaining_time":56.29465476,"test":[0.4333333333,0.3847372504]}, +{"learn":[0.9497716895,0.3251783474],"iteration":47,"passed_time":5.966260754,"remaining_time":56.18228877,"test":[0.3846153846,0.384755995]}, +{"learn":[0.9475982533,0.3244344848],"iteration":48,"passed_time":6.087916427,"remaining_time":56.03367977,"test":[0.358490566,0.3844680718]}, +{"learn":[0.9475982533,0.323543425],"iteration":49,"passed_time":6.209089608,"remaining_time":55.88180647,"test":[0.358490566,0.3843583713]}, +{"learn":[0.9605263158,0.3229784443],"iteration":50,"passed_time":6.331174542,"remaining_time":55.73916411,"test":[0.3653846154,0.3842032064]}, +{"learn":[0.9570815451,0.3219528399],"iteration":51,"passed_time":6.457371993,"remaining_time":55.63274333,"test":[0.3653846154,0.3838373752]}, +{"learn":[0.9565217391,0.3212596231],"iteration":52,"passed_time":6.584279947,"remaining_time":55.53156861,"test":[0.3191489362,0.383723036]}, +{"learn":[0.9567099567,0.3205928875],"iteration":53,"passed_time":6.705895701,"remaining_time":55.38573116,"test":[0.3265306122,0.3835469564]}, +{"learn":[0.9608695652,0.3193251383],"iteration":54,"passed_time":6.838459636,"remaining_time":55.32935523,"test":[0.3333333333,0.3837113173]}, +{"learn":[0.9663865546,0.3186993185],"iteration":55,"passed_time":6.965939149,"remaining_time":55.22994611,"test":[0.3492063492,0.3836729058]}, +{"learn":[0.9628099174,0.3180124458],"iteration":56,"passed_time":7.087588682,"remaining_time":55.08424186,"test":[0.3442622951,0.3837430556]}, +{"learn":[0.9674796748,0.3170894161],"iteration":57,"passed_time":7.210565306,"remaining_time":54.94948043,"test":[0.380952381,0.3837650011]}, +{"learn":[0.9603174603,0.3165342011],"iteration":58,"passed_time":7.335569909,"remaining_time":54.83027678,"test":[0.4179104478,0.3837915853]}, +{"learn":[0.9619771863,0.3155287337],"iteration":59,"passed_time":7.463969063,"remaining_time":54.73577313,"test":[0.4090909091,0.383500217]}, +{"learn":[0.962962963,0.3146865733],"iteration":60,"passed_time":7.587886848,"remaining_time":54.60790699,"test":[0.4153846154,0.38315389]}, +{"learn":[0.9635036496,0.3140015896],"iteration":61,"passed_time":7.708142525,"remaining_time":54.4542972,"test":[0.4029850746,0.383358724]}, +{"learn":[0.9642857143,0.313511063],"iteration":62,"passed_time":7.824912191,"remaining_time":54.27756552,"test":[0.3943661972,0.3832910699]}, +{"learn":[0.9615384615,0.3127688398],"iteration":63,"passed_time":7.945784422,"remaining_time":54.13065638,"test":[0.4027777778,0.3833045247]}, +{"learn":[0.9612676056,0.312167149],"iteration":64,"passed_time":8.066603549,"remaining_time":53.98419298,"test":[0.4303797468,0.3834173448]}, +{"learn":[0.9620689655,0.3110078553],"iteration":65,"passed_time":8.191536296,"remaining_time":53.86555686,"test":[0.4285714286,0.3834139811]}, +{"learn":[0.9632107023,0.3105276289],"iteration":66,"passed_time":8.312480346,"remaining_time":53.72095507,"test":[0.4285714286,0.3833682997]}, +{"learn":[0.9636963696,0.3099715585],"iteration":67,"passed_time":8.432648044,"remaining_time":53.57211698,"test":[0.4186046512,0.3834855143]}, +{"learn":[0.9617834395,0.3091966882],"iteration":68,"passed_time":8.554677971,"remaining_time":53.43574211,"test":[0.4137931034,0.3837184516]}, +{"learn":[0.9692307692,0.3085731852],"iteration":69,"passed_time":8.672996662,"remaining_time":53.27697949,"test":[0.404494382,0.3835157335]}, +{"learn":[0.9607250755,0.3076873289],"iteration":70,"passed_time":8.798956841,"remaining_time":53.16552796,"test":[0.4090909091,0.3835523275]}, +{"learn":[0.9643916914,0.3061730868],"iteration":71,"passed_time":8.924453169,"remaining_time":53.05091606,"test":[0.4137931034,0.3835948351]}, +{"learn":[0.9591836735,0.3057069029],"iteration":72,"passed_time":9.041490202,"remaining_time":52.88652488,"test":[0.4090909091,0.3834436578]}, +{"learn":[0.9548022599,0.3049678518],"iteration":73,"passed_time":9.165797079,"remaining_time":52.76526427,"test":[0.4137931034,0.383366428]}, +{"learn":[0.9582172702,0.3040258967],"iteration":74,"passed_time":9.291281678,"remaining_time":52.65059617,"test":[0.4,0.3833662109]}, +{"learn":[0.958677686,0.3035014399],"iteration":75,"passed_time":9.408687289,"remaining_time":52.49057119,"test":[0.4210526316,0.3832851291]}, +{"learn":[0.9568733154,0.3029796561],"iteration":76,"passed_time":9.528549381,"remaining_time":52.3451479,"test":[0.4141414141,0.3835284288]}, +{"learn":[0.9572192513,0.3022192917],"iteration":77,"passed_time":9.661554109,"remaining_time":52.27148505,"test":[0.4537037037,0.3835838759]}, +{"learn":[0.9603174603,0.3015648167],"iteration":78,"passed_time":9.78353326,"remaining_time":52.13756332,"test":[0.4545454545,0.3836141493]}, +{"learn":[0.9557291667,0.3011355925],"iteration":79,"passed_time":9.907809037,"remaining_time":52.01599745,"test":[0.4587155963,0.3835327148]}, +{"learn":[0.9567430025,0.300810333],"iteration":80,"passed_time":10.03221249,"remaining_time":51.89502513,"test":[0.4818181818,0.3835458442]}, +{"learn":[0.9573934837,0.3003533089],"iteration":81,"passed_time":10.15267684,"remaining_time":51.75388927,"test":[0.4821428571,0.3835291612]}, +{"learn":[0.9580246914,0.3000302235],"iteration":82,"passed_time":10.27560952,"remaining_time":51.62565263,"test":[0.4774774775,0.3835062391]}, +{"learn":[0.9581280788,0.2995648951],"iteration":83,"passed_time":10.40172755,"remaining_time":51.51331738,"test":[0.4869565217,0.3834068197]}, +{"learn":[0.9608801956,0.2991294337],"iteration":84,"passed_time":10.52954193,"remaining_time":51.40894001,"test":[0.4833333333,0.3833978136]}, +{"learn":[0.9591346154,0.2989826642],"iteration":85,"passed_time":10.64606112,"remaining_time":51.24964308,"test":[0.4836065574,0.3834318576]}, +{"learn":[0.9578454333,0.2979737041],"iteration":86,"passed_time":10.77236674,"remaining_time":51.13778696,"test":[0.4833333333,0.3833043077]}, +{"learn":[0.9627039627,0.2973494526],"iteration":87,"passed_time":10.90129542,"remaining_time":51.03788312,"test":[0.4833333333,0.3831566026]}, +{"learn":[0.9608294931,0.2969713019],"iteration":88,"passed_time":11.02439735,"remaining_time":50.91041923,"test":[0.475,0.3831979167]}, +{"learn":[0.9567198178,0.2965064011],"iteration":89,"passed_time":11.14676163,"remaining_time":50.77969188,"test":[0.4615384615,0.3832379286]}, +{"learn":[0.9573033708,0.2960730782],"iteration":90,"passed_time":11.26428745,"remaining_time":50.62740185,"test":[0.4705882353,0.3833047689]}, +{"learn":[0.9577777778,0.2954965678],"iteration":91,"passed_time":11.38460454,"remaining_time":50.48824622,"test":[0.4615384615,0.3834944661]}, +{"learn":[0.9558498896,0.2948055607],"iteration":92,"passed_time":11.50721485,"remaining_time":50.35953167,"test":[0.4628099174,0.3836822645]}, +{"learn":[0.9564270153,0.2939628122],"iteration":93,"passed_time":11.62947966,"remaining_time":50.22945471,"test":[0.4634146341,0.3837473145]}, +{"learn":[0.9569892473,0.293530612],"iteration":94,"passed_time":11.74780507,"remaining_time":50.08274795,"test":[0.4634146341,0.383617079]}, +{"learn":[0.9574468085,0.2922860473],"iteration":95,"passed_time":11.87327676,"remaining_time":49.96670637,"test":[0.4596774194,0.3836049805]}, +{"learn":[0.9576271186,0.2914134138],"iteration":96,"passed_time":11.99836233,"remaining_time":49.84886616,"test":[0.4621848739,0.3837751194]}, +{"learn":[0.9604166667,0.2907755653],"iteration":97,"passed_time":12.1164863,"remaining_time":49.70232136,"test":[0.4758064516,0.3837325846]}, +{"learn":[0.9608247423,0.2901806284],"iteration":98,"passed_time":12.23866496,"remaining_time":49.57277425,"test":[0.4758064516,0.3837513021]}, +{"learn":[0.9633401222,0.2895748745],"iteration":99,"passed_time":12.35783213,"remaining_time":49.4313285,"test":[0.472,0.3836912435]}, +{"learn":[0.9618473896,0.288912309],"iteration":100,"passed_time":12.48495607,"remaining_time":49.32175714,"test":[0.4761904762,0.3834313151]}, +{"learn":[0.9620758483,0.2882808223],"iteration":101,"passed_time":12.60736898,"remaining_time":49.19345936,"test":[0.4596774194,0.3834144423]}, +{"learn":[0.9608610568,0.2876833728],"iteration":102,"passed_time":12.72942753,"remaining_time":49.06390999,"test":[0.4462809917,0.3839306912]}, +{"learn":[0.9610136452,0.286969306],"iteration":103,"passed_time":12.85518263,"remaining_time":48.94858,"test":[0.44,0.3839262967]}, +{"learn":[0.9619771863,0.286024464],"iteration":104,"passed_time":12.978483,"remaining_time":48.823817,"test":[0.44,0.3838380534]}, +{"learn":[0.961038961,0.2852715307],"iteration":105,"passed_time":13.10284896,"remaining_time":48.70304238,"test":[0.4186046512,0.3838293186]}, +{"learn":[0.9616087751,0.284758176],"iteration":106,"passed_time":13.22961176,"remaining_time":48.59100394,"test":[0.4108527132,0.384031901]}, +{"learn":[0.9616087751,0.2843796868],"iteration":107,"passed_time":13.35321679,"remaining_time":48.4672313,"test":[0.421875,0.3838463542]}, +{"learn":[0.9583333333,0.2836953446],"iteration":108,"passed_time":13.47640899,"remaining_time":48.34198088,"test":[0.4351145038,0.3837952474]}, +{"learn":[0.9584837545,0.2826532918],"iteration":109,"passed_time":13.60248921,"remaining_time":48.22700722,"test":[0.4263565891,0.3839005263]}, +{"learn":[0.9625,0.2820946196],"iteration":110,"passed_time":13.72331078,"remaining_time":48.09340446,"test":[0.4453125,0.3837520616]}, +{"learn":[0.9625668449,0.2815772197],"iteration":111,"passed_time":13.84336606,"remaining_time":47.95737529,"test":[0.44,0.3839232585]}, +{"learn":[0.963028169,0.2812213803],"iteration":112,"passed_time":13.96402904,"remaining_time":47.82371009,"test":[0.4444444444,0.3838974609]}, +{"learn":[0.9602763385,0.280713746],"iteration":113,"passed_time":14.0873207,"remaining_time":47.6991736,"test":[0.4461538462,0.3840630968]}, +{"learn":[0.9605488851,0.280147518],"iteration":114,"passed_time":14.20686771,"remaining_time":47.56212232,"test":[0.4552238806,0.3841141493]}, +{"learn":[0.9641638225,0.2793720062],"iteration":115,"passed_time":14.33028732,"remaining_time":47.43819251,"test":[0.4552238806,0.3842514648]}, +{"learn":[0.9642248722,0.2788365363],"iteration":116,"passed_time":14.45207665,"remaining_time":47.30893466,"test":[0.4718309859,0.3843915473]}, +{"learn":[0.9644067797,0.278158057],"iteration":117,"passed_time":14.57452588,"remaining_time":47.1819397,"test":[0.4620689655,0.3844533963]}, +{"learn":[0.9646464646,0.2771244333],"iteration":118,"passed_time":14.70143969,"remaining_time":47.06931532,"test":[0.4557823129,0.3845418023]}, +{"learn":[0.9647058824,0.2767586322],"iteration":119,"passed_time":14.82560353,"remaining_time":46.94774451,"test":[0.4657534247,0.3844443359]}, +{"learn":[0.9648241206,0.2761904796],"iteration":120,"passed_time":14.9468225,"remaining_time":46.81690683,"test":[0.46,0.3846325955]}, +{"learn":[0.9633943428,0.2758859632],"iteration":121,"passed_time":15.07671395,"remaining_time":46.71309732,"test":[0.4630872483,0.3846319987]}, +{"learn":[0.9636963696,0.2752923094],"iteration":122,"passed_time":15.19680306,"remaining_time":46.57881913,"test":[0.4630872483,0.3846895616]}, +{"learn":[0.9623567921,0.2747471808],"iteration":123,"passed_time":15.31794667,"remaining_time":46.44796732,"test":[0.4557823129,0.3846195747]}, +{"learn":[0.9627831715,0.2743734318],"iteration":124,"passed_time":15.43890562,"remaining_time":46.31671687,"test":[0.4765100671,0.3847169596]}, +{"learn":[0.9632,0.2735782462],"iteration":125,"passed_time":15.56165715,"remaining_time":46.19095058,"test":[0.4709677419,0.3849635688]}, +{"learn":[0.9634920635,0.273085884],"iteration":126,"passed_time":15.68618915,"remaining_time":46.07046106,"test":[0.4585987261,0.3850583767]}, +{"learn":[0.9636650869,0.2727205285],"iteration":127,"passed_time":15.80627133,"remaining_time":45.93697606,"test":[0.4545454545,0.3852940538]}, +{"learn":[0.963836478,0.2722575701],"iteration":128,"passed_time":15.92681884,"remaining_time":45.80503713,"test":[0.4575163399,0.3853448079]}, +{"learn":[0.9609375,0.2718730397],"iteration":129,"passed_time":16.05113122,"remaining_time":45.68398886,"test":[0.474025974,0.3852395562]}, +{"learn":[0.9625585023,0.2715995844],"iteration":130,"passed_time":16.16967387,"remaining_time":45.5466386,"test":[0.464516129,0.3851817763]}, +{"learn":[0.9628482972,0.2709222457],"iteration":131,"passed_time":16.29191733,"remaining_time":45.41989075,"test":[0.461038961,0.385196913]}, +{"learn":[0.9615975422,0.2703818039],"iteration":132,"passed_time":16.41715677,"remaining_time":45.30147769,"test":[0.4545454545,0.3849804145]}, +{"learn":[0.9630200308,0.2697465393],"iteration":133,"passed_time":16.54478982,"remaining_time":45.18950054,"test":[0.4551282051,0.3849924859]}, +{"learn":[0.9618902439,0.2693822351],"iteration":134,"passed_time":16.66373437,"remaining_time":45.05380033,"test":[0.4575163399,0.3848855252]}, +{"learn":[0.9653614458,0.269036197],"iteration":135,"passed_time":16.78448197,"remaining_time":44.92317233,"test":[0.4539473684,0.3850203451]}, +{"learn":[0.9654654655,0.2682332416],"iteration":136,"passed_time":16.91057141,"remaining_time":44.80684248,"test":[0.4539473684,0.3852070584]}, +{"learn":[0.9689349112,0.2676281471],"iteration":137,"passed_time":17.03539256,"remaining_time":44.68704425,"test":[0.4503311258,0.385253852]}, +{"learn":[0.9693877551,0.2671804609],"iteration":138,"passed_time":17.15566682,"remaining_time":44.55536491,"test":[0.4520547945,0.3853320041]}, +{"learn":[0.969740634,0.2666987376],"iteration":139,"passed_time":17.27763805,"remaining_time":44.42821212,"test":[0.4585987261,0.3856692166]}, +{"learn":[0.9713467049,0.2663339523],"iteration":140,"passed_time":17.39819883,"remaining_time":44.2975417,"test":[0.4615384615,0.3857099067]}, +{"learn":[0.9715099715,0.2655467324],"iteration":141,"passed_time":17.52105746,"remaining_time":44.17280683,"test":[0.464516129,0.3856298286]}, +{"learn":[0.9702549575,0.2647545941],"iteration":142,"passed_time":17.64559282,"remaining_time":44.05228416,"test":[0.4591194969,0.3853765734]}, +{"learn":[0.9664335664,0.264308494],"iteration":143,"passed_time":17.76426858,"remaining_time":43.91721955,"test":[0.4782608696,0.3855229221]}, +{"learn":[0.9705469846,0.2636648359],"iteration":144,"passed_time":17.88727948,"remaining_time":43.79299458,"test":[0.4691358025,0.3854374729]}, +{"learn":[0.9694019471,0.2633127388],"iteration":145,"passed_time":18.00748594,"remaining_time":43.66198645,"test":[0.472392638,0.3854031033]}, +{"learn":[0.9708737864,0.2630347036],"iteration":146,"passed_time":18.13334175,"remaining_time":43.54469142,"test":[0.4785276074,0.3854896105]}, +{"learn":[0.9710743802,0.2628232814],"iteration":147,"passed_time":18.2567341,"remaining_time":43.42142164,"test":[0.4720496894,0.385499566]}, +{"learn":[0.9725274725,0.2625271762],"iteration":148,"passed_time":18.37609875,"remaining_time":43.28866216,"test":[0.472392638,0.3856041667]}, +{"learn":[0.9702300406,0.2618719883],"iteration":149,"passed_time":18.50105793,"remaining_time":43.16913516,"test":[0.472392638,0.3857845323]}, +{"learn":[0.9689608637,0.261406945],"iteration":150,"passed_time":18.62245265,"remaining_time":43.04129784,"test":[0.472392638,0.385792589]}, +{"learn":[0.9666221629,0.2607731595],"iteration":151,"passed_time":18.75292121,"remaining_time":42.93431961,"test":[0.4764705882,0.3857090115]}, +{"learn":[0.9667994688,0.2604694628],"iteration":152,"passed_time":18.87279837,"remaining_time":42.8030133,"test":[0.4698795181,0.3857729221]}, +{"learn":[0.9670184697,0.2600434285],"iteration":153,"passed_time":19.01008333,"remaining_time":42.71096645,"test":[0.4610778443,0.3858970812]}, +{"learn":[0.9659685864,0.259592499],"iteration":154,"passed_time":19.14002223,"remaining_time":42.60198496,"test":[0.4545454545,0.3860140516]}, +{"learn":[0.9676165803,0.25914132],"iteration":155,"passed_time":19.26319087,"remaining_time":42.47780552,"test":[0.4375,0.3861292318]}, +{"learn":[0.9664516129,0.2588320099],"iteration":156,"passed_time":19.38714896,"remaining_time":42.35536365,"test":[0.4472049689,0.386065918]}, +{"learn":[0.9715394567,0.2581554017],"iteration":157,"passed_time":19.51471911,"remaining_time":42.24072111,"test":[0.4625,0.386123291]}, +{"learn":[0.9716494845,0.2574764235],"iteration":158,"passed_time":19.63969699,"remaining_time":42.12035643,"test":[0.4556962025,0.3860105252]}, +{"learn":[0.9704749679,0.2567622854],"iteration":159,"passed_time":19.76338724,"remaining_time":41.99719788,"test":[0.4625,0.3859614258]}, +{"learn":[0.9694267516,0.2560285805],"iteration":160,"passed_time":19.88981703,"remaining_time":41.87980108,"test":[0.4528301887,0.3859398058]}, +{"learn":[0.9707750953,0.2553710938],"iteration":161,"passed_time":20.01206766,"remaining_time":41.75357327,"test":[0.4534161491,0.3861076118]}, +{"learn":[0.9721518987,0.2546564924],"iteration":162,"passed_time":20.138895,"remaining_time":41.63685654,"test":[0.4567901235,0.3861334093]}, +{"learn":[0.9738480697,0.2542799634],"iteration":163,"passed_time":20.26082495,"remaining_time":41.50998282,"test":[0.4634146341,0.3860480957]}, +{"learn":[0.973880597,0.2539259773],"iteration":164,"passed_time":20.38106181,"remaining_time":41.37973155,"test":[0.4666666667,0.3861162109]}, +{"learn":[0.975308642,0.2536220667],"iteration":165,"passed_time":20.50097195,"remaining_time":41.24894356,"test":[0.4666666667,0.3862133789]}, +{"learn":[0.9754901961,0.2529050061],"iteration":166,"passed_time":20.62402327,"remaining_time":41.12454939,"test":[0.4596273292,0.3863245985]}, +{"learn":[0.9755501222,0.2525285841],"iteration":167,"passed_time":20.75490886,"remaining_time":41.01565321,"test":[0.450617284,0.3864905328]}, +{"learn":[0.9722222222,0.2520549512],"iteration":168,"passed_time":20.87656001,"remaining_time":40.88841043,"test":[0.4573170732,0.3863822971]}, +{"learn":[0.9723557692,0.2518949055],"iteration":169,"passed_time":20.99534728,"remaining_time":40.75567413,"test":[0.4545454545,0.3864398872]}, +{"learn":[0.972322503,0.2511279119],"iteration":170,"passed_time":21.12215327,"remaining_time":40.63852881,"test":[0.4578313253,0.3864295519]}, +{"learn":[0.9736211031,0.2506003543],"iteration":171,"passed_time":21.24658113,"remaining_time":40.5167361,"test":[0.4561403509,0.3866640354]}, +{"learn":[0.9702026222,0.2503210538],"iteration":172,"passed_time":21.37206483,"remaining_time":40.39690867,"test":[0.4534883721,0.3867054579]}, +{"learn":[0.9714285714,0.2500940743],"iteration":173,"passed_time":21.4941889,"remaining_time":40.27072174,"test":[0.4444444444,0.3866737196]}, +{"learn":[0.9695193435,0.2495754626],"iteration":174,"passed_time":21.61924276,"remaining_time":40.15002227,"test":[0.4425287356,0.3867723253]}, +{"learn":[0.972027972,0.2491294872],"iteration":175,"passed_time":21.74764265,"remaining_time":40.03543307,"test":[0.4540229885,0.3868446181]}, +{"learn":[0.9699769053,0.2486089152],"iteration":176,"passed_time":21.8725331,"remaining_time":39.91428357,"test":[0.4488636364,0.3868221571]}, +{"learn":[0.9711316397,0.2481818652],"iteration":177,"passed_time":21.99563282,"remaining_time":39.78985264,"test":[0.450867052,0.3870137804]}, +{"learn":[0.9711981567,0.247761373],"iteration":178,"passed_time":22.11940045,"remaining_time":39.66663433,"test":[0.450867052,0.3871307237]}, +{"learn":[0.9726339795,0.2473678789],"iteration":179,"passed_time":22.24268922,"remaining_time":39.54255861,"test":[0.4593023256,0.3872641602]}, +{"learn":[0.9727272727,0.2472103459],"iteration":180,"passed_time":22.36284925,"remaining_time":39.4129774,"test":[0.4488636364,0.3872341309]}, +{"learn":[0.9751972943,0.2463777729],"iteration":181,"passed_time":22.49028226,"remaining_time":39.29620747,"test":[0.4425287356,0.3873837619]}, +{"learn":[0.9741863075,0.2460682311],"iteration":182,"passed_time":22.61111091,"remaining_time":39.16788065,"test":[0.4431818182,0.3874805773]}, +{"learn":[0.9765100671,0.2458297217],"iteration":183,"passed_time":22.73156903,"remaining_time":39.03899898,"test":[0.4413407821,0.3874806315]} ]} \ No newline at end of file diff --git a/main/train/catboost_info/learn/events.out.tfevents b/main/train/catboost_info/learn/events.out.tfevents index b970b03ad4a8e1346f9e2f5965bcd9eeae2e97cc..8a7e3cb6af66242a4cf6d2ec57f59fb971df9232 100644 GIT binary patch literal 22556 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 literal 14392 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 bauUkB8U(qp>X|FgoJ8bXp(vLPcE0;xiYDm~ diff --git a/main/train/catboost_info/learn_error.tsv b/main/train/catboost_info/learn_error.tsv index 98eb714..a3f7037 100644 --- a/main/train/catboost_info/learn_error.tsv +++ b/main/train/catboost_info/learn_error.tsv @@ -1,119 +1,185 @@ iter Precision CrossEntropy -0 0.6421052632 0.6541943716 -1 0.8571428571 0.6220139285 -2 0.9473684211 0.5916510322 -3 0.9142857143 0.5644849167 -4 0.890625 0.5410338375 -5 0.8 0.5196276588 -6 0.8518518519 0.5010221829 -7 0.8764044944 0.4849534885 -8 0.8804347826 0.4703366289 -9 0.8875 0.457428825 -10 0.9358974359 0.4457376255 -11 0.8846153846 0.4359375713 -12 0.8510638298 0.4264152672 -13 0.8764044944 0.4182715557 -14 0.9024390244 0.4110272796 -15 0.8735632184 0.4046110501 -16 0.8953488372 0.3980741403 -17 0.8918918919 0.3925273723 -18 0.8888888889 0.3880111628 -19 0.8876404494 0.383472642 -20 0.8850574713 0.3796266965 -21 0.9 0.3761398694 -22 0.8941176471 0.3727471701 -23 0.8795180723 0.3698476705 -24 0.8791208791 0.366884231 -25 0.8736842105 0.3639221459 -26 0.908045977 0.3615422916 -27 0.8865979381 0.3594712663 -28 0.9120879121 0.3576372534 -29 0.9318181818 0.3557858833 -30 0.9213483146 0.3540102147 -31 0.9157894737 0.3527535855 -32 0.9215686275 0.3512465785 -33 0.9278350515 0.3498231139 -34 0.9142857143 0.3482837805 -35 0.9278350515 0.347266124 -36 0.9304347826 0.3461889827 -37 0.9333333333 0.3452881929 -38 0.9327731092 0.3436992116 -39 0.9268292683 0.3429076257 -40 0.92 0.3419519488 -41 0.9206349206 0.3410037922 -42 0.9236641221 0.3402700516 -43 0.928057554 0.3396138301 -44 0.9416058394 0.3387833599 -45 0.9432624113 0.337743107 -46 0.9371069182 0.3372271328 -47 0.935483871 0.3365873061 -48 0.9320987654 0.33607568 -49 0.9272727273 0.3350486856 -50 0.9226190476 0.3345484646 -51 0.9341317365 0.3338950944 -52 0.9281437126 0.3327000884 -53 0.9180327869 0.33217777 -54 0.9189189189 0.331515846 -55 0.9206349206 0.3308074105 -56 0.9214659686 0.3296911354 -57 0.9162561576 0.3292216726 -58 0.9099526066 0.3284372505 -59 0.9107981221 0.3277626383 -60 0.9128440367 0.3271785541 -61 0.9132420091 0.3262657177 -62 0.9144144144 0.3253470717 -63 0.9196428571 0.3247234974 -64 0.9203539823 0.3235557567 -65 0.9166666667 0.3228013444 -66 0.9181034483 0.3222814496 -67 0.9166666667 0.321691948 -68 0.9198312236 0.3209086665 -69 0.9193548387 0.3202570783 -70 0.9227642276 0.3199307852 -71 0.9243027888 0.3194535527 -72 0.9221789883 0.3188831547 -73 0.9227799228 0.3182035527 -74 0.9236641221 0.317120495 -75 0.9201520913 0.3168538293 -76 0.9210526316 0.3163409557 -77 0.921641791 0.3156599994 -78 0.9239130435 0.3152008368 -79 0.9241877256 0.3143367929 -80 0.9222614841 0.3138722842 -81 0.9219858156 0.3130961665 -82 0.9195804196 0.3126652315 -83 0.9206896552 0.3123047231 -84 0.9238754325 0.3112267621 -85 0.9233333333 0.31078542 -86 0.9248366013 0.310220974 -87 0.9233226837 0.3097435989 -88 0.9242902208 0.3090203724 -89 0.9242902208 0.3086560861 -90 0.9252336449 0.3080292327 -91 0.9237804878 0.3076218208 -92 0.9244712991 0.3075668981 -93 0.9249249249 0.3071175368 -94 0.9253731343 0.3066006002 -95 0.9262536873 0.3062844648 -96 0.9237536657 0.3059603815 -97 0.9217391304 0.3052842011 -98 0.9340974212 0.3046106937 -99 0.9344729345 0.3043589259 -100 0.9355742297 0.3040324903 -101 0.9364640884 0.3036740491 -102 0.9369863014 0.3032366632 -103 0.935483871 0.3026225693 -104 0.932642487 0.3020944058 -105 0.9333333333 0.3018100978 -106 0.9335038363 0.3012678918 -107 0.9248120301 0.3006216497 -108 0.9259259259 0.3002269617 -109 0.9270072993 0.2997753193 -110 0.9270072993 0.2989820227 -111 0.928057554 0.2985569329 -112 0.9282296651 0.2982289825 -113 0.9263657957 0.2976258126 -114 0.9270588235 0.2971854328 -115 0.9270588235 0.2968307339 -116 0.9285714286 0.2962460795 -117 0.9292237443 0.2956911496 +0 0.6527196653 0.6539506586 +1 0.7857142857 0.62 +2 0.7876106195 0.5895233377 +3 0.8407079646 0.5620427264 +4 0.8421052632 0.5384506159 +5 0.8854166667 0.5166076215 +6 0.9069767442 0.4981064667 +7 0.8910891089 0.4814881886 +8 0.8727272727 0.466400298 +9 0.8679245283 0.4533062343 +10 0.8782608696 0.4415312072 +11 0.8740740741 0.4312919494 +12 0.8689655172 0.4220624715 +13 0.8721804511 0.413855426 +14 0.8741258741 0.406276303 +15 0.8857142857 0.3991897383 +16 0.9084507042 0.3933755916 +17 0.904 0.3882018776 +18 0.9078014184 0.3829967282 +19 0.9275362319 0.3780131586 +20 0.9310344828 0.3741117915 +21 0.9361702128 0.3698772169 +22 0.9361702128 0.3662776217 +23 0.9481481481 0.3634891081 +24 0.9618320611 0.3606119554 +25 0.9562043796 0.3583850365 +26 0.958041958 0.3559227803 +27 0.9507042254 0.3537762674 +28 0.9503546099 0.3512843579 +29 0.9473684211 0.3493274549 +30 0.9480519481 0.3476888615 +31 0.9407894737 0.3458803675 +32 0.9426751592 0.3436222628 +33 0.9622641509 0.3419754362 +34 0.9518072289 0.3403367002 +35 0.9520958084 0.3387332487 +36 0.95 0.3373228288 +37 0.9451219512 0.3361083272 +38 0.9515151515 0.3348690907 +39 0.9553072626 0.33377502 +40 0.9516129032 0.3329283688 +41 0.9441624365 0.3318725764 +42 0.945 0.3308382043 +43 0.95 0.3292620538 +44 0.9466019417 0.3283621194 +45 0.9468599034 0.3272893262 +46 0.9488372093 0.3261484589 +47 0.9497716895 0.3251783474 +48 0.9475982533 0.3244344848 +49 0.9475982533 0.323543425 +50 0.9605263158 0.3229784443 +51 0.9570815451 0.3219528399 +52 0.9565217391 0.3212596231 +53 0.9567099567 0.3205928875 +54 0.9608695652 0.3193251383 +55 0.9663865546 0.3186993185 +56 0.9628099174 0.3180124458 +57 0.9674796748 0.3170894161 +58 0.9603174603 0.3165342011 +59 0.9619771863 0.3155287337 +60 0.962962963 0.3146865733 +61 0.9635036496 0.3140015896 +62 0.9642857143 0.313511063 +63 0.9615384615 0.3127688398 +64 0.9612676056 0.312167149 +65 0.9620689655 0.3110078553 +66 0.9632107023 0.3105276289 +67 0.9636963696 0.3099715585 +68 0.9617834395 0.3091966882 +69 0.9692307692 0.3085731852 +70 0.9607250755 0.3076873289 +71 0.9643916914 0.3061730868 +72 0.9591836735 0.3057069029 +73 0.9548022599 0.3049678518 +74 0.9582172702 0.3040258967 +75 0.958677686 0.3035014399 +76 0.9568733154 0.3029796561 +77 0.9572192513 0.3022192917 +78 0.9603174603 0.3015648167 +79 0.9557291667 0.3011355925 +80 0.9567430025 0.300810333 +81 0.9573934837 0.3003533089 +82 0.9580246914 0.3000302235 +83 0.9581280788 0.2995648951 +84 0.9608801956 0.2991294337 +85 0.9591346154 0.2989826642 +86 0.9578454333 0.2979737041 +87 0.9627039627 0.2973494526 +88 0.9608294931 0.2969713019 +89 0.9567198178 0.2965064011 +90 0.9573033708 0.2960730782 +91 0.9577777778 0.2954965678 +92 0.9558498896 0.2948055607 +93 0.9564270153 0.2939628122 +94 0.9569892473 0.293530612 +95 0.9574468085 0.2922860473 +96 0.9576271186 0.2914134138 +97 0.9604166667 0.2907755653 +98 0.9608247423 0.2901806284 +99 0.9633401222 0.2895748745 +100 0.9618473896 0.288912309 +101 0.9620758483 0.2882808223 +102 0.9608610568 0.2876833728 +103 0.9610136452 0.286969306 +104 0.9619771863 0.286024464 +105 0.961038961 0.2852715307 +106 0.9616087751 0.284758176 +107 0.9616087751 0.2843796868 +108 0.9583333333 0.2836953446 +109 0.9584837545 0.2826532918 +110 0.9625 0.2820946196 +111 0.9625668449 0.2815772197 +112 0.963028169 0.2812213803 +113 0.9602763385 0.280713746 +114 0.9605488851 0.280147518 +115 0.9641638225 0.2793720062 +116 0.9642248722 0.2788365363 +117 0.9644067797 0.278158057 +118 0.9646464646 0.2771244333 +119 0.9647058824 0.2767586322 +120 0.9648241206 0.2761904796 +121 0.9633943428 0.2758859632 +122 0.9636963696 0.2752923094 +123 0.9623567921 0.2747471808 +124 0.9627831715 0.2743734318 +125 0.9632 0.2735782462 +126 0.9634920635 0.273085884 +127 0.9636650869 0.2727205285 +128 0.963836478 0.2722575701 +129 0.9609375 0.2718730397 +130 0.9625585023 0.2715995844 +131 0.9628482972 0.2709222457 +132 0.9615975422 0.2703818039 +133 0.9630200308 0.2697465393 +134 0.9618902439 0.2693822351 +135 0.9653614458 0.269036197 +136 0.9654654655 0.2682332416 +137 0.9689349112 0.2676281471 +138 0.9693877551 0.2671804609 +139 0.969740634 0.2666987376 +140 0.9713467049 0.2663339523 +141 0.9715099715 0.2655467324 +142 0.9702549575 0.2647545941 +143 0.9664335664 0.264308494 +144 0.9705469846 0.2636648359 +145 0.9694019471 0.2633127388 +146 0.9708737864 0.2630347036 +147 0.9710743802 0.2628232814 +148 0.9725274725 0.2625271762 +149 0.9702300406 0.2618719883 +150 0.9689608637 0.261406945 +151 0.9666221629 0.2607731595 +152 0.9667994688 0.2604694628 +153 0.9670184697 0.2600434285 +154 0.9659685864 0.259592499 +155 0.9676165803 0.25914132 +156 0.9664516129 0.2588320099 +157 0.9715394567 0.2581554017 +158 0.9716494845 0.2574764235 +159 0.9704749679 0.2567622854 +160 0.9694267516 0.2560285805 +161 0.9707750953 0.2553710938 +162 0.9721518987 0.2546564924 +163 0.9738480697 0.2542799634 +164 0.973880597 0.2539259773 +165 0.975308642 0.2536220667 +166 0.9754901961 0.2529050061 +167 0.9755501222 0.2525285841 +168 0.9722222222 0.2520549512 +169 0.9723557692 0.2518949055 +170 0.972322503 0.2511279119 +171 0.9736211031 0.2506003543 +172 0.9702026222 0.2503210538 +173 0.9714285714 0.2500940743 +174 0.9695193435 0.2495754626 +175 0.972027972 0.2491294872 +176 0.9699769053 0.2486089152 +177 0.9711316397 0.2481818652 +178 0.9711981567 0.247761373 +179 0.9726339795 0.2473678789 +180 0.9727272727 0.2472103459 +181 0.9751972943 0.2463777729 +182 0.9741863075 0.2460682311 +183 0.9765100671 0.2458297217 diff --git a/main/train/catboost_info/test/events.out.tfevents b/main/train/catboost_info/test/events.out.tfevents index 85ac42289256ea64cbe2468b83f1abe83c4324c1..e0cb7f4d95d1a3fca5f5d898bfe012f58b982209 100644 GIT binary patch literal 22556 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 P) z#$=g_Y}Yc`$;22vEyj>6CC_tb?(cQ)?|y!td0l_e%lGyEea<<*bIv{YWG_?w`Cqa{ zprP`w>naTH4t20H>S|;dn)*>(d|G^x-29v325(Qzzu#VIGIJ8@&RmRa)YSDh>S@$= zcxqBwn!h|fH7R+X`P}RFzMfh?itTkb-9f0{yJB^Ny4th_x_|vIkz3}`ST;bYT;FhY zs<=`r`_JeJa);RHHC)!yA%CzpG=a-{4pKQ{p(V&mj|SCnSs&#ecJ1;JWgd2{!kx?d zL{5zA2(o)-Y$2ChqP(@Jm9I#yPu>&8<(5QtvoQhLphsyHmkm&c%-{Wdpn=N z1hTLDhZbCJg|f%WIB{!VseIPV%V`dKLH7H57BMxH$_vEuoR33ZfUK^R zzEyz_UxVB(xv4LgjZpq!mxEY-H*Hu3myJl~k_9h7R%G|s#${uaVGesRF!wE&jfuRa z^eM>wqGl}Ra$6#cGk@IaNDPJf%krg?QKyDpjRKaBvlykDXh~@kZn`Uv@gvhfBe+BtX z+05^_Y>Ki><|mdFdzMb*vMG_5nO1;&dVtGIE`NZs;?h{LJnfU(0bKro$WblsfqduN zkqRz%KsltYR6Mq`ig!Kaat9)R+3^m@hAF9)TsA}bOmLl84l}jA&t)?rJ6hcWd5LwA z8ORG%vu8(?!^3Zg<Z!qYP_Rx&6g2xNJ@`-?~{2 zvVT^69+xdpJ~~%9NHjZ7lU1#baoK{%>50F9{Qa2S^SRs!Wtr@>Sl<3cn=CGOBJzEo zYak!-w!rmS=&jCDStfp~mQ0W(bGb8-yVzU>x#RgOraW^O9rBIlxh7ohLgc`9S3tIN zzJjx-kl9iyYqj>Blbeon*^D|zPDBZ^3m|R z+g$F3vT|o2?&p}K?YIvUyS?vKitS=Ym&LB8_I|5tAF8{d+LxEj2zR*<(@=tSbH8aZ>z9q$>m-s!-}zUo(1-^ z&|1BS95E5)UQ-L_aJjb*IlXepYo56`kxP1@oHgOiY%bfNyl+d9c*VHrvGhHcZHWA| z_#CwMp_E;LT((6STHEkW{Xj0;64`AL%5^fkcrM%NkWU2%nRD5W$ft&(Jo)LNr(FIJ zW#_gf;?~}jQP`Tx9};=(f6Jh?>vkAUfN z0R>#{L*#j%pge!@lj9)E*8g?>XX=3R{`<;JoMs;u71eAAvbs__do~S5xp~~CHe7bp zA#Z7r$8*_{WWHE^7W&zBmMhNN!jt#aA-4!$GlI)~iELVca@d|s$*Gj8wfmv0xTIX% zHLY#CMd8KeenejO70TPk$42nhc0zf%({ZuvZI{1|%T7ezm5B2G=f&5#+#lufj}MCF z6Ap*}p|$%nITGdYnwy)sJOJejIS0hD`-Y%;o_PR~y**KmTU>;ntAr8ejB@(5Gh%t? zyM!7pI}>?#Fv_`s#%?_GK$MLqDW_h|2+NzW`ZF#MByzwQlugc#`H9PeP?q02B9<$H zd<{&`&NzzVD6l8@XOF$bPE#c`(Wb&OeG} zpZ5WaA+x$tI(tT%p!x$J@RcDEDae*Ra3n<>xiL1f>y zC}((C zrF{CY^W&{O1ZCLu7MqzD^VS|h(*4mD_=$z^YpVIMZQ(5sHi-bB7$hjNRRSz%oE zLD@M^YsL7o>o`1>5?b4b$ORQB|6$|(hRePvAKIuqWYMe`^BvF4;F*1iy!;Z%dsk(Z zfxJL9hxwuWb>3~U{G>kG17vljbZi$Eqioxub9*jJzV`;XYxLDSTpmg?Tb)KZDRK?& zNrWdKrX%y*nomFB@-QNoY(}|H=CR#8^Kg`J{Z53hx5!Mh&*~7%Dpqc7{FzJ9rB*d9S?KapUBf!qWn$Z1^hNa=;x6- z zGGAVUnb*oYRdYE=hrH~a{%9@-5jj*cw#!^1y}2BWa$cI&Dw#H5a0r)!iR`=wGbi}O z9^-Nd%AqOBqf5=aJ#3@CHnI=5*cp~>}hdceD+i#!e@&uGi_G$I=!KRp>dFBa3_L8*r-lbK+ zAj>xVefk)V^155fFEuq|duz~H+!?4VrE{1=6}Gn3jfA0GjzAf9fE%VPI|-QuIf7(f zegkEryhp9L9Eoye^-Xc+XGPaCxg1I47Qdq`|GMEEmnZ6wErYWp=V7XTnn>jNH7F1I zb=$98o}@#r(yLv|GfyJ2O!Dbwr+v_mT%L^b=WVs-?L$)nMsj&Fk=s7O%qB5)AzYq< zGMx1e9iQmL!WB9A1?xxd*7qJOkw)cHI@rpH7uO;_?h4r%yt8iT-!dJo85= zua4ImVH<3B;LUNNwLT(pObW_A#Ws>VuByy4QJ!dYU7XqVnDd`J^GqTy*^IKy-5mTz zRCw}PI^^2?pH^~t7LiADl#3R2 z$J;wX{alo%ozhyXCKN220GZX5QhC!|l=mc82k^{tlwmhC+w%b4WD#UJY3=Q$DAxzP zmE8AKwRRH9<-aH|i)#9L{_Ik`r6tHoL^hX7xtX4n&=INTlTRWM^ z?+;?;x498`lSPnIP(C|F>wR`~%+%v@3X!u*l!ddcN