You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用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

火山引擎 最新活动