如何在PineScript中比较数组并通过循环在表格展示结果?
在PineScript中实现数组循环判断并展示为表格
这个需求在PineScript中完全可行,下面是具体实现方案:
1. 循环实现判断逻辑
首先确保三个数组长度一致,通过array.size()获取数组长度后,用for循环遍历每个索引,对对应位置的元素执行判断逻辑,将结果存入新的字符串数组中。
核心逻辑:遍历每个索引i,若float_1_array[i] > 1且float_2_array[i] > 4,则取string_array[i]作为结果,否则取空字符串。
2. 用Table组件展示结果
PineScript的table函数可以创建自定义表格,用来展示原始数组数据和判断结果,让输出更直观。
完整代码示例
//@version=5 indicator("数组判断与表格展示", overlay=false) // 定义输入数组 string_array = array.from("A", "B", "C", "D") float_1_array = array.from(1.5, 2.5, 0.8, 3.2) float_2_array = array.from(4.5, 5.5, 6.5, 3.8) // 初始化结果数组 result_array = array.new_string() // 循环执行判断逻辑 array_size = array.size(string_array) for i = 0 to array_size - 1 float1_val = array.get(float_1_array, i) float2_val = array.get(float_2_array, i) // 执行判断 result = float1_val > 1 and float2_val > 4 ? array.get(string_array, i) : "" array.push(result_array, result) // 创建并填充表格 var table result_table = table.new(position.top_right, 4, array_size + 1) // 设置表头 table.cell(result_table, 0, 0, "序号") table.cell(result_table, 1, 0, "字符串值") table.cell(result_table, 2, 0, "Float1值") table.cell(result_table, 3, 0, "判断结果") // 填充表格内容 for i = 0 to array_size - 1 table.cell(result_table, 0, i + 1, str.tostring(i + 1)) table.cell(result_table, 1, i + 1, array.get(string_array, i)) table.cell(result_table, 2, i + 1, str.tostring(array.get(float_1_array, i))) table.cell(result_table, 3, i + 1, array.get(result_array, i))
代码说明
- 用
var声明表格,避免每次脚本重绘都重新创建表格 - 循环遍历数组时,通过
array.get()获取对应索引的元素值 - 判断逻辑使用PineScript的三元运算符
condition ? val1 : val2实现,和你描述的逻辑完全匹配 - 表格的列数设为4(序号、字符串值、Float1值、判断结果),行数为数组长度+1(包含表头)
内容的提问来源于stack exchange,提问作者Arun_K_Bhaskar
相关产品推荐
相关产品推荐

