如何利用input.float修改Pine Script中request.security的时区为UTC-4
解决Pine Script v5中request.security自定义时区日线问题
要让request.security使用指定时区(而非默认UTC)的日线数据,核心是构造带时区标识的时间框架字符串,替代默认的'D'参数。以下是具体修改方案:
关键修改逻辑
- 将输入的小时偏移量转换为标准时区字符串(如
UTC-4) - 拼接成带时区的日线时间框架(如
D|UTC-4) - 替换
request.security中的时间框架参数
修改后的完整代码
//Modified by CAM //@version=5 indicator(title="MTF High/Low", shorttitle="High/Low", overlay=true) //DEFINE TimeFrame TOOLTIP01 = "Enter timezone offset (+ or -) based of UTC" hoursOffsetInput = input.float(0.0, "Timezone offset (in hours)", minval = -12.0, maxval = 14.0, step = 0.5, tooltip = TOOLTIP01) // 构造带时区的自定义日线时间框架 tzStr = "UTC" + (hoursOffsetInput > 0 ? "+" : "") + str.tostring(hoursOffsetInput) tzStr = str.replace(tzStr, ".0", "") // 移除整数偏移后的.0后缀 customDailyTF = "D|" + tzStr // DAILY activeD = input(true, title="Show On Chart D") // 使用自定义时区的日线时间框架 pricehighD = request.security(syminfo.tickerid, customDailyTF, high[1], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on) pricelowD = request.security(syminfo.tickerid, customDailyTF, low[1], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on) // Daily Plots plot(activeD and pricehighD ? pricehighD : na, title="Previous Daily High", style=plot.style_steplinebr, linewidth=1, color=color.white) plot(activeD and pricelowD ? pricelowD : na, title="Previous Daily Low", style=plot.style_steplinebr, linewidth=1, color=color.white)
代码说明
- 时区字符串处理:将输入的
hoursOffsetInput(如-4.0)转换为UTC-4格式,确保符合Pine Script的时区标识规则 - 自定义时间框架:
customDailyTF变量生成D|UTC-4这类带时区的时间框架,让request.security按照指定时区划分日线周期 - 保留原有逻辑:保留了原脚本的开关控制、绘图样式等设置,仅修改时间框架部分
内容的提问来源于stack exchange,提问作者Cam B
相关产品推荐
相关产品推荐

