PineScript跨多时间周期K线形态检测技术咨询
PineScript多周期K线形态检测技术问题解答
以下是针对你提出的5个PineScript技术问题的解答,结合你提供的三白兵形态检测代码展开:
问题1:何种函数可同时在15分钟、5分钟、3分钟时间周期中检测同步出现的K线形态?
使用request.security()函数即可实现。该函数支持跨周期获取指定时间框架的K线数据与计算结果。你可以针对每个目标周期单独调用它,获取对应周期的形态信号,再判断这些信号是否同时触发。
示例逻辑:
// 获取各周期的三白兵形态信号 fifteenMinSignal = request.security(syminfo.tickerid, "15", Three_White_Soldiers) fiveMinSignal = request.security(syminfo.tickerid, "5", Three_White_Soldiers) threeMinSignal = request.security(syminfo.tickerid, "3", Three_White_Soldiers) // 判断三个周期是否同步触发形态 allSyncTriggered = fifteenMinSignal and fiveMinSignal and threeMinSignal
问题2:若5分钟周期触发形态信号,如何编程在对应两根5分钟K线时段内检测3分钟周期的形态?
核心思路是先定位5分钟信号触发的时间区间,再检查该区间内3分钟周期是否出现目标形态:
- 用
request.security()获取5分钟周期的形态信号,以及该触发信号对应的K线时间区间; - 获取3分钟周期的形态信号与对应K线时间;
- 判断3分钟K线是否落在5分钟信号触发的时间区间内,且形态信号为真。
示例代码:
// 获取5分钟周期的形态信号与时间区间 fiveMinSignal = request.security(syminfo.tickerid, "5", Three_White_Soldiers) fiveMinBarStartTime = request.security(syminfo.tickerid, "5", time) fiveMinBarEndTime = fiveMinBarStartTime + 5 * 60000 // 5分钟转毫秒 // 获取3分钟周期的形态信号与K线时间 threeMinSignal = request.security(syminfo.tickerid, "3", Three_White_Soldiers) threeMinBarTime = request.security(syminfo.tickerid, "3", time) // 检测两根5分钟K线时段内的3分钟形态(当前触发的5分钟K线+前一根) prevFiveMinStartTime = fiveMinBarStartTime - 5 * 60000 signalInTwoFiveMinBars = fiveMinSignal and (threeMinBarTime >= prevFiveMinStartTime and threeMinBarTime < fiveMinBarEndTime) and threeMinSignal
问题3:可检索的时间周期数量是否存在限制?例如同时检测15min、5min、3min或仅15min与5min?
官方没有明确限制可调用的时间周期数量,但实际使用中会受脚本性能和数据加载压力影响。同时检测15min、5min、3min这三个周期完全可行,但若调用过多不同周期,可能导致脚本运行变慢,尤其是回溯大量历史数据时。建议根据实际需求选择核心周期,避免不必要的周期调用。
问题4:如何编程实现多周期组合逻辑,比如上述三个周期中任意两个触发形态即发出警报?
先分别获取三个周期的形态信号,再用逻辑运算符组合“任意两个为真”的条件,最后绑定警报触发规则:
// 获取各周期形态信号 fifteenMinSignal = request.security(syminfo.tickerid, "15", Three_White_Soldiers) fiveMinSignal = request.security(syminfo.tickerid, "5", Three_White_Soldiers) threeMinSignal = request.security(syminfo.tickerid, "3", Three_White_Soldiers) // 任意两个周期触发的逻辑条件 anyTwoTriggered = (fifteenMinSignal and fiveMinSignal) or (fifteenMinSignal and threeMinSignal) or (fiveMinSignal and threeMinSignal) // 设置警报 alertcondition(anyTwoTriggered, title="多周期形态触发", message="15/5/3分钟周期中至少两个出现三白兵形态")
问题5:request.security函数是否可用于对警报设置的标的,回溯检测15min、5min、3min周期的K线形态?
可以。request.security()默认针对当前标的(即警报设置的标的)获取数据,只需在函数中指定对应周期参数(如"15"、"5"、"3"),就能回溯检测该标的在这些周期中的K线形态。需要注意的是,回溯的历史数据深度受图表加载的历史数据量限制,若需要更久的历史数据,需调整图表的历史数据加载范围。
附:你提供的三白兵形态检测代码
Three_White_Soldiers = (green_candle_2_days_ago and green_candle_1_day_ago and green_candle_today) and (high_2_days_ago <= close_1_day_ago and high_1_day_ago <= close_today) and (close_2_days_ago >= open_1_day_ago and close_1_day_ago >= open_today) and (open_2_days_ago <= low_1_day_ago and open_1_day_ago <= low_today)
内容的提问来源于stack exchange,提问作者tradechoice88
相关产品推荐
相关产品推荐

