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

Pine Script v6动态生成合约名调用request.security获收盘价报错咨询

Pine Script v6动态获取期权合约收盘价解决方案

可以实现动态生成合约并获取收盘价,你遇到的Script requests too many securities. The limit is 40错误,是因为每次合约名变化时,request.security()都会发起新的证券请求,而Pine Script限制最多同时请求40个不同标的,频繁切换合约就会触发这个限制。

解决思路和代码示例

核心是减少不必要的重复请求,只在合约真正变更时发起新请求,避免每根K线都触发请求:

//@version=6
indicator("动态期权收盘价获取", overlay=false)

// 示例变量(替换成你实际的变量)
tradeSymbol = "BANKNIFTY"
expiry = "250130"
CE = "C"
CEstrikePrice = 48300

// 记录上一次的合约名和收盘价
var string last_strike = ""
var float strike_close = na

// 生成当前合约名称
current_strike = tradeSymbol + expiry + CE + str.tostring(CEstrikePrice)

// 仅当合约名称变化时,才发起新的请求
if current_strike != last_strike
    last_strike := current_strike
    // 使用request.security_lowerbar减少重复请求(适合低频切换场景)
    strike_close := request.security_lowerbar(current_strike, "5", close)
else
    // 合约未变更时,沿用已有数据或同步最新收盘价
    strike_close := request.security(current_strike, "5", close, barmerge.gaps_on, barmerge.lookahead_on)

// 可视化收盘价
plot(strike_close, title="期权合约收盘价", color=color.new(color.blue, 0), linewidth=2)

额外优化建议

  • 用request.security_lowerbar()替代普通request.security():它会在合约切换时仅请求一次数据,而非每根K线都请求,大幅降低请求次数。
  • 避免高频切换合约:如果你的策略需要频繁切换期权合约,建议限制切换频率(比如仅在特定时间或信号触发时切换),避免触发40个标的的上限。
  • 清理过期请求:如果同时监控多个合约,及时移除不再需要的标的请求,保持活跃请求数在40以内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:42:08