You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效统计最近50根K线收盘价在均线上下的占比?

更优的K线收盘价与移动平均线(MA)对比统计方案

不用手动逐根定义变量,通过向量化运算或平台内置统计函数就能高效完成统计,以下是不同常用量化工具的解决方案:

1. TradingView Pine Script 方案

Pine Script内置ta.sum()函数可直接对条件结果求和,布尔值会自动转为1(满足)或0(不满足),无需手动写50个判断变量:

//@version=5
indicator("MA对比统计", overlay=true)

MA_length = 50
MA1 = ta.sma(close, MA_length)

// 统计最近50根K线中收盘价高于/低于MA的数量
above_ma_count = ta.sum(close > MA1, 50)
below_ma_count = ta.sum(close < MA1, 50)
equal_ma_count = ta.sum(close == MA1, 50)

// 计算占比
above_ma_pct = above_ma_count / 50 * 100
below_ma_pct = below_ma_count / 50 * 100

// 输出结果示例
plot(above_ma_count, title="高于MA数量", color=color.green)
plot(below_ma_count, title="低于MA数量", color=color.red)
label.new(bar_index, high, str.tostring(above_ma_pct) + "%", color=color.green)
label.new(bar_index, low, str.tostring(below_ma_pct) + "%", color=color.red)

2. Python(Pandas + TA-Lib)方案

用Pandas的向量化筛选功能,效率远高于逐根判断,适合本地量化分析:

import pandas as pd
import talib

# 假设已加载K线数据到DataFrame,包含close列
df = pd.read_csv("kline_data.csv")

# 计算50周期MA
df["MA1"] = talib.SMA(df["close"], timeperiod=50)

# 取最近50根K线数据
recent_50 = df.tail(50)

# 统计数量
above_ma_count = len(recent_50[recent_50["close"] > recent_50["MA1"]])
below_ma_count = len(recent_50[recent_50["close"] < recent_50["MA1"]])

# 计算占比
above_ma_pct = above_ma_count / 50 * 100
below_ma_pct = below_ma_count / 50 * 100

print(f"高于MA数量:{above_ma_count},占比:{above_ma_pct:.2f}%")
print(f"低于MA数量:{below_ma_count},占比:{below_ma_pct:.2f}%")

3. 无内置函数时的通用优化方案

如果所用平台没有统计函数,用循环替代手动定义50个变量,代码更简洁且易维护:

// 以JavaScript为例
const lookback = 50;
let aboveCount = 0;
let belowCount = 0;

for (let i = 1; i <= lookback; i++) {
    if (close[i] > MA1[i]) {
        aboveCount++;
    } else if (close[i] < MA1[i]) {
        belowCount++;
    }
}

const abovePct = (aboveCount / lookback) * 100;
const belowPct = (belowCount / lookback) * 100;

内容的提问来源于stack exchange,提问作者Pitt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:48:25