如何在Pine Script v4中获取指定时间15分钟K线最高价并绘水平线
修正后的Pine Script v4代码实现
原代码存在几个关键问题:
security函数返回的是条件判断的布尔值(符合条件返回1,否则返回0),而非目标15分钟K线的最高价- 重复赋值覆盖了原有逻辑,且未在15分钟时间框架内正确捕捉目标K线的价格
hline接收动态变量时会出现异常,需确保价格值是固定的单值
以下是修正后的代码,可实现指定日期时间15分钟K线最高价的获取,并在任意时间框架下显示为水平线:
//@version=4 study(title="指定15分钟K线最高价水平线", shorttitle="15min_High_Line", overlay=true) // 输入目标时间戳(格式:日 月 年 时:分:秒) targetTime = input(timestamp("1 Dec 2022 10:00:00"), title="目标15分钟K线时间", type=input.time) // 在15分钟时间框架内,获取目标K线的最高价 // 使用request.security确保在非15分钟框架下也能正确获取数据 var float targetHigh = request.security(syminfo.tickerid, "15", time == targetTime ? high : na) // 过滤无效值,仅当获取到有效最高价时绘制水平线 if not na(targetHigh) // 创建固定水平线,使用var确保只绘制一次 var hline targetLine = hline(na, "目标15分钟最高价", color=color.new(color.red, 0), linestyle=hline.style_solid) // 更新水平线的价格值 hline.set_price(targetLine, targetHigh)
代码说明:
request.security:替代旧版security函数,更稳定地跨时间框架获取数据,确保在任意显示时间框架下,都基于15分钟周期计算var float targetHigh:用var关键字确保变量仅初始化一次,避免重复赋值,保留目标K线的最高价hline结合hline.set_price:先创建初始空水平线,获取到有效价格后再更新价格值,解决动态变量无法直接传入hline的问题
额外优化(可选):
如果需要同时显示指定K线的最低价,只需复制对应逻辑:
// 获取目标15分钟K线的最低价 var float targetLow = request.security(syminfo.tickerid, "15", time == targetTime ? low : na) // 绘制最低价水平线 if not na(targetLow) var hline lowLine = hline(na, "目标15分钟最低价", color=color.new(color.green, 0), linestyle=hline.style_solid) hline.set_price(lowLine, targetLow)
内容的提问来源于stack exchange,提问作者Ashish Dhage
相关产品推荐
相关产品推荐

