使用Python对股票数据进行分析

          最近越发痴迷研究金融产品,不仅仅是因为前段时间重新对板块进行了新的布局,也相信如果理财是一生都需要做的事也愿意花时间去好好研究一下.大部分人一致认为定投会受益,说的人多了大家也就不去验证了.今天突然心血来潮看有关金融的书籍发现一种很玄学的手段去买卖股票

          也对  "定投的受益数据 "与 "玄学受益数据"做一个数据上验证

验证步骤如下:

1.以茅台发行到今天的数据为例,计算每个月 月初定投 月末进行卖出的受益

    1.1获取茅台发行到现在的所有成交数据,保存到本地存储

-Date:2022/4/5
-Author:RenJiaXing
-Subject:equity analyst
pip install tushare
Requirement already satisfied: tushare in d:\an\lib\site-packages (1.2.84)Note: you may need to restart the kernel to use updated packages.
Requirement already satisfied: pandas in d:\an\lib\site-packages (from tushare) (1.3.4)
Requirement already satisfied: simplejson in d:\an\lib\site-packages (from tushare) (3.17.6)
Requirement already satisfied: requests in d:\an\lib\site-packages (from tushare) (2.26.0)
Requirement already satisfied: websocket-client==0.57.0 in d:\an\lib\site-packages (from tushare) (0.57.0)
Requirement already satisfied: lxml in d:\an\lib\site-packages (from tushare) (4.6.3)
Requirement already satisfied: bs4 in d:\an\lib\site-packages (from tushare) (0.0.1)
Requirement already satisfied: six in d:\an\lib\site-packages (from websocket-client==0.57.0->tushare) (1.16.0)
Requirement already satisfied: beautifulsoup4 in d:\an\lib\site-packages (from bs4->tushare) (4.10.0)Requirement already satisfied: soupsieve>1.2 in d:\an\lib\site-packages (from beautifulsoup4->bs4->tushare) (2.2.1)
Requirement already satisfied: pytz>=2017.3 in d:\an\lib\site-packages (from pandas->tushare) (2021.3)
Requirement already satisfied: python-dateutil>=2.7.3 in d:\an\lib\site-packages (from pandas->tushare) (2.8.2)
Requirement already satisfied: numpy>=1.17.3 in d:\an\lib\site-packages (from pandas->tushare) (1.20.3)
Requirement already satisfied: certifi>=2017.4.17 in d:\an\lib\site-packages (from requests->tushare) (2021.10.8)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in d:\an\lib\site-packages (from requests->tushare) (1.26.7)
Requirement already satisfied: idna<4,>=2.5 in d:\an\lib\site-packages (from requests->tushare) (3.2)
Requirement already satisfied: charset-normalizer~=2.0.0 in d:\an\lib\site-packages (from requests->tushare) (2.0.4)import tushare as ts
import pandas as pd
from pandas import DataFrame,Series
import numpy as np
#Climb down the stock information
df=ts.get_k_data(code='600519',start='2000-01-01')#Get the stock information stored locally
df.to_csv('./maotai.csv')#Read local stock information
df=pd.read_csv('./maotai.csv')Unnamed: 0	date	open	close	high	low	volume	code
0	0	2001-08-27	-91.359	-91.174	-90.778	-91.654	406318.00	600519
1	1	2001-08-28	-91.274	-90.941	-90.916	-91.341	129647.79	600519
2	2	2001-08-29	-90.920	-91.027	-90.916	-91.076	53252.75	600519
3	3	2001-08-30	-91.044	-90.899	-90.826	-91.094	48013.06	600519
4	4	2001-08-31	-90.890	-90.915	-90.806	-90.952	23231.48	600519
...	...	...	...	...	...	...	...	...
4919	4919	2022-03-28	1625.000	1660.800	1664.800	1604.000	57542.00	600519
4920	4920	2022-03-29	1661.500	1667.000	1691.500	1661.500	25935.00	600519
4921	4921	2022-03-30	1698.000	1730.100	1730.100	1695.000	42433.00	600519
4922	4922	2022-03-31	1720.000	1719.000	1738.600	1708.800	25174.00	600519
4923	4923	2022-04-01	1729.940	1780.010	1793.000	1721.690	44862.00	600519
4924 rows × 8 columns

   从获取结果可以看出该股票从成立2001-8-27 第一次发行, 到现在2022-4-1   一共有4923开盘数据

  1.2 对数据进行处理,为后续的工作准备

