如何在Pine Script代码中修改时间框架为1分钟/1日/1周
解决方法
原有代码中的_t2 = int(time + change(time))逻辑是用当前图表相邻K线的时间差计算下一根K线的时间点,所以会随图表切换的周期自动变化。要固定为1分钟、1日、1周这类指定周期,直接替换change(time)为对应周期的固定毫秒长度即可。
Pine Script v5 提供了timeframe.milliseconds()内置函数可以直接获取指定周期的毫秒值,不需要手动计算时间戳,修改后的函数支持自定义时间框架参数:
// 新增_tf参数,传入需要的时间框架字符串,支持"1"(1分钟)、"D"(1日)、"W"(1周)等标准周期格式 f_hline(_price, _color, _style, _width, _tf) => // 直接取指定时间框架的毫秒间隔计算_t2 _t2 = int(time + timeframe.milliseconds(_tf)) var line _line = line.new(x1 = time, y1 = _price, x2 = _t2, y2 = _price, xloc = xloc.bar_time, color = _color, style = _style, width = _width, extend = extend.both) line.set_xy1(_line, x = time, y = _price) line.set_xy2(_line, x = _t2, y = _price) // 调用示例: // 1分钟周期 f_hline(bs, color.red, line.style_dashed, 1, "1") // 1日周期 // f_hline(bs, color.green, line.style_solid, 2, "D") // 1周周期 // f_hline(bs, color.blue, line.style_dotted, 2, "W")
周期参数对应说明
- 固定为1分钟时间框架:调用时
_tf参数传入"1" - 固定为1日时间框架:调用时
_tf参数传入"D" - 固定为1周时间框架:调用时
_tf参数传入"W"
如果你使用的是Pine Script v4版本,没有
timeframe.milliseconds()函数,可以直接替换为对应周期的硬编码毫秒值:
- 1分钟:
60 * 1000- 1日:
24 * 60 * 60 * 1000- 1周:
7 * 24 * 60 * 60 * 1000
对应v4版本的_t2写法示例:_t2 = int(time + 60 * 1000)即可固定为1分钟周期。
内容的提问来源于stack exchange,提问作者امید گودرزی
相关产品推荐
相关产品推荐

