{ "cells": [ { "metadata": { "ExecuteTime": { "end_time": "2025-01-22T02:00:48.759512Z", "start_time": "2025-01-22T01:48:26.785997Z" } }, "cell_type": "code", "source": [ "import os\n", "\n", "# 加载\"C:\\Users\\lanyuanxiaoyao\\Documents\\Tushare\\日线行情\"路径下的所有CSV文件,放在一个dataframe表里,然后根据ts_code分组,把分组按ts_code命名,以CSV的格式存在“C:\\Users\\lanyuanxiaoyao\\Documents\\Tushare\\日线行情\\group”路径下\n", "import pandas as pd\n", "\n", "# 定义路径\n", "input_path = \"/Users/lanyuanxiaoyao/SynologyDrive/data/Tushare/日线行情\"\n", "output_path = \"/Users/lanyuanxiaoyao/Documents/日线行情\"\n", "\n", "# 确保输出路径存在\n", "os.makedirs(output_path, exist_ok=True)\n", "\n", "# 获取所有CSV文件\n", "csv_files = [f for f in os.listdir(input_path) if f.endswith('.csv')]\n", "\n", "# 初始化一个空的DataFrame\n", "df = pd.DataFrame()\n", "\n", "# 逐个加载CSV文件到DataFrame\n", "for file in csv_files:\n", " file_path = os.path.join(input_path, file)\n", " temp_df = pd.read_csv(file_path)\n", " df = pd.concat([df, temp_df], ignore_index=True)\n", "\n", "# 根据ts_code分组\n", "grouped = df.groupby('ts_code')\n", "\n", "# 将每个分组保存为CSV文件\n", "for ts_code, group in grouped:\n", " output_file_path = os.path.join(output_path, f\"{ts_code}.csv\")\n", " group.to_csv(output_file_path, index=False)\n", "\n", "print(\"文件已成功分组并保存为CSV格式。\")\n" ], "id": "6a10e07f5f498bc6", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "文件已成功分组并保存为CSV格式。\n" ] } ], "execution_count": 1 }, { "metadata": { "ExecuteTime": { "end_time": "2025-01-22T07:54:35.124992Z", "start_time": "2025-01-22T07:54:35.014745Z" } }, "cell_type": "code", "source": [ "source_df = pd.read_csv(\"/Users/lanyuanxiaoyao/Documents/日线行情/000001.SZ.csv\") \\\n", " [[\"trade_date\", \"open_qfq\", \"close_qfq\", \"high_qfq\", \"low_qfq\", \"macd\", \"macd_dif\", \"macd_dea\"]]\n", "df = pd.DataFrame()\n", "df[[\"date\", \"open\", \"close\", \"high\", \"low\", \"macd\", \"macd_dif\", \"macd_dea\"]] = \\\n", " source_df[[\"trade_date\", \"open_qfq\", \"close_qfq\", \"high_qfq\", \"low_qfq\", \"macd\", \"macd_dif\", \"macd_dea\"]]\n", "df[\"datetime\"] = pd.to_datetime(df[\"date\"], format=\"%Y%m%d\")\n", "df[\"datetime_text\"] = df[\"datetime\"].apply(lambda x: x.strftime(\"%Y%m%d\"))\n", "df = df[df[\"datetime\"].dt.year >= 2024]\n", "df.sort_values(by='datetime', inplace=True)\n", "\n", "close_median = df[\"close\"].median()\n", "df[\"close_to_median\"] = df[\"close\"] - close_median\n", "macd_max = max(abs(df[\"macd\"].max()), abs(df[\"macd\"].min()))\n", "close_max = max(abs(df[\"close_to_median\"].max()), abs(df[\"close_to_median\"].min()))\n", "ratio = close_max / macd_max\n", "df[\"macd_close\"] = df[\"close_to_median\"] / ratio\n", "\n", "# df[\"macd_sign\"] = df[\"macd\"] > 0\n", "# df[\"group\"] = (df[\"macd_sign\"] != df[\"macd_sign\"].shift(1)).cumsum()\n", "\n", "df[\"macd_diff\"] = df[\"macd\"].diff()\n", "df[\"macd_diff\"] = df[\"macd_diff\"].fillna(0)\n", "df['macd_trend'] = df['macd_diff'].apply(lambda x: 1 if x > 0 else -1 if x < 0 else 0)\n", "df[\"macd_trend_group\"] = (df['macd_trend'] != df['macd_trend'].shift(1)).cumsum()\n", "\n", "df[\"pre_macd\"] = df[\"macd\"].shift(1)\n", "df[\"point\"] = (df[\"macd_dif\"] > 0) & (df[\"macd_dea\"] > 0) & (df[\"macd\"] > 0) & \\\n", " ((df[\"macd_dif\"] > df[\"macd\"]) & (df[\"macd_dea\"] > df[\"macd\"])) & \\\n", " (df[\"pre_macd\"] < df[\"macd\"])\n", "df.loc[df[\"point\"] & df[\"point\"].shift(1), \"point\"] = False\n", "\n", "df" ], "id": "f6ca89b1047f1eb0", "outputs": [ { "data": { "text/plain": [ " date open close high low macd macd_dif \\\n", "3576 20240102 8.57646 8.41205 8.60386 8.41205 0.107 -0.162 \n", "3577 20240103 8.39379 8.40292 8.42119 8.35725 0.098 -0.155 \n", "3578 20240104 8.39379 8.32072 8.39379 8.29332 0.080 -0.153 \n", "3579 20240105 8.31158 8.46686 8.62213 8.28418 0.087 -0.139 \n", "3580 20240108 8.43032 8.35725 8.49426 8.32072 0.076 -0.135 \n", "... ... ... ... ... ... ... ... \n", "3813 20241225 11.86000 11.92000 12.02000 11.84000 0.050 0.080 \n", "3814 20241226 11.92000 11.86000 11.93000 11.78000 0.051 0.087 \n", "3815 20241227 11.87000 11.83000 11.90000 11.66000 0.044 0.089 \n", "3816 20241230 11.78000 11.95000 11.97000 11.78000 0.052 0.100 \n", "3817 20241231 11.93000 11.70000 11.99000 11.70000 0.020 0.086 \n", "\n", " macd_dea datetime datetime_text close_to_median macd_close \\\n", "3576 -0.216 2024-01-02 20240102 -1.50113 -0.339145 \n", "3577 -0.203 2024-01-03 20240103 -1.51026 -0.341208 \n", "3578 -0.193 2024-01-04 20240104 -1.59246 -0.359779 \n", "3579 -0.183 2024-01-05 20240105 -1.44632 -0.326762 \n", "3580 -0.173 2024-01-08 20240108 -1.55593 -0.351526 \n", "... ... ... ... ... ... \n", "3813 0.055 2024-12-25 20241225 2.00682 0.453394 \n", "3814 0.062 2024-12-26 20241226 1.94682 0.439838 \n", "3815 0.067 2024-12-27 20241227 1.91682 0.433061 \n", "3816 0.074 2024-12-30 20241230 2.03682 0.460172 \n", "3817 0.076 2024-12-31 20241231 1.78682 0.403690 \n", "\n", " macd_diff macd_trend macd_trend_group pre_macd point \n", "3576 0.000 0 1 NaN False \n", "3577 -0.009 -1 2 0.107 False \n", "3578 -0.018 -1 2 0.098 False \n", "3579 0.007 1 3 0.080 False \n", "3580 -0.011 -1 4 0.087 False \n", "... ... ... ... ... ... \n", "3813 0.019 1 66 0.031 False \n", "3814 0.001 1 66 0.050 False \n", "3815 -0.007 -1 67 0.051 False \n", "3816 0.008 1 68 0.044 True \n", "3817 -0.032 -1 69 0.052 False \n", "\n", "[242 rows x 17 columns]" ], "text/html": [ "
| \n", " | date | \n", "open | \n", "close | \n", "high | \n", "low | \n", "macd | \n", "macd_dif | \n", "macd_dea | \n", "datetime | \n", "datetime_text | \n", "close_to_median | \n", "macd_close | \n", "macd_diff | \n", "macd_trend | \n", "macd_trend_group | \n", "pre_macd | \n", "point | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3576 | \n", "20240102 | \n", "8.57646 | \n", "8.41205 | \n", "8.60386 | \n", "8.41205 | \n", "0.107 | \n", "-0.162 | \n", "-0.216 | \n", "2024-01-02 | \n", "20240102 | \n", "-1.50113 | \n", "-0.339145 | \n", "0.000 | \n", "0 | \n", "1 | \n", "NaN | \n", "False | \n", "
| 3577 | \n", "20240103 | \n", "8.39379 | \n", "8.40292 | \n", "8.42119 | \n", "8.35725 | \n", "0.098 | \n", "-0.155 | \n", "-0.203 | \n", "2024-01-03 | \n", "20240103 | \n", "-1.51026 | \n", "-0.341208 | \n", "-0.009 | \n", "-1 | \n", "2 | \n", "0.107 | \n", "False | \n", "
| 3578 | \n", "20240104 | \n", "8.39379 | \n", "8.32072 | \n", "8.39379 | \n", "8.29332 | \n", "0.080 | \n", "-0.153 | \n", "-0.193 | \n", "2024-01-04 | \n", "20240104 | \n", "-1.59246 | \n", "-0.359779 | \n", "-0.018 | \n", "-1 | \n", "2 | \n", "0.098 | \n", "False | \n", "
| 3579 | \n", "20240105 | \n", "8.31158 | \n", "8.46686 | \n", "8.62213 | \n", "8.28418 | \n", "0.087 | \n", "-0.139 | \n", "-0.183 | \n", "2024-01-05 | \n", "20240105 | \n", "-1.44632 | \n", "-0.326762 | \n", "0.007 | \n", "1 | \n", "3 | \n", "0.080 | \n", "False | \n", "
| 3580 | \n", "20240108 | \n", "8.43032 | \n", "8.35725 | \n", "8.49426 | \n", "8.32072 | \n", "0.076 | \n", "-0.135 | \n", "-0.173 | \n", "2024-01-08 | \n", "20240108 | \n", "-1.55593 | \n", "-0.351526 | \n", "-0.011 | \n", "-1 | \n", "4 | \n", "0.087 | \n", "False | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 3813 | \n", "20241225 | \n", "11.86000 | \n", "11.92000 | \n", "12.02000 | \n", "11.84000 | \n", "0.050 | \n", "0.080 | \n", "0.055 | \n", "2024-12-25 | \n", "20241225 | \n", "2.00682 | \n", "0.453394 | \n", "0.019 | \n", "1 | \n", "66 | \n", "0.031 | \n", "False | \n", "
| 3814 | \n", "20241226 | \n", "11.92000 | \n", "11.86000 | \n", "11.93000 | \n", "11.78000 | \n", "0.051 | \n", "0.087 | \n", "0.062 | \n", "2024-12-26 | \n", "20241226 | \n", "1.94682 | \n", "0.439838 | \n", "0.001 | \n", "1 | \n", "66 | \n", "0.050 | \n", "False | \n", "
| 3815 | \n", "20241227 | \n", "11.87000 | \n", "11.83000 | \n", "11.90000 | \n", "11.66000 | \n", "0.044 | \n", "0.089 | \n", "0.067 | \n", "2024-12-27 | \n", "20241227 | \n", "1.91682 | \n", "0.433061 | \n", "-0.007 | \n", "-1 | \n", "67 | \n", "0.051 | \n", "False | \n", "
| 3816 | \n", "20241230 | \n", "11.78000 | \n", "11.95000 | \n", "11.97000 | \n", "11.78000 | \n", "0.052 | \n", "0.100 | \n", "0.074 | \n", "2024-12-30 | \n", "20241230 | \n", "2.03682 | \n", "0.460172 | \n", "0.008 | \n", "1 | \n", "68 | \n", "0.044 | \n", "True | \n", "
| 3817 | \n", "20241231 | \n", "11.93000 | \n", "11.70000 | \n", "11.99000 | \n", "11.70000 | \n", "0.020 | \n", "0.086 | \n", "0.076 | \n", "2024-12-31 | \n", "20241231 | \n", "1.78682 | \n", "0.403690 | \n", "-0.032 | \n", "-1 | \n", "69 | \n", "0.052 | \n", "False | \n", "
242 rows × 17 columns
\n", "| \n", " | date | \n", "open | \n", "close | \n", "high | \n", "low | \n", "macd | \n", "macd_dif | \n", "macd_dea | \n", "datetime | \n", "datetime_text | \n", "close_to_median | \n", "macd_close | \n", "macd_diff | \n", "macd_trend | \n", "macd_trend_group | \n", "pre_macd | \n", "point | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3645 | \n", "20240418 | \n", "9.66336 | \n", "9.86430 | \n", "10.07437 | \n", "9.64509 | \n", "0.017 | \n", "0.043 | \n", "0.034 | \n", "2024-04-18 | \n", "20240418 | \n", "-0.04888 | \n", "-0.011043 | \n", "0.055 | \n", "1 | \n", "23 | \n", "-0.038 | \n", "True | \n", "
| 3650 | \n", "20240425 | \n", "9.59029 | \n", "9.69076 | \n", "9.69989 | \n", "9.57202 | \n", "0.017 | \n", "0.057 | \n", "0.048 | \n", "2024-04-25 | \n", "20240425 | \n", "-0.22242 | \n", "-0.050251 | \n", "0.004 | \n", "1 | \n", "25 | \n", "0.013 | \n", "True | \n", "
| 3652 | \n", "20240429 | \n", "9.64509 | \n", "9.87343 | \n", "9.95563 | \n", "9.60856 | \n", "0.039 | \n", "0.075 | \n", "0.055 | \n", "2024-04-29 | \n", "20240429 | \n", "-0.03975 | \n", "-0.008981 | \n", "0.022 | \n", "1 | \n", "27 | \n", "0.017 | \n", "True | \n", "
| 3658 | \n", "20240510 | \n", "9.83690 | \n", "9.99217 | \n", "10.01044 | \n", "9.82776 | \n", "0.040 | \n", "0.111 | \n", "0.091 | \n", "2024-05-10 | \n", "20240510 | \n", "0.07899 | \n", "0.017846 | \n", "0.010 | \n", "1 | \n", "29 | \n", "0.030 | \n", "True | \n", "
| 3662 | \n", "20240516 | \n", "9.90997 | \n", "10.20224 | \n", "10.23878 | \n", "9.89170 | \n", "0.046 | \n", "0.133 | \n", "0.110 | \n", "2024-05-16 | \n", "20240516 | \n", "0.28906 | \n", "0.065306 | \n", "0.026 | \n", "1 | \n", "31 | \n", "0.020 | \n", "True | \n", "
| 3808 | \n", "20241218 | \n", "11.58000 | \n", "11.65000 | \n", "11.74000 | \n", "11.57000 | \n", "0.005 | \n", "0.048 | \n", "0.045 | \n", "2024-12-18 | \n", "20241218 | \n", "1.73682 | \n", "0.392394 | \n", "0.001 | \n", "1 | \n", "64 | \n", "0.004 | \n", "True | \n", "
| 3811 | \n", "20241223 | \n", "11.64000 | \n", "11.73000 | \n", "11.84000 | \n", "11.64000 | \n", "0.008 | \n", "0.049 | \n", "0.045 | \n", "2024-12-23 | \n", "20241223 | \n", "1.81682 | \n", "0.410468 | \n", "0.013 | \n", "1 | \n", "66 | \n", "-0.005 | \n", "True | \n", "
| 3816 | \n", "20241230 | \n", "11.78000 | \n", "11.95000 | \n", "11.97000 | \n", "11.78000 | \n", "0.052 | \n", "0.100 | \n", "0.074 | \n", "2024-12-30 | \n", "20241230 | \n", "2.03682 | \n", "0.460172 | \n", "0.008 | \n", "1 | \n", "68 | \n", "0.044 | \n", "True | \n", "