使用Indie脚本语言编写指标时@indie.param装饰器参数未使用报错的问题
Indie脚本语言编写指标时@indie.param装饰器参数未使用报错的问题
嘿,我来帮你搞定这个报错问题!这个错误提示已经说得很明确啦——你用@indie.param.<type>这类装饰器给Main类定义了参数(比如你提到的higher_tf),但却没在代码里“用上”它。这里的“用上”不是说一定要写复杂逻辑,而是必须让脚本知道你已经接收了这个参数,具体来说就是要把它加到Main.__init__或者Main.calc的参数列表里,或者在代码里引用它。
给你几个具体的解决思路和示例:
1. 把参数加到__init__方法里
如果这个参数是用来做初始化配置的(比如提前获取对应时间框架的数据),就把它放进__init__的参数列表:
@indie.param.time_frame("higher_tf", label="Higher Time Frame", default="H1") class Main(indie.Indicator): def __init__(self, higher_tf): super().__init__() # 这里可以直接使用参数,比如获取对应时间框架的行情数据 self.higher_tf_data = self.get_data(time_frame=higher_tf)
2. 把参数加到calc方法里
如果参数是在每一次计算指标时才用到,就把它放进calc的参数列表:
@indie.param.time_frame("higher_tf", label="Higher Time Frame", default="H1") class Main(indie.Indicator): def calc(self, higher_tf): # 在计算逻辑里使用这个参数 higher_close_prices = self.get_data(time_frame=higher_tf)["close"] # 后续的指标计算逻辑...
3. 暂时不用但先接收参数
要是你只是先定义了参数,暂时不想写使用逻辑,也得先把参数接收进来,不能让它“悬空”:
@indie.param.time_frame("higher_tf", label="Higher Time Frame", default="H1") class Main(indie.Indicator): def __init__(self, higher_tf): super().__init__() # 暂时不用的话,留空就行,但必须把参数写在括号里
简单来说,这个报错的核心就是:装饰器声明的参数必须被Main类的核心方法(__init__或calc)接收,不然脚本会认为你定义了没用的参数,直接抛出错误提示。只要按照上面的方式把参数加到对应方法的参数列表里,问题就能解决啦!
备注:内容来源于stack exchange,提问作者Pawel M




