Contents
- abs
- add
- all_time_high
- all_time_low
- and
- approx
- aroon_down
- aroon_osc
- aroon_up
- atr
- bb_lower
- bb_upper
- bb_width
- cci
- change
- cond
- count
- cross
- crossover
- crossunder
- cumsum
- days_since
- dev
- deviation
- div
- ema
- eq
- falling
- floordiv
- gain
- gt
- gte
- highest
- highest_bars_ago
- hma
- kc_lower
- kc_middle
- kc_upper
- kcw
- loss
- lowest
- lowest_bars_ago
- lt
- lte
- macd_histogram
- macd_line
- macd_signal
- max
- mean
- median
- mfi
- min
- mod
- mom
- months_since
- mul
- ne
- obv
- offset
- or
- pct_change
- percentrank
- pivothigh
- pivotlow
- pow
- range
- rising
- roc
- rsi
- sma
- sqrt
- stdev
- stoch_d
- stoch_k
- streak
- sub
- sum
- swma
- true_range
- universe_percentile
- variance
- vwma
- weeks_since
- wilderma
- williams_r
- wma
- years_since
No matches
streak
Count consecutive bars where condition is true
streak(condition, period)
Parameters
| Name | Type | Description |
|---|---|---|
condition |
bool | The condition to test (e.g., close > open) |
period |
int | Maximum lookback window to check for consecutive occurrences |
Formula
streak = largest N <= period such that condition held for each of the last N consecutive bars
Examples
// how many consecutive up days (close > open)?
streak(close > open, 5);
// consecutive days above 50-day MA
streak(close > sma(close, 50), 10);
// consecutive days with volume > average
streak(volume > sma(volume, 20), 7);
// find stocks with 3+ consecutive up days
streak(close > open, 5) >= 3;
// consecutive days where RSI > 50
streak(rsi(close, 14) > 50, 10);
// consecutive narrow range days (true_range < average)
streak(true_range() < sma(true_range(), 20), 5);
Returns
int
Range
period must be 2-400
Notes
Returns 0 if the current bar's condition is false; counts backwards from the current bar until the condition breaks, capped at period