#Delete data that is not used for reading data, and process data types  
#删除df中指定的一列   drop:label 为下标  
#axis为轴向 1表示列 0表示行     inplace为true表示在原数据中修改
df.drop(labels='Unnamed: 0',axis=1,inplace=True)
df.head()
date	open	close	high	low	volume	code
0	2001-08-27	-91.359	-91.174	-90.778	-91.654	406318.00	600519
1	2001-08-28	-91.274	-90.941	-90.916	-91.341	129647.79	600519
2	2001-08-29	-90.920	-91.027	-90.916	-91.076	53252.75	600519
3	2001-08-30	-91.044	-90.899	-90.826	-91.094	48013.06	600519
4	2001-08-31	-90.890	-90.915	-90.806	-90.952	23231.48	600519
#Look at the data type for each column  
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4924 entries, 0 to 4923
Data columns (total 7 columns):#   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  0   date    4924 non-null   object 1   open    4924 non-null   float642   close   4924 non-null   float643   high    4924 non-null   float644   low     4924 non-null   float645   volume  4924 non-null   float646   code    4924 non-null   int64  
dtypes: float64(5), int64(1), object(1)
memory usage: 269.4+ KB#Change the date data type to facilitate subsequent data processing
#Converts the date obj type to the time type
df['date']=pd.to_datetime(df['date'])<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4924 entries, 0 to 4923
Data columns (total 7 columns):#   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         0   date    4924 non-null   datetime64[ns]1   open    4924 non-null   float64       2   close   4924 non-null   float64       3   high    4924 non-null   float64       4   low     4924 non-null   float64       5   volume  4924 non-null   float64       6   code    4924 non-null   int64         
dtypes: datetime64[ns](1), float64(5), int64(1)
memory usage: 269.4 KB#Use the date column as the row index of the original data
df.set_index('date',inplace=True)open	close	high	low	volume	code
date						
2001-08-27	-91.359	-91.174	-90.778	-91.654	406318.00	600519
2001-08-28	-91.274	-90.941	-90.916	-91.341	129647.79	600519
2001-08-29	-90.920	-91.027	-90.916	-91.076	53252.75	600519
2001-08-30	-91.044	-90.899	-90.826	-91.094	48013.06	600519
2001-08-31	-90.890	-90.915	-90.806	-90.952	23231.48	600519

  对获取的数据数据类型等进行习惯性的重新设置

 1.3 计算需求: 

      ①小练习(其实就是网不太好,连接口总是断  测试一下)    

  •            获取闭盘比开盘上涨3%的日期
#Find the date when the stock closed up more than 3% from the opening
#伪代码   (收盘-开盘)/开盘>0.03
(df['open']-df['close'])/df['open']>0.03#If a Boolean value is generated during analysis, the next step is to use the Boolean as the row index
#If a Boolean is used as a row index, it can fetch true's data
df.loc[(df['open']-df['close'])/df['open']>0.03].index#Get true row dataDatetimeIndex(['2006-05-29', '2006-06-12', '2006-10-09', '2006-10-25','2006-11-14', '2006-11-16', '2006-11-29', '2006-11-30','2006-12-11', '2006-12-14',...'2021-07-26', '2021-07-27', '2021-07-29', '2021-08-17','2021-08-26', '2021-10-18', '2021-12-29', '2022-01-13','2022-01-28', '2022-03-07'],dtype='datetime64[ns]', name='date', length=680, freq=None)
  •            获取开盘比前一天下跌2%的日期
