如何在Pinescript中实现外部数据访问?支持CSV等外部资源接入吗?
Pine Script 外部数据接入方案
Pine Script不支持直接读取外部CSV或本地文件,但有比枚举、硬编码数千行字符串更高效的方案,以下是可行的实现方式:
1. 自定义品种导入+跨品种数据调用
如果你的CSV数据是静态或低频更新的,可以先将CSV导入TradingView作为自定义品种:
- 把CSV格式调整为TradingView支持的OHLC或单值格式(比如时间戳+数值)
- 通过TradingView的「导入数据」功能创建自定义品种
- 在你的Pine Script中用
request.security()函数拉取该自定义品种的数据:// 拉取自定义品种的收盘价(假设自定义品种代码为"MY_CSV_DATA") externalData = request.security("MY_CSV_DATA", timeframe.period, close)
2. 字符串批量解析为数组
如果数据量不大但需要硬编码,不要写数千行字符串,而是把CSV内容压缩为单条分隔符分隔的字符串,再解析为数组:
// 输入CSV格式的字符串(替换为你的数据) rawData = input.string("2024-01-01,100;2024-01-02,105;2024-01-03,102", title="外部数据") // 按行拆分 dataRows = str.split(rawData, ";") // 初始化数组存储数据 var dataArray = array.new_float() var dateArray = array.new_string() // 循环解析每一行 for row in dataRows parts = str.split(row, ",") if array.size(parts) == 2 array.push(dateArray, parts[0]) array.push(dataArray, str.tofloat(parts[1]))
3. Webhook 实时数据推送(动态数据场景)
如果需要实时获取外部动态数据,可以通过TradingView Webhook将外部数据推送到脚本中:
- 外部服务通过POST请求将数据发送到你的TradingView Webhook URL
- 在Pine Script中用
var变量存储接收到的Webhook数据,供逻辑调用:var float externalValue = na // 监听Webhook推送的消息(假设消息格式为{"value": 123}) if request.webhook_message != na externalValue = request.webhook_message.value
4. 跨脚本调用(间接获取外部数据)
如果外部数据是由另一个Pine脚本生成的,可以用request.invoke()调用目标脚本的输出结果:
// 调用目标脚本(假设脚本ID为"1234567",输出名为"externalData") externalData = request.invoke("1234567", "externalData")
内容的提问来源于stack exchange,提问作者Oli
相关产品推荐
相关产品推荐

