Skip to content

Multilevel Squeeze (ta.squeeze_pro)

View Markdown

Provide squeeze states and momentum for different channel widths; read state channels individually.

Indicator catalog · How to use indicators

Run this example

This complete script uses bundled data. It observes the selected output without placing trades.

import numpy as np
from openbacktesting import Backtest, Strategy
from openbacktesting.test import GOOG

data = GOOG.copy()

class Example(Strategy):
    def init(self):
        self.value = self.ta.squeeze_pro()
        self.latest_value = None

    def next(self):
        channel = self.value.squeeze
        if channel.valid[-1]:
            self.latest_value = float(channel[-1])

result = Backtest(data, Example).run()
print(result["_strategy"].latest_value)

Call and parameters

self.ta.squeeze_pro(
    *,
    bb_length=20,
    bb_std=2.0,
    kc_length=20,
    kc_scalar_wide=2,
    kc_scalar_normal=1.5,
    kc_scalar_narrow=1,
    mom_length=12,
    mom_smooth=6,
    use_tr=True,
    mamode='sma',
    inputs=None,
    backend=None,
    required_outputs=None,
)

Register in init(). Read the returned channel in next() after checking valid[-1].

Parameter Meaning Type Default Allowed values
bb_length Bollinger-band lookback in bars. int 20 Minimum: 1
bb_std Standard-deviation multiplier for Bollinger bands. float 2.0 Minimum: 1e-08
kc_length Keltner-channel lookback in bars. int 20 Minimum: 1
kc_scalar_wide Wide Keltner-channel width multiplier. int 2 Minimum: 1
kc_scalar_normal Normal Keltner-channel width multiplier. float 1.5 Minimum: 1e-08
kc_scalar_narrow Narrow Keltner-channel width multiplier. int 1 Minimum: 1
mom_length Momentum lookback in bars. int 12 Minimum: 1
mom_smooth Momentum smoothing period in bars. int 6 Minimum: 1
use_tr Use true range instead of High - Low for Keltner width. bool True No additional constraints
mamode Moving-average algorithm; choose one of the listed values. str sma Allowed values: ['sma', 'ema', 'rma', 'wma']

source/named source arguments accept a column name or same-run single-channel handle. Alternatively, inputs maps each input below to a column or handle. backend selects a supported implementation; required_outputs selects channels for readiness diagnostics. See shared arguments and handles.

Inputs and outputs

Required inputs: high, low, close.

Channel Meaning
squeeze Squeeze output
on_wide Wide squeeze flag
on_normal Normal squeeze flag
on_narrow Narrow squeeze flag
off Squeeze-off flag
none Neither squeeze-on nor squeeze-off flag

Reading values safely

Insufficient history or missing inputs can make a channel invalid. Check that channel's valid mask; ready is diagnostic and never suppresses next(). Multi-output results may have different valid channels on the same bar.

Indicator catalog · Custom calculations