如何在Pine Script中编写代码绘制指定时间区间高低点趋势线
Pine Script自定义时间区间高低点趋势线实现
以下是可直接运行的完整代码,已基于你提供的基础代码完成功能开发、参数翻译及语法修复:
@version=4 strategy("自定义区间高低点趋势线", overlay=true) // 自定义时间区间参数设置 startDate = input(title="起始日期", type=input.integer, defval=20, minval=1, maxval=31) startMonth = input(title="起始月份", type=input.integer, defval=7, minval=1, maxval=12) startYear = input(title="起始年份", type=input.integer, defval=2021, minval=1800, maxval=2100) endDate = input(title="结束日期", type=input.integer, defval=31, minval=1, maxval=31) endMonth = input(title="结束月份", type=input.integer, defval=8, minval=1, maxval=12) endYear = input(title="结束年份", type=input.integer, defval=2021, minval=1800, maxval=2100) // 转换输入参数为时间戳,判定K线是否在目标区间 startTime = timestamp(startYear, startMonth, startDate, 0, 0) endTime = timestamp(endYear, endMonth, endDate, 23, 59) inRange = time >= startTime and time <= endTime // 计算区间内最高/最低点及对应K线位置 rangeBarCount = barsinrange(startTime, endTime) rangeHigh = ta.highest(inRange ? high : na, rangeBarCount) rangeLow = ta.lowest(inRange ? low : na, rangeBarCount) highBarPos = ta.valuewhen(rangeHigh == high, bar_index, 0) lowBarPos = ta.valuewhen(rangeLow == low, bar_index, 0) // 绘制连接高低点的趋势线 line.new(highBarPos, rangeHigh, lowBarPos, rangeLow, color=color.blue, width=2, style=line.style_solid) // 可选:标记高低点位置,不需要可直接删除以下两行 plotshape(rangeHigh, title="区间最高点", location=location.belowbar, color=color.red, style=shape.triangleup, size=size.small) plotshape(rangeLow, title="区间最低点", location=location.abovebar, color=color.green, style=shape.triangledown, size=size.small)
功能说明
- 所有输入参数已翻译为中文,原基础代码中起始日期最大值仅为23的问题已修复为31,适配所有月份的日期选择
- 时间戳转换逻辑覆盖了区间首尾的完整交易时段,不会漏掉起止当日的K线
- 高低点计算默认取区间内的最高价和最低价,如需改为收盘价可将
high/low替换为close - 趋势线样式可自行调整:修改
color参数换颜色,width改粗细,style可替换为line.style_dashed(虚线)、line.style_dotted(点线)等参数
注意:原参考代码中结束月份的默认值写为
08会触发整数前导零的语法报错,代码中已修正为合法值8
内容的提问来源于stack exchange,提问作者vamnnaatt
相关产品推荐
相关产品推荐

