Indie枢轴点脚本return语句返回Color类型报错,咨询带透明度颜色的正确定义位置
Indie枢轴点脚本return语句返回Color类型报错,咨询带透明度颜色的正确定义位置
嗨,这个问题的核心原因很明确:你错误地把color.rgba()放到了return语句里,而Indie要求Main函数的返回值只能是要绘制的数值(float/int)或者Line对象,不能直接返回Color类型,这就是报错的根源。
正确的做法:把带透明度的颜色定义在@plot.line装饰器里
Indie的@plot.line装饰器本身就是用来配置每条绘图线的样式(包括颜色、透明度、线宽等)的,你不需要在返回值里传递颜色,只需要把color.rgba()直接写到对应的装饰器参数里就行。
给你修改好的代码示例:
# indie:lang_version = 5 from indie import indicator, plot, color @indicator('Pivot Points', overlay_main_pane=True) @plot.line(id='plot_0', color=color.YELLOW) @plot.line(id='plot_1', color=color.GREEN) @plot.line(id='plot_2', color=color.rgba(255, 0, 0, 0.5)) # 这里设置半透明红色 @plot.line(id='plot_3', color=color.GREEN) @plot.line(id='plot_4', color=color.RED) @plot.line(id='plot_5', color=color.GREEN) @plot.line(id='plot_6', color=color.RED) def Main(self): pivot = (self.high[1] + self.low[1] + self.close[1]) / 3 support1 = (2 * pivot) - self.high[1] resistance1 = (2 * pivot) - self.low[1] support2 = pivot - (self.high[1] - self.low[1]) resistance2 = pivot + (self.high[1] - self.low[1]) support3 = self.low[1] - 2 * (self.high[1] - pivot) resistance3 = self.high[1] + 2 * (pivot - self.low[1]) # 只返回要绘制的数值,顺序和上面的@plot.line一一对应 return pivot, support1, resistance1, support2, resistance2, support3, resistance3
补充说明
- 每个
@plot.line装饰器对应return里的一个返回值,顺序是严格对应的(第一个装饰器对应第一个返回值,以此类推) - 如果需要给多条线设置带透明度的颜色,只需要在对应的
@plot.line里替换color参数为color.rgba()即可 return语句的作用只是传递要绘制的数据,样式配置全部交给装饰器完成
备注:内容来源于stack exchange,提问作者Pavlito
相关产品推荐
相关产品推荐

