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

如何在Pine Script脚本间传递simple integer?解决参数类型错误

解决Pine Script跨脚本传值至request.security的问题

问题原因

input.source仅支持传递series类型变量,但request.security的calc_bars_count参数要求传入simple int类型,直接传递会触发类型不匹配的报错。我们需要把脚本A中的整数转换为兼容格式,或者更换跨脚本传值方式。

方案一:将脚本A的固定值转为series,脚本B提取为simple int

修改后的脚本A

把原有的bars转为固定不变的series(因是硬编码值,全周期不会改变):

//@version=5
indicator("A", overlay=false)
bars = 100
plot(bars, title="Nr. of bars")
// 输出固定series值供脚本B读取
var float fixed_bars = bars
plot(fixed_bars, title="Fixed Bars", display=display.data_window)

修改后的脚本B

通过input.source选择脚本A的Fixed Bars系列,再在图表初始化时转为simple int:

//@version=5
indicator("B")
// 选择脚本A输出的Fixed Bars系列
bars_series = input.source(title='Nr. of bars', defval=close)
// 图表加载完成后提取series值,转为simple int
var int bars = na
if barstate.islast
    bars := int(bars_series)
// 正常传入calc_bars_count参数
c = request.security(syminfo.tickerid, "D", close, calc_bars_count=bars)
plot(c)

方案二:直接在脚本B中调用脚本A的输出(无需input.source)

如果不需要用户手动选择数据源,可直接调用脚本A的指标输出:

脚本A保持原版本即可

//@version=5
indicator("A")
bars = 100
plot(bars, title="Nr. of bars")

修改后的脚本B

//@version=5
indicator("B")
// 调用脚本A的指标,获取其输出的series值
a_bars_series = ta.indicator("A", syminfo.tickerid, timeframe.period)
// 转换为simple int类型
var int bars = int(a_bars_series)
// 传入request.security参数
c = request.security(syminfo.tickerid, "D", close, calc_bars_count=bars)
plot(c)

补充说明

两种方案的核心逻辑一致:先将脚本A的simple值转为series类型,再在脚本B中转换为request.security要求的simple int类型。方案一适合需要用户手动切换数据源的场景,方案二更适合固定依赖脚本A的场景。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:12:40