#Find all the dates when the stock opened down more than 2% from the previous day's close
#伪代码:(开盘-前日收盘)/前日收盘<-0.02
(df['open']-df['close'].shift(1))/df['close'].shift(1)<-0.02
df.loc[(df['open']-df['close'].shift(1))/df['close'].shift(1)<-0.02].indexDatetimeIndex(['2006-02-13', '2006-04-17', '2006-04-18', '2006-04-19','2006-04-20', '2006-05-25', '2006-05-30', '2006-12-27','2007-01-04', '2007-01-22',...'2020-03-23', '2020-10-26', '2021-02-26', '2021-03-04','2021-04-28', '2021-08-20', '2021-11-01', '2022-03-14','2022-03-15', '2022-03-28'],dtype='datetime64[ns]', name='date', length=378, freq=None)

    ②计算定投定卖的受益

         需求分析:   

         时间节点: 2020-01-01到现在

         实行过程:每个月月初进行定投1手(100股) 月末进行卖出

new_df=df['2010-01':]
#Buy stocks: Find out the corresponding row data for the first trading day of each month (opening price)  
#Extract specified data from raw data by month for data resampling  
df_monthly=new_df.resample('M').first()open	close	high	low	volume	code
date						
2010-01-31	35.594	34.047	35.594	33.573	44304.88	600519
2010-02-28	33.250	33.258	33.776	31.845	29655.94	600519
2010-03-31	31.424	31.267	32.176	31.079	21734.74	600519
2010-04-30	25.662	26.624	26.954	25.647	23980.83	600519
2010-05-31	2.529	3.017	3.708	1.702	23975.16	600519
...	...	...	...	...	...	...
2021-12-31	1950.000	1932.990	1959.950	1919.020	26254.00	600519
2022-01-31	2055.000	2051.230	2068.950	2014.000	33843.00	600519
2022-02-28	1900.990	1867.960	1913.560	1850.000	35150.00	600519
2022-03-31	1802.000	1858.480	1863.570	1802.000	47379.00	600519
2022-04-30	1729.940	1780.010	1793.000	1721.690	44862.00	600519
148 rows × 6 columns#The total amount of money spent on buying a stock
cost=df_monthly['open'].sum()*1007779065.800000001#The valuation of shares that have not been sold in 2022 is included in the total earnings
last_monry=200*new_df['close'][-1]#Calculate total revenue
resv+last_monry-cost999771.0

可以看出 从2020-01-01 到今天  每个月定投100股 到今天(当然这个月的没有卖出 以最近闭盘价格进行估值计算),  到目前为止应该受益    999771.0元

2.以茅台发行到今天的数据为例,使用双均线策略玄学受益

  •    获取5日均线和30日均线
#Double moving average strategy formulation
df=pd.read_csv('./maotai.csv').drop(labels='Unnamed: 0',axis=1)
dfdate	open	close	high	low	volume	code
0	2001-08-27	-91.359	-91.174	-90.778	-91.654	406318.00	600519
1	2001-08-28	-91.274	-90.941	-90.916	-91.341	129647.79	600519
2	2001-08-29	-90.920	-91.027	-90.916	-91.076	53252.75	600519
3	2001-08-30	-91.044	-90.899	-90.826	-91.094	48013.06	600519
4	2001-08-31	-90.890	-90.915	-90.806	-90.952	23231.48	600519
...	...	...	...	...	...	...	...
4919	2022-03-28	1625.000	1660.800	1664.800	1604.000	57542.00	600519
4920	2022-03-29	1661.500	1667.000	1691.500	1661.500	25935.00	600519
4921	2022-03-30	1698.000	1730.100	1730.100	1695.000	42433.00	600519
4922	2022-03-31	1720.000	1719.000	1738.600	1708.800	25174.00	600519
4923	2022-04-01	1729.940	1780.010	1793.000	1721.690	44862.00	600519
4924 rows × 7 columns#Change the date data type to facilitate subsequent data processing
#Converts the date obj type to the time type
df['date']=pd.to_datetime(df['date'])#Use the date column as the row index of the original data
df.set_index('date',inplace=True)df.head()open	close	high	low	volume	code
date						
2001-08-27	-91.359	-91.174	-90.778	-91.654	406318.00	600519
2001-08-28	-91.274	-90.941	-90.916	-91.341	129647.79	600519
2001-08-29	-90.920	-91.027	-90.916	-91.076	53252.75	600519
2001-08-30	-91.044	-90.899	-90.826	-91.094	48013.06	600519
2001-08-31	-90.890	-90.915	-90.806	-90.952	23231.48	600519#计算该股票的五日均线和 60日均线
#均线:对于每一个交易日,都可以计算前N天的移动平均值 并将这些移动
#平均值连接成为一条线a\5天和10天的是短线操作,称为日均线指标b\30天和60天的是中期均线指标 称为季均线指标c\120和240的是长期均线指标 称为年均线指标ma5=df['close'].rolling(5).mean()
ma30=df['close'].rolling(30).mean()
ma30date
2001-08-27            NaN
2001-08-28            NaN
2001-08-29            NaN
2001-08-30            NaN
2001-08-31            NaN...     
2022-03-28    1771.946333
2022-03-29    1764.492333
2022-03-30    1759.077333
2022-03-31    1753.477667
2022-04-01    1749.244667
Name: close, Length: 4924, dtype: float64#画出五日均线
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(ma5)
plt.plot(ma30)

          由于两条线的密度和像素因素,两条线几乎重合  再对数据进行计划处理

  •  对数据进行截取细化,再次画出两条均线的折线图
