如何检查最近10根K线中是否存在满足EMA5相关条件的情况?
解决最近10根K线的EMA5条件检查问题
需求说明
检查最近10根K线,判断是否存在任意一根满足以下任一条件:
- 开盘价(
open)与收盘价(close)同时高于EMA5 - 开盘价(
open)与收盘价(close)同时低于EMA5
原代码问题分析
你提供的代码逻辑存在缺陷:循环过程中每一次都会覆盖checkema5的值,最终只会保留第10根K线的判断结果,无法实现“检查是否存在任意一根满足条件”的需求。
修正后的代码示例
// 初始化标记为false,默认无满足条件的K线 checkema5 = false // 遍历最近10根K线(i=1对应上一根K线,i=10对应第10根前的K线) for i = 1 to 10 // 检查当前遍历的K线是否满足条件 if (close[i] > EMA5[i] and open[i] > EMA5[i]) or (close[i] < EMA5[i] and open[i] < EMA5[i]) checkema5 = true break // 找到符合条件的K线后立即终止循环,提升效率
关键修正点
- 提前初始化
checkema5为false,确保初始状态正确 - 遍历过程中只要找到满足条件的K线,就将标记设为
true并终止循环,避免无效遍历 - 注意使用
close[i]和open[i]获取对应历史K线的价格数据(不同平台的历史数据索引方式可能略有差异,需根据实际环境调整)
内容的提问来源于stack exchange,提问作者F..
相关产品推荐
相关产品推荐

