You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 17:24:56