从 nsetools 导入 Nse import pandas as pd
nse = Nse()
all_stock_codes = nse.get_stock_codes()
companies_with_low_pe = []
对于 all_stock_codes 中的代码: 如果代码=='符号': 继续 尝试: stock_quote = nse.get_quote(代码) pe_ratio = stock_quote.get('priceToBook')
if pe_ratio is not None and pe_ratio <= 20:
companies_with_low_pe.append({
'symbol': code,
'company_name': all_stock_codes[code],
'pe_ratio': pe_ratio
})
except Exception as e:
print(f"Could not fetch data for {code}:{e}")
companies_df = pd.DataFrame(companies_with_low_pe)
print(companies_df)
companies_df.to_csv('companies_with_low_pe.csv', index=False)
#I试图让所有在 nse 交易的股票低于或等于 20,我想从 nsetools 导入 Nse,但它不起作用#
让我们来解决这个问题。以下是遇到的问题的分解,以及如何获取 NSE 实时数据的修复:
1. 安装 nsetools
确保已安装
nsetools
。如果还没有安装,请在终端或命令提示符中使用以下命令:
bash
pip install nsetools
如果在安装时遇到问题,请检查的网络连接并确保使用的是最新版本的 pip(可以使用
pip install --upgrade pip
进行升级)。
2. 代码更正和改进
的代码有一些小的错误,并且可以通过以下方式进行改进:
```python from nsetools import Nse import pandas as pd
nse = Nse()
all_stock_codes = nse.get_stock_codes()
companies_with_low_pe = []
for code in all_stock_codes: if code == 'SYMBOL': # 跳过标题行 continue try: stock_quote = nse.get_quote(code) if stock_quote: # 检查是否获取了报价数据 pe_ratio = stock_quote.get('pricetoBook') # 使用 'pricetoBook',而不是 'priceToBook' if pe_ratio is not None and pe_ratio <= 20: companies_with_low_pe.append({ 'symbol': code, 'company_name': all_stock_codes[code], 'pe_ratio': pe_ratio }) except Exception as e: print(f"Could not fetch data for {code}: {e}")
companies_df = pd.DataFrame(companies_with_low_pe)
print(companies_df)
companies_df.to_csv('companies_with_low_pe.csv', index=False) ```
说明:
-
'pricetoBook' 校正:
nsetools
中的市净率键为'pricetoBook'
,而不是'priceToBook'
。 -
跳过标题行:
我们跳过
all_stock_codes
字典中的标题行('SYMBOL'
)。 -
错误处理改进:
在尝试访问
pe_ratio
之前,我们检查stock_quote
是否不为 None。这可以防止因某些股票的报价数据不可用而导致的错误。
3. 关于实时数据的重要说明
nsetools
不
提供实时数据。它从 NSE 网站抓取数据,该网站有一定延迟(通常为 15-20 分钟)。
要获取 NSE 实时数据,需要使用专门提供实时市场数据的经纪商 API 或数据提供商。 一些流行的选择包括:
- 经纪商 API: 像 Zerodha、Upstox、Angel Broking 等经纪商都提供 API 来访问实时数据。
- 数据提供商: 可以使用像 Refinitiv、Bloomberg 等提供实时市场数据的数据提供商。
使用这些 API 或数据源通常需要订阅并支付费用。
如果决定使用特定 API 或数据提供商,请参阅他们的文档以获取有关如何连接到他们的服务、获取数据以及管理速率限制的说明。
标签:python,finance,nse From: 78773455