Pine Script自定义星期高亮遇类型转换错误求助(附代码)
问题原因
你的代码报错是因为类型不匹配:
- Pine Script 内置的
dayofweek返回的是数值类型(0=周日, 1=周一, 2=周二, 3=周三, 4=周四, 5=周五, 6=周六) - 你自定义的
days枚举是字符串类型,直接用==比较数值和字符串会触发类型转换错误
解决方案
提供两种可行方案,选一种即可:
方案1:将自定义枚举改为数值型(推荐,效率更高)
把枚举值改成对应 dayofweek 的数值,直接比较数值就不会有类型问题:
enum days monday = 1 tuesday = 2 wednesday = 3 thursday = 4 friday = 5 aDay = input.enum(days.monday, 'Day', group = 'A') bgcolor((dayofweek == aDay) ? color.rgb(0, 0, 0, 75) : na, title = "A")
方案2:把dayofweek转换为字符串再比较
用 dayofweek.str() 函数将数值型的 dayofweek 转换成字符串,再和自定义枚举的字符串值比较:
enum days monday = "Monday" tuesday = "Tuesday" wednesday = "Wednesday" thursday = "Thursday" friday = "Friday" aDay = input.enum(days.monday, 'Day', group = 'A') bgcolor((dayofweek.str(dayofweek) == aDay) ? color.rgb(0, 0, 0, 75) : na, title = "A")
补充说明
- 方案1直接用数值比较,性能更优;方案2更直观,和你最初的字符串枚举逻辑一致
- 注意 Pine Script 中
dayofweek的数值对应关系:0=周日,1=周一,以此类推,别搞混对应数值
内容的提问来源于stack exchange,提问作者Whip
相关产品推荐
相关产品推荐

