如何为Pine Script的f_crossed_under函数添加时间框架功能
在Pine Script中为支撑位突破函数添加时间框架功能
要给你的f_crossed_under()函数添加时间框架功能,核心是用Pine Script的request.security()函数获取指定时间框架下的收盘价数据,而非直接使用当前图表时间框架的数据。以下是修改后的完整实现:
f_crossed_under(string tf) => ret = false // 获取指定时间框架的收盘价(当前及前一根K线) tf_close = request.security(syminfo.tickerid, tf, close) tf_close_prev = request.security(syminfo.tickerid, tf, close[1]) // 仅当支撑位数组不为空时执行判断 array_size = array.size(sr_up_level) if array_size > 0 for x = 0 to array_size - 1 float mid = math.round_to_mintick((array.get(sr_up_level, x) + array.get(sr_dn_level, x)) / 2) // 使用指定时间框架的收盘价判断下穿条件 if tf_close_prev >= mid and tf_close < mid ret := true break // 找到匹配项后提前退出循环优化性能 ret
关键修改说明:
- 新增时间框架参数:函数定义加入
string tf参数,调用时可传入如"D"(日线)、"4H"(4小时)等Pine Script支持的时间框架字符串。 - 获取跨时间框架数据:通过
request.security()获取目标时间框架的当前收盘价tf_close和前一根K线收盘价tf_close_prev,确保判断逻辑基于指定时间框架的行情。 - 优化循环逻辑:先判断数组长度再执行循环,避免不必要的计算;找到匹配条件后用
break退出循环提升效率。 - 修复原函数逻辑问题:原函数中
ret在循环内赋值后直接返回,会导致仅检查第一个支撑位就终止,修改为找到匹配项后标记ret为true并提前退出,确保遍历所有支撑位的逻辑正确。
使用示例:
调用函数时传入目标时间框架即可,比如判断日线级别支撑位下穿:
alertcondition(f_crossed_under("D"), title="日线支撑位下穿", message="价格已下穿日线级别支撑位")
内容的提问来源于stack exchange,提问作者Mani
相关产品推荐
相关产品推荐

