函数在最后bar调用时,如何获取特定日期后的首个开盘价?
获取特定时间戳后的首个开盘价(Pine Script)
正确实现代码
先定义目标时间戳,再通过精准条件定位到首个符合要求的K线,提取其开盘价:
// 定义目标时间戳(示例:2019年5月15日) first_buy_timestamp_start = timestamp("2019-05-15") // 获取目标时间戳后的首个开盘价 first_open_after = ta.valuewhen((time > first_buy_timestamp_start) and (time[1] <= first_buy_timestamp_start), open, 0) // 可在最后一根K线输出结果 if barstate.islast label.new(bar_index, high, str.tostring(first_open_after), color=color.green)
你之前代码的问题分析
第一个代码:
ta.valuewhen(time > first_buy_timestamp_start, open, 0)
当前K线也满足time > 目标时间戳的条件,ta.valuewhen的索引0会返回**最近一次满足条件的K线(即当前K线)**的开盘价,而非历史上首个符合条件的K线。第二个代码:
你用if time > 目标时间戳 and testopen == 0.0赋值,但由于只在最后一根K线执行逻辑,这个条件只会在当前K线触发,自然赋值的是当前K线的收盘价,完全偏离需求。
核心逻辑说明
(time > first_buy_timestamp_start) and (time[1] <= first_buy_timestamp_start)这个条件只会匹配刚好跨过目标时间戳的那一根K线——也就是目标时间之后的第一根K线,通过ta.valuewhen提取这根K线的开盘价,就能精准得到你需要的结果。
内容的提问来源于stack exchange,提问作者TSC
相关产品推荐
相关产品推荐

