Indie脚本修改MutSeriesF时出现'Symbol wave.set not found'错误的求助
Indie脚本修改MutSeriesF时出现'Symbol wave.set not found'错误的求助
我刚从Pine Script转Indie的时候也踩过一模一样的坑!完全是Pine的惯性思维搞的鬼——Indie的MutSeriesF可变序列根本不支持.set()这个方法,你直接用索引赋值就搞定了。
问题根源
Indie的API设计和Pine有明显差异:
- Pine里用
var声明的变量需要用:=或特定方法更新,但Indie的MutSeriesF是通过直接索引赋值来修改值的,根本没有.set()这个成员函数,所以你调用wave.set()的时候才会报“symbol not found”的错误。
具体修正步骤
把你代码里所有的.set()调用改成直接索引赋值就行:
- 把
wave.set(0, mov)改成wave[0] = mov - 把
wave.set(0, nan_to_zero(wave[1]))改成wave[0] = nan_to_zero(wave[1]) - 把
vol.set(0, nan_to_zero(vol[1]) + self.volume[0])改成vol[0] = nan_to_zero(vol[1]) + self.volume[0] - 把
vol.set(0, self.volume[0])改成vol[0] = self.volume[0]
额外的小提醒
顺便扫了下你的代码,还有个影响功能的小问题:mov = 0之后的if self.close[0] > self.close[1]:和elif块都是空的,这样mov的值永远是0,整个指标的核心趋势判断逻辑等于没写,记得补上你原本想实现的趋势方向赋值(比如给mov设为1或-1),不然指标跑不出预期效果。
修正后的关键代码片段
# ... 其他代码保持不变 ... wave = MutSeriesF.new(0) if mov != nan_to_zero(wave[1]) and is_trending: wave[0] = mov else: wave[0] = nan_to_zero(wave[1]) vol = MutSeriesF.new(0) if wave[0] == wave[1]: vol[0] = nan_to_zero(vol[1]) + self.volume[0] else: vol[0] = self.volume[0] # ... 其他代码保持不变 ...
备注:内容来源于stack exchange,提问作者neuepsae
相关产品推荐
相关产品推荐

