PineScript - 之字形趋势变化计数器

Posted

技术标签:

【中文标题】PineScript - 之字形趋势变化计数器【英文标题】:PineScript - zigzag trend change counter 【发布时间】:2020-09-30 11:10:51 【问题描述】:

我制作了一个类似于 zigzag 的指标。我想写一个公式来计算上升趋势的数量或趋势变化的数量(从上到下和从下到上)。我有问题,因为我的变量仍然设置为 0。你能帮我更正吗?

//@version=3
study("ZigZag Poker", overlay=true)

//INPUTS

trend = 0
trend := na(trend[1]) ? 1 : trend[1]   //Beggining trend set to up
LL = 0.0
LL := na(LL[1]) ? low : LL[1]           //LastLow
HH = 0.0
HH := na(HH[1]) ? high : HH[1]          //LastHigh
LO = 0.0
LO := na(LO[1]) ? open : LO[1]          //LastOpen
LC = 0.0
LC := na(LC[1]) ? close : LC[1]         //LastClose
LOLO = 0.0
LOLO := na(LOLO[1]) ? low : LOLO[1]     //LowestLow
HIHI = 0.0
HIHI := na(HIHI[1]) ? high : HIHI[1]     //HighestHigh
zigzag = na
kolor = 0                                //variable that counts number of trend changes
imp = input(true, "Alt imp")
kolor := imp == true ? 2 : 0

    if (trend > 0)              // trend is up, look for new swing low                                                                                                              
        if close >= min(LO, LC) 
            LC := close
            LL := low
            LO := open
            LOLO := low
            HIHI := high
        else
            zigzag := HIHI
            trend := -1
            HH := high
            HIHI := high > HIHI ? high : HIHI
            LC := close
            LL := low
            LO := open  
            LOLO := low  
            kolor := kolor[1] + 1
    else                              // trend is down, look for new swing high                                                                                                                  
        if close <= max(LO, LC)       
            HH := high
            HIHI := high
            LC := close
            LL := low 
            LO := open
            LOLO := low < LOLO ? low : LOLO
        else
            zigzag := LOLO
            trend := 1
            HH := high
            LC := close
            LL := low
            LO := open
            kolor: = kolor[1] + 1
plot(kolor)
plot(zigzag, color = trend < 0 ? blue : orange, linewidth=2, offset=-1)

【问题讨论】:

【参考方案1】:

我知道现在帮助 OP 为时已晚,但错误就在这条线上 kolor := imp == true ? 2 : 0,对于当前趋势中的所有蜡烛,始终将 kolor 的值设置为 2 或 0。

缺少的是在每个循环中复制最后一个 kolor 的值,因此 kolor[1] 可以有一个有效的计数器。

将该行替换为kolor := na(kolor[1])? 0: kolor[1] 即可。

【讨论】:

以上是关于PineScript - 之字形趋势变化计数器的主要内容,如果未能解决你的问题,请参考以下文章

交易视图中的趋势线,其中包含文本(pinescript)

哪个prometheus查询函数可以监控一个计数器的快速变化?

Js 循环结构

如何及时显示石墨计数器的变化(在grafana中)?

基于列值变化的 T-SQL 递增计数器

如果 dataSource 计数可能发生变化,是不是可以同时使用 reloadItemsAtIndexPaths 和 reloadData?