{
  "additionalProperties": false,
  "description": "Detect volatility squeeze (Bollinger Bands contracting inside Keltner Channel).\n\nFires when band width percentile falls below a threshold, signaling low volatility\nthat often precedes a breakout. Use as an entry gate or to time breakout entries.",
  "properties": {
    "mode": {
      "default": "level",
      "description": "Firing mode. 'level' (default) = true every bar the squeeze is active (BB inside KC, and BB-width <= pctile_max when set). 'cross_in' = edge, fires once on the bar the squeeze activates. 'cross_out' = edge, fires once on the bar the squeeze deactivates.",
      "enum": [
        "level",
        "cross_in",
        "cross_out"
      ],
      "title": "Mode",
      "type": "string"
    },
    "pctile_max": {
      "anyOf": [
        {
          "maximum": 100,
          "minimum": 0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Pctile Max"
    },
    "type": {
      "const": "squeeze",
      "default": "squeeze",
      "title": "Type",
      "type": "string"
    },
    "with_trend": {
      "default": false,
      "title": "With Trend",
      "type": "boolean"
    }
  },
  "title": "SqueezeCondition",
  "type": "object"
}
