Pinescript编写两只股票P/E Spread脚本报错求助
解决Pinescript中P/E价差计算的类型错误问题
错误原因
你遇到的类型错误,本质是用字符串类型变量做减法运算。错误提示里的stock1_pe是字符串类型,但减法需要整数/浮点数这类数值类型,所以触发报错。
正确获取P/E并计算价差的步骤
在Pinescript中,必须用request.financial()函数获取股票的基本面数据(比如P/E),这个函数会返回数值类型的结果,而非字符串。
完整示例代码
//@version=5 indicator("两只股票P/E价差", overlay=false) // 1. 定义两只股票的交易代码(格式:交易所:代码) stock_a_ticker = "NASDAQ:AAPL" stock_b_ticker = "NASDAQ:MSFT" // 2. 获取滚动12个月(TTM)的动态P/E数值 stock_a_pe = request.financial(stock_a_ticker, "PE", "TTM") stock_b_pe = request.financial(stock_b_ticker, "PE", "TTM") // 3. 计算P/E价差,同时处理空值(避免无数据时出错) pe_spread = na(stock_a_pe) or na(stock_b_pe) ? na : stock_a_pe - stock_b_pe // 4. 可视化:绘制基准线和价差曲线 hline(0, "基准线", color=color.gray, linestyle=hline.style_dashed) plot(pe_spread, "P/E价差", color=color.blue, linewidth=2)
关键说明
request.financial()参数细节:- 第一个参数是股票完整交易代码(需带上交易所前缀)
- 第二个参数
"PE"对应市盈率指标,其他基本面指标可查阅Pinescript内置列表 - 第三个参数
"TTM"表示取过去12个月的滚动数据,也可替换为"FY"(财年)等周期
- 空值处理:部分股票(如亏损公司)没有P/E数据,用
na()判断后返回空值,避免脚本运行异常
内容的提问来源于stack exchange,提问作者user30027963
相关产品推荐
相关产品推荐

