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

如何在Pine Script中实现获取每月第一根周K线性质的函数?

在Pine Script中获取每月第一根周K线

你提供的weekOfMonth()函数尝试通过年度周数变化计算当月周数,但逻辑存在局限(比如固定按4周划分月份,不符合实际月份周数差异)。要准确识别每月第一根周K线,我们可以通过判断周周期的月份切换来实现,以下是两种可靠方案:

方案1:周线周期下直接判断

在周线图表中,只需检查当前K线的月份是否与前一根周K线的月份不同,即可确定是否为当月第一根周K线:

//@version=5
indicator("每月第一根周K线识别", overlay=true)

// 定义函数:返回是否为当月第一根周K线
isFirstWeekOfMonth() =>
    currentMonth = month(time)
    prevMonth = month(time[1])
    // 当前K线月份与前一根不同,即为当月第一根周K线
    bool result = currentMonth != prevMonth
    // 月线周期下返回na,避免无效判断
    timeframe.ismonthly ? na : result

// 用背景色标记第一根周K线
bgcolor(isFirstWeekOfMonth() ? color.new(color.green, 90) : na)

方案2:跨周期兼容(支持日线/小时线等)

如果需要在非周线周期(比如日线)中,判断当前K线所属的周是否是当月第一周,可以通过周起始时间的月份变化来判断:

//@version=5
indicator("跨周期识别每月第一根周K线", overlay=true)

// 定义函数:判断当前K线所属周是否为当月第一周
isFirstWeekOfMonth() =>
    if timeframe.ismonthly
        na
    else
        // 获取当前K线所在周的起始时间
        weekStart = ta.time("W")
        // 获取该周起始时间的月份
        weekStartMonth = month(weekStart)
        // 获取上一周起始时间的月份
        prevWeekStartMonth = month(ta.time("W")[1])
        // 周起始月份切换时,即为当月第一周
        weekStartMonth != prevWeekStartMonth

// 标记对应周期的K线
bgcolor(isFirstWeekOfMonth() ? color.new(color.blue, 90) : na)

说明

  • 方案1逻辑简洁高效,仅适用于周线周期。
  • 方案2支持任意周期,通过ta.time("W")定位周起始时间,确保判断的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:22:38