> For the complete documentation index, see [llms.txt](https://docs.itradingbot.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.itradingbot.net/ai-strategy-builder/machine-price-range.md).

# Price range reference

Shared reading rules — index notation, the `L`/`S`/`N` codes, crossings and Reverse — are on [Signal passports](https://docs.itradingbot.net/ai-strategy-builder/signal-passports). Main backtest settings and the card schema are on [Settings and card schema](https://docs.itradingbot.net/ai-strategy-builder/machine-settings). The behaviour contract is [Rules for AI assistants](https://docs.itradingbot.net/ai-strategy-builder/assistant-rules).

Knowledge package 0.6.1, checked 22 September 2026, build 03613bfa. Use the shared filter-action rules. `PRICE_FILTER` is the direction-neutral **By price range** filter. It compares the latest Normal one-minute close with `fpr` (Price from) and `tpr` (Price to), in quote currency per base unit. They are absolute prices, not percentages. The fixed current-candle evaluation has no timeframe, candle, timing or Reverse selector.

## Filter — price-range.filter

`PIC`: fpr<=C<=tpr gives AA; otherwise N.

`PUC`: C>=tpr or C<=fpr gives AA; otherwise N.

**Boundary equality is accepted by both options.** PUC is not the strict logical complement of PIC. The observed defaults 0 and 1 are form defaults, not suggested bounds for the selected asset. The reviewed constructor does not confirm complete numeric bounds or an ordering guard for these values; do not silently reorder them or claim that any supplied interval has passed trading validation.

The filter only grants/denies permission for the task direction. A range contact does not itself create an entry event, and its pla action is separate.

## Definition coverage and observed controls

The controls below identify this dated schema. Their exact labels, value types and context overrides are in the catalogue. Any omitted standard selector must not be added manually.

* `price-range.filter` — `PRICE_LIMIT` / `PRICE_FILTER`. Semantics: **Filter — price-range.filter**. Fields: `ss`, `pla`, `fpr`, `tpr`, `ei`. timeframe: no selector; candles: no selector; calculation: no selector; Reverse: no selector.

## Exact machine reference

Read common settings and card schema first. The following blocks are complete family excerpts, not standalone replacement files. Apply only the selected context overrides and check availability. Use the complete downloaded files for the validator.

### Catalogue definitions and overrides

```json
{
  "format": "itb.field-catalog/0.4.0",
  "definitions": [
    {
      "id": "price-range.filter",
      "original_indicator_id": "PRICE_FILTER",
      "role": "filter",
      "fields": [
        {
          "id": "price-range.filter.asset",
          "source_key": "ss",
          "type": "string",
          "enum_values": null,
          "schema_default": "BTCUSDT",
          "labels": {
            "en": "Asset"
          },
          "unit": "symbol",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "price-range.filter.filter-exit-action",
          "source_key": "pla",
          "type": "string",
          "enum_values": [
            "SD",
            "ED",
            "EDOP"
          ],
          "schema_default": "SD",
          "labels": {
            "en": "When exiting the filter"
          },
          "unit": "not specified",
          "label_verified": true,
          "enum_labels": {
            "SD": {
              "en": "Cancel cycles"
            },
            "ED": {
              "en": "Sell by market"
            },
            "EDOP": {
              "en": "Sell at market with deviation (if specified)"
            }
          },
          "numeric_range": null
        },
        {
          "id": "price-range.filter.lower-price",
          "source_key": "fpr",
          "type": "number",
          "enum_values": null,
          "schema_default": 0.0,
          "labels": {
            "en": "Price from"
          },
          "unit": "price",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "price-range.filter.upper-price",
          "source_key": "tpr",
          "type": "number",
          "enum_values": null,
          "schema_default": 1.0,
          "labels": {
            "en": "Price to"
          },
          "unit": "price",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "price-range.filter.source-ei",
          "source_key": "ei",
          "type": "string",
          "enum_values": [
            "PIC",
            "PUC"
          ],
          "schema_default": "PIC",
          "labels": {
            "en": "Allow entry if"
          },
          "unit": "not specified",
          "label_verified": true,
          "enum_labels": {
            "PIC": {
              "en": "Inside range"
            },
            "PUC": {
              "en": "Above/below range"
            }
          },
          "numeric_range": null
        }
      ],
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "labels": {
        "en": "By price range"
      }
    }
  ],
  "context_overrides": {
    "backtest-binance-dca-false": {},
    "backtest-binance-dca-true": {},
    "backtest-bybit-dca-false": {},
    "backtest-bybit-dca-true": {}
  }
}
```

### Condition constraints and dependencies

```json
{
  "format": "itb.condition-constraints/0.4.0",
  "definitions": [
    {
      "id": "price-range.filter",
      "field_ids": [
        "price-range.filter.asset",
        "price-range.filter.filter-exit-action",
        "price-range.filter.lower-price",
        "price-range.filter.upper-price",
        "price-range.filter.source-ei"
      ],
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "strict_mode_eligible": true,
      "eligibility_scope": "complete normalized constructor input domain; not numerical execution or deployed parity"
    }
  ],
  "fields": {
    "price-range.filter.asset": {
      "definition_id": "price-range.filter",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "binding": {
        "kind": "same_as_card_field",
        "field_id": "backtest.symbol",
        "no_external_or_invented_asset": true
      },
      "allowed_values_status": "card_symbol_binding; no static market symbol list in condition metadata"
    },
    "price-range.filter.filter-exit-action": {
      "definition_id": "price-range.filter",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {
        "backtest-binance-dca-false": [
          "SD",
          "ED",
          "EDOP"
        ],
        "backtest-binance-dca-true": [
          "SD",
          "ED",
          "EDOP"
        ],
        "backtest-bybit-dca-false": [
          "SD",
          "ED",
          "EDOP"
        ],
        "backtest-bybit-dca-true": [
          "SD",
          "ED",
          "EDOP"
        ]
      },
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ]
    },
    "price-range.filter.lower-price": {
      "definition_id": "price-range.filter",
      "type": "number",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": true,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "server_no_explicit_step",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "numeric_status": "source_no_explicit_bounds",
      "bounds_status": "source_no_explicit_bounds",
      "input_policy": "finite JSON number; no numeric strings or bool; apply exact listed source rules",
      "ui_step": 1e-06,
      "ui_step_is_server_constraint": false
    },
    "price-range.filter.upper-price": {
      "definition_id": "price-range.filter",
      "type": "number",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": true,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "server_no_explicit_step",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "numeric_status": "source_no_explicit_bounds",
      "bounds_status": "source_no_explicit_bounds",
      "input_policy": "finite JSON number; no numeric strings or bool; apply exact listed source rules",
      "ui_step": 1e-06,
      "ui_step_is_server_constraint": false
    },
    "price-range.filter.source-ei": {
      "definition_id": "price-range.filter",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {
        "backtest-binance-dca-false": [
          "PIC",
          "PUC"
        ],
        "backtest-binance-dca-true": [
          "PIC",
          "PUC"
        ],
        "backtest-bybit-dca-false": [
          "PIC",
          "PUC"
        ],
        "backtest-bybit-dca-true": [
          "PIC",
          "PUC"
        ]
      },
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ]
    }
  },
  "conditional_rules": [],
  "cross_field_rules": []
}
```
