ToS Think Script条件水平线颜色切换与代码精简技术问询
精简版动态支撑阻力位脚本
以下是大幅精简后的ThinkScript代码,实现自动根据收盘价切换线条颜色的功能:
# 定义全局颜色 DefineGlobalColor("ResistanceColor", Color.RED); DefineGlobalColor("SupportColor", Color.BLUE); # 输入关键价位(用逗号分隔多个数值,例如:150,155,145,140) input KeyLevels = {default "", "150,155,145,140"}; # 处理输入的价位列表 string[] levelStrings = Split(KeyLevels, ","); float[] levels = new float[levelStrings.size()]; # 将字符串转换为数值数组 for i = 0 to levelStrings.size() - 1 { levels[i] = StrToFloat(levelStrings[i]); } # 绘制动态颜色的水平线 for i = 0 to levels.size() - 1 { float currentLevel = levels[i]; if currentLevel != 0 { plot line = currentLevel; line.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); line.SetColor(if close > currentLevel then GlobalColor("SupportColor") else GlobalColor("ResistanceColor")); line.SetLineWeight(2); line.SetTitle("Level " + (i + 1)); } }
代码说明:
- 简化输入方式:无需分别输入阻力位和支撑位,只需在
KeyLevels中用逗号分隔所有关键价位即可,数量不限。 - 动态颜色切换:
- 当收盘价高于该价位时,线条显示为蓝色(当前是支撑位)
- 当收盘价低于该价位时,线条显示为红色(当前是阻力位)
- 自动过滤无效值:跳过数值为0的无效价位,避免绘制不必要的水平线。
- 精简结构:使用循环批量处理所有价位,替代原脚本中重复20次的代码块,维护性更强。
内容的提问来源于stack exchange,提问作者Casey James
相关产品推荐
相关产品推荐

