如何处理TradingView历史数据,仅保留开高低收价格字段?
解决方案
首先,tv.get_hist()返回的是pandas DataFrame,你之前把它赋值给str变量是错误的(str是Python内置类型,会引发冲突),而且直接打印整个DataFrame会包含多余列。我们可以通过DataFrame的列选择和格式化输出实现需求:
修改后的完整代码
from pandas import set_option from tvDatafeed import TvDatafeed, Interval tv = TvDatafeed() set_option('display.max_rows', None) # 获取数据并赋值给合理的变量名 data = tv.get_hist('NAS100','PEPPERSTONE',interval=Interval.in_daily,n_bars=100) # 提取开盘、最高、最低、收盘价这四列 ohlc_data = data[['open', 'high', 'low', 'close']] # 按要求格式逐行打印 for _, row in ohlc_data.iterrows(): print(f"{row['open']} {row['high']} {row['low']} {row['close']}")
代码说明
- 变量名修正:把
str改为data,避免覆盖Python内置的字符串类型。 - 列选择:通过
data[['open', 'high', 'low', 'close']]直接提取需要的四列,tvDatafeed返回的DataFrame默认列名就是这四个(对应你输出里的第三到第六个数值)。 - 格式化输出:用
iterrows()遍历每行数据,用f-string按空格分隔的格式打印四个价格值,完全匹配你要的输出样式。
如果需要一次性打印所有行(不逐行循环),也可以用以下方式:
print(ohlc_data.to_string(header=False, index=False, col_space=6))
这个方法会自动对齐列,输出格式同样符合要求。
内容的提问来源于stack exchange,提问作者FutureSightTrader
相关产品推荐
相关产品推荐

