请求协助编写变量N的计算代码:交易入场点高低点数量占比
计算交易入场后最高高点与最低低点数量比值N的实现
核心定义
N = 自交易入场点以来的最高高点数量 / 最低低点数量
这里的「最高高点」指入场后价格突破此前所有高点的次数;「最低低点」指入场后价格跌破此前所有低点的次数。
实现步骤
- 定位交易入场点的索引/时间戳
- 提取入场点之后的最高价、最低价序列
- 遍历统计新高次数(最高高点数量)和新低次数(最低低点数量)
- 计算比值,处理除数为0的异常情况
示例代码(Python)
# 模拟交易K线数据:每一项为[最高价, 最低价] trade_data = [ [100, 90], # K线0 [102, 88], # K线1(入场点) [105, 89], # K线2:创出新高 [103, 87], # K线3:创出新低 [106, 86], # K线4:新高+新低 [104, 88], # K线5 ] # 入场点对应的K线索引 entry_idx = 1 # 初始化入场时的高低点 entry_high = trade_data[entry_idx][0] entry_low = trade_data[entry_idx][1] # 提取入场后的高低价数据 post_entry_highs = [k[0] for k in trade_data[entry_idx+1:]] post_entry_lows = [k[1] for k in trade_data[entry_idx+1:]] # 统计最高高点数量 high_count = 0 current_highest = entry_high for h in post_entry_highs: if h > current_highest: high_count += 1 current_highest = h # 统计最低低点数量 low_count = 0 current_lowest = entry_low for l in post_entry_lows: if l < current_lowest: low_count += 1 current_lowest = l # 计算N值,避免除以0报错 N = high_count / low_count if low_count != 0 else float('inf') print(f"最高高点数量: {high_count}") print(f"最低低点数量: {low_count}") print(f"N值: {N}")
注意事项
- 如果使用pandas处理实盘数据,可通过
df.loc[entry_row_index:]直接提取入场后的数据段,替换示例中的列表遍历逻辑 - 若你的「最高高点/最低低点」指的是结构浪型中的高低点(而非单纯的新高/新低),需要结合趋势判断(如均线、MACD等指标)调整统计逻辑
- 除数为0时(入场后无新低),可根据策略需求将N设为
float('inf')、None或其他默认值
内容的提问来源于stack exchange,提问作者user20738800
相关产品推荐
相关产品推荐