plt.plot(ma5[50:180])
plt.plot(ma30[50:180])

  • 对数据进行重新分析

           分析输出所有的金叉日期和死叉日期
          我们分析指标中的两根线  一根为短时间内的指标线  一根为长时间的指标线
               a\  如果短时间的指标方向朝上 并且穿过了较长时间的指标线
                    这种状态叫做金叉
              b\  如果短时间的指标方向朝下 并且穿过了较长时间的指标线
                    这种状态叫做死叉
    
         一般情况下出现金叉后操作趋向买入 

ma5=ma5[30:]
ma30=ma30[30:]
s1=ma5<ma30
s2=ma5>ma30
df=df[30:]death_ex=s1&s2.shift(1)#判断死叉的条件
df.loc[death_ex]#死叉对应的行数据
death_date=df.loc[death_ex].index
death_dateDatetimeIndex(['2002-01-17', '2002-01-30', '2002-03-29', '2002-07-29','2002-12-27', '2003-03-17', '2003-04-22', '2003-06-20','2003-06-30', '2003-08-04',...'2020-03-18', '2020-08-10', '2020-09-21', '2020-10-27','2021-03-01', '2021-04-15', '2021-05-06', '2021-06-22','2021-11-04', '2022-01-06'],dtype='datetime64[ns]', name='date', length=104, freq=None)#判断金叉的条件
golden_ex=-(s1|s2.shift(1))
golden_date=df.loc[golden_ex].index
golden_dateDatetimeIndex(['2001-08-27', '2001-08-28', '2001-08-29', '2001-08-30','2001-08-31', '2001-09-03', '2001-09-04', '2001-09-05','2001-09-06', '2001-09-07',...'2020-03-03', '2020-04-02', '2020-08-19', '2020-10-14','2020-11-05', '2021-04-02', '2021-04-16', '2021-05-20','2021-09-16', '2021-11-23'],dtype='datetime64[ns]', name='date', length=133, freq=None)

需求:--假如从2010年1月1日开始初始资金100000元,金叉尽量买入   死叉全部卖出,则到今天为止  收益如何?
   分析:
    --买卖股票的单价使用开盘单价
    --买卖的时间
    --最终手中会有剩余的没有卖出,估量剩余的价值

s1=Series(data=1,index=golden_date)
s2=Series(data=0,index=death_date)
s=s1.append(s2)
s=s.sort_index()s=s['2010':]frist_money=100000#本金
money=frist_money#可变资金
hold=0#购买股数   100股=1手for i in range(0,len(s)):if s[i]==1:time=s.index[i]#金叉时间p=df.loc[time] ['open']#购买单价hand_count=money//(p*100)hold=hand_count*100money-=(hold*p)#购买后剩余钱数else:death_time=s.index[i]p_death=df.loc[death_time] ['open']money+=(p_death*hold)hold=0
#判断最后一天为金叉还是死叉
last_monry=hold*df['close'][-1]
#总收益
money+last_monry-frist_money51976209.09999999

收益  51976209.09999999

