{
  "additionalProperties": false,
  "description": "Swing point detection parameters.\n\nA swing low = bar where low < low[i-strength:i] AND low < low[i+1:i+strength+1].\nSwing is only confirmed after 'strength' bars pass (introduces latency).",
  "properties": {
    "min_prominence_atr": {
      "default": 0.0,
      "description": "Minimum prominence in ATR units (0 = no filter)",
      "maximum": 5,
      "minimum": 0,
      "title": "Min Prominence Atr",
      "type": "number"
    },
    "selection": {
      "default": "most_recent",
      "description": "Which swing to return: most_recent or most_extreme in lookback",
      "enum": [
        "most_recent",
        "most_extreme"
      ],
      "title": "Selection",
      "type": "string"
    },
    "strength": {
      "description": "Bars on each side to confirm swing",
      "maximum": 20,
      "minimum": 2,
      "title": "Strength",
      "type": "integer"
    }
  },
  "required": [
    "strength"
  ],
  "title": "SwingSpec",
  "type": "object"
}
