如何在Pine Script中实现数组的逐元素相加?
Pine Script中实现数组/OHLC元组逐元素相加的方法
在Pine Script里,直接对两个从request.security获取的OHLC元组执行加法会触发语法错误,示例代码及报错如下:
示例代码:
ETH = request.security("CRYPTOCAP:BTC", 'D', [open,high,low, close]) BTC = request.security("GLASSNODE:ETH_SUPPLY*INDEX:ETHUSD", 'D', [open,high,low, close]) TOTAL = ETH+BTC
报错信息:
Syntax error: Variables of array type are not supported!
已知可以逐个元素分别相加,但希望找到更简洁的实现方式,避免重复写多行代码。
针对OHLC元组的简洁实现
Pine Script不支持直接对元组做算术运算,但可以通过元组索引+批量打包的方式,用一行代码完成所有元素的相加:
ETH_ohlc = request.security("CRYPTOCAP:BTC", 'D', [open, high, low, close]) BTC_ohlc = request.security("GLASSNODE:ETH_SUPPLY*INDEX:ETHUSD", 'D', [open, high, low, close]) // 一行完成四个OHLC元素的逐元素相加,返回新的元组 TOTAL = [ETH_ohlc[0]+BTC_ohlc[0], ETH_ohlc[1]+BTC_ohlc[1], ETH_ohlc[2]+BTC_ohlc[2], ETH_ohlc[3]+BTC_ohlc[3]]
针对原生数组的通用实现
如果是用array.new_float()等方法创建的数值数组,可以使用array.map()函数结合自定义加法逻辑,实现通用的逐元素相加,无需手动遍历索引:
// 创建两个示例数值数组 arr_eth = array.new_float(4, 1500) arr_btc = array.new_float(4, 30000) // 定义元素相加的逻辑 add_elements = (x, y) => x + y // 生成逐元素相加后的新数组 total_arr = array.map(add_elements, arr_eth, arr_btc)
内容的提问来源于stack exchange,提问作者Roko Mijic
相关产品推荐
相关产品推荐