本内容只作为根据以往的一种数据参考,双均线是影响因素之一 并不是造成盈亏的最终因素.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/47305.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python进行股票分析

Python进行股票分析 1.准备工作 可以结合视频进行学习&#xff0c;视频链接&#xff1a;视频 2.工具以及所需库 jupyter notebooktushare、pandas、numpy、matplotlib3.库的安装 打开anaconda prompt命令框输入以下命令&#xff1a;conda install pandasconda install numpyc…

我用Python写了个股票大数据分析工具,真香!

近日A股指数大波动&#xff0c;各路股神又纷纷登场&#xff01;但相比个人&#xff0c;通过Python技术来实现的量化交易更值得相信&#xff01; 什么是量化交易&#xff1f; 我们利用计算机技术&#xff0c;通过建模分析、优化参数等手段&#xff0c;从历史金融数据中挖掘出影响…

Python3对股票数据进行分析

目录 一、量化交易概述 1、量化交易&#xff08;投资方法&#xff09; 2、算法交易&#xff08;自动交易、黑盒交易或机器交易&#xff09; 3、量化策略 4、量化选股 5、股票回测 二、股票数据 三、股票数据分析 1、导入股票时间序列数据 2、绘制股票成交量的时间序列…

python股票数据简单分析

一、简单说明 1、需求 2、数据 3、 部分结果 画的图 筛选的股票 二、学习收获 1、如何将DataFrame列的object类型转为自己需要float类型&#xff1f; 这里成交量为例子 转为相应float类型&#xff1f; 具体方法是&#xff1a; 首先先将该字段转换成列表类型&#xff0c;列…

自己动手写股票数据分析软件之数据获取

前言 本文旨在分享编程经验&#xff0c;非炒股指导软件。 一、Tushare数据介绍 Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程&#xff0c;能够为金融分析人员提供快速、整洁、和多样的便于分析的数据&a…

程序员在群里“匿名”骂老板,第二天被开除,聊天记录曝光

程序员的工作是很辛苦的&#xff0c;不过报酬也是比较丰富&#xff0c;一个经验丰富的程序员&#xff0c;几万的工资很正常&#xff0c;要是有别的收入&#xff0c;兼职写代码&#xff0c;也能赚到不少钱。现在的程序员呢&#xff0c;是越来越多人想要去做了。好多人对程序员似…

百度程序员妻子质疑老公不忠!每天很晚回家!周五下班不回家,说领导带他喝酒!结婚一年就出轨?...

请点击上面  一键关注&#xff01; 前几天我们刚刚爆料了华为工程师因为老加班导致妻子出轨的故事&#xff0c;今天又有一位百度员工的妻子怀疑自己老公出轨.......互联网的世界究竟有多乱&#xff1f; 每天很晚回家&#xff0c;周五晚上说自己跟领导去喝酒......妻子心里忐忑…

AI大模型接管谷歌搜索:一夜之间,整个领域变天了

来源&#xff1a;机器之心 最近几个月&#xff0c;我们已经见识到各种 AI 工具被重新发明&#xff0c;微软先后将 Office 全家桶接入 GPT-4&#xff0c;最近又把必应和 ChatGPT 插件的能力全部注入到 Windows 系统。 与此同时&#xff0c;在搜索领域占据重要地位的谷歌也不甘落…

推荐 - 腾讯云技术社区公众号

今天向各位推荐的是腾讯云技术社区的公众号&#xff0c;是腾讯官方推出的技术知识分享阵地&#xff0c;每周公开腾讯最新的技术工程方案&#xff08;例如微信、健康码、王者荣耀等知名业务的技术架构&#xff09;、ChatGPT 等行业前沿热点解读、研发经验和工作方法等干货&#…

LLM系列 | 13: 如何链接多个Prompt处理复杂任务?以智能客服为例

简介 溪云初起日沉阁&#xff0c;山雨欲来风满楼。 小伙伴们好&#xff0c;我是微信公众号《小窗幽记机器学习》的小编&#xff1a;卖老班章的小女孩。紧接前面几篇ChatGPT Prompt工程和应用系列文章&#xff1a; 04:ChatGPT Prompt编写指南05:如何优化ChatGPT Prompt&…

