TradingView for语句报错「Incorrect for statement」,如何修复Kucoin交易对遍历?
错误原因与修复方案
核心问题分析
你的代码存在三个关键错误:
- 无法直接获取交易所全交易对列表:
syminfo.ticker仅返回当前图表显示的单个交易对代码,并非Kucoin的所有交易对集合,Pine Script没有内置接口能直接拉取交易所全量交易对。 - For循环语法错误:
#symbols是无效语法,Pine Script中获取数组长度需用array.size(),但此处symbols是字符串而非数组,循环逻辑完全不成立。 - Security函数用法错误:
security函数需要通过闭包传递计算逻辑,且必须接收返回值,直接调用无法获取目标交易对的行情数据。
修复后的代码示例
由于无法自动获取全交易对,需手动定义需要监控的交易对数组,再逐个遍历计算:
//@version=5 indicator("EMA 89 EMA 200 Kucoin Alerts", overlay=false) exchange = input.string("Kucoin", "交易所") // 手动定义需要监控的Kucoin交易对数组 target_symbols = array.new_string(["BTC/USDT", "ETH/USDT", "SOL/USDT"]) // 遍历交易对数组 for i = 0 to array.size(target_symbols) - 1 current_symbol = array.get(target_symbols, i) // 使用request.security获取目标交易对的1小时K线数据,并计算EMA [ema89, ema200] = request.security(current_symbol + ":" + exchange, "60", [ema(close, 89), ema(close, 200)]) // 示例:当EMA89上穿EMA200时触发警报 ema_cross = ta.crossover(ema89, ema200) if ema_cross alert(current_symbol + " EMA89上穿EMA200", alert.freq_once_per_bar_close)
额外说明
- 若需要监控更多交易对,直接在
target_symbols数组中添加对应的交易对代码即可,格式需符合TradingView规范(如"BTC/USDT")。 request.security是Pine Script v5的推荐用法,替代旧版security函数,稳定性与功能更完善。- 警报逻辑可根据需求自定义,示例仅实现了EMA金叉的警报触发。
内容的提问来源于stack exchange,提问作者marcelo.delta
相关产品推荐
相关产品推荐