chatgpt赋能python:Python调用蓝牙:从入门到实战

Python调用蓝牙&#xff1a;从入门到实战 如果你想要通过Python调用蓝牙&#xff0c;以此来读取和操作周围的设备&#xff0c;那么你已经来到了正确的地方。在本篇文章中&#xff0c;我们将探讨如何使用Python编程语言来与周围的蓝牙设备进行通信&#xff0c;为你的应用程序增…

chatgpt赋能python:如何使用Python操作蓝牙——一篇详细的教程

如何使用Python操作蓝牙——一篇详细的教程 蓝牙技术已经成为了我们生活中不可或缺的一部分&#xff0c;它可用于连接各种设备&#xff0c;例如耳机、音箱、手表&#xff0c;甚至是汽车。而Python作为一种广泛应用于各种领域的高级编程语言&#xff0c;也可以用来操作蓝牙设备…

做什么生意是最稳定的呢?

只要做生意就会有风险&#xff0c;钱存在银行最没有风险。 风险的大小取决于你承受能力&#xff0c;如果你只有几万元&#xff0c;那么摆地摊进货对于你来说都是大风险。如果你有几千万上亿&#xff0c;炒个十万的期货都对你来说无关紧要。 房产投资风险最小 投资也可以算是…

教你怎么鉴别发霉大米?

珍宝岛大米是黑龙江省鸡西虎林市的名优土特产&#xff0c;是鸡西市的三大地理标志保护产品之一。黑龙江省虎林市的虎林镇、杨岗镇、虎头镇、迎春镇、宝东镇、东方红镇、伟光乡、新乐乡、忠诚乡、阿北乡、珍宝岛乡等12个乡镇是经过我国农业部门实地考察过亲自验证的名优产地&…

设计模式——命令模式

在软件开发系统中&#xff0c;“方法的请求者”与“方法的实现者”之间经常存在紧密的耦合关系&#xff0c;这不利于软件功能的扩展与维护。例如&#xff0c;想对方法进行“撤销、重做、记录”等处理都很不方便&#xff0c;因此“如何将方法的请求者与实现者解耦&#xff1f;”…

java毕业设计——基于java+JavaBean+jsp的网上零食销售系统设计与实现(毕业论文+程序源码)——网上零食销售系统

基于javaJavaBeanjsp的网上零食销售系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于javaJavaBeanjsp的网上零食销售系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答…

2021年中国电饭锅(电饭煲)行业现状及前景分析:个性化消费推动市场向高端、智能化发展[图]

一、电饭锅&#xff08;电饭煲&#xff09;产业链 电饭煲又称作电锅&#xff0c;电饭锅。是利用转变为热能的&#xff0c;具有对进行、、炖、煲、煨等多种操作功能&#xff0c;使用方便、安全可靠。它不但能够把食物做熟&#xff0c;而且能够保温&#xff0c;使用起来清洁卫生&…

设计模式 -- 命令模式(14)

目录 前言定义优点与缺点优点缺点 结构与实现实现需求代码 前言 在现实生活中&#xff0c;命令模式的例子也很多。比如看电视时&#xff0c;我们只需要轻轻一按遥控器就能完成频道的切换&#xff0c;这就是命令模式&#xff0c;将换台请求和换台处理完全解耦了。电视机遥控器&…

我所理解的生活!

写于:2013-7 无码的睁大眼睛看&#xff0c;有码的眯起眼睛看&#xff0c;没有情节的直接删除 ----------------------这就是我所理解的生活&#xff01; 我也许能够一直打着寻找自我的幌子&#xff0c;继续在这个社会招摇撞骗。凭良心说我喜欢千奇百怪的结果&#xff0c;于是…

我用Python爬取美食网站3032个菜谱并分析,没有我不会做的菜!

这是巨变的中国&#xff0c;人和食物&#xff0c;比任何时候走的更快。近日&#xff0c;J哥为了寻味中国&#xff0c;奔走于某五线城市的大街小巷&#xff0c;结果除了累&#xff0c;啥也没寻到。 于是&#xff0c;J哥默默打开了各大美食网站&#xff0c;如豆果美食、下厨房、…