> 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/uk/ai-strategy-builder/machine-settings.md).

# Settings and card schema

Shared reading rules and the per-family condition contracts are on [Signal passports](https://docs.itradingbot.net/ai-strategy-builder/signal-passports). 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. These are exact reference blocks, not a card to import. Use the complete package for validation and link generation. Select the exchange and averaging mode before reading a family. Every field in a selected definition is required.

The condition contract on each family page includes its numeric rules and dependencies. This page supplies common settings and the complete main-settings contract. Source input bounds do not establish instrument-specific acceptance, available history or results.

## Names in Russian and Ukrainian

Show a card in the user's own language: Russian when they write in Russian, Ukrainian when they write in Ukrainian, English otherwise. Keys below are the exact English names used in the catalogue further down this page; a name absent here stays English. Every name here is the application's own translation, taken by the same key the application uses, so a card reads exactly like the form. This covers the indicator fields and their options as fully as it covers the main settings, `labels_by_field` settles the few names that belong to two different fields, and `card_layout` says how the blocks are arranged, the block of a single indicator included. Identifiers, enum values and numeric contracts are never translated and never shown to the user.

```json
{
  "format": "itb.field-labels/0.5.0",
  "observed_date": "2026-09-22",
  "observed_date_note": "The date these names were read from the application. This package is stamped 22 September 2026; each file carries its own observation date.",
  "scope": "Display names for fields, options and definitions the English catalogue publishes, as the ITradingBot interface shows them in Russian and Ukrainian. Keys are the exact English names used in field-catalog.json. Identifiers, enum values, numeric contracts and timeframe codes are never translated and are not listed here.",
  "languages": [
    "ru",
    "uk"
  ],
  "match_rule": "Each name is taken from the application's own translation files, by the same key the application uses: the field's protocol key for an indicator field, the enum value for an option caption, the definition identifier for an indicator name, the English text for a field of the backtest form itself. A translation is accepted only when the English text stored under that key is the English name published here, so a key belonging to another screen cannot be picked up by accident. Four names are the exception and are marked as such: the annotations of the test profile - fast calculation, multitest pair list, signal averaging and the intended timezone - describe the card itself and have no control in the form, so they were written here rather than taken from the application.",
  "fallback": "A name absent here is shown in English in every language.",
  "labels": {
    "Exchange": {
      "ru": "Биржа",
      "uk": "Біржа"
    },
    "Asset": {
      "ru": "Актив",
      "uk": "Актив"
    },
    "Balance Operation Mode": {
      "ru": "Режим работы с балансом",
      "uk": "Режим роботи з балансом"
    },
    "No Withdrawal": {
      "ru": "Без вывода",
      "uk": "Без виведення"
    },
    "Withdraw All Profit": {
      "ru": "Выводить весь профит",
      "uk": "Виводити весь прибуток"
    },
    "Withdraw all profit if capital exceeds the initial amount": {
      "ru": "Выводить весь профит если капитал больше начального",
      "uk": "Виводити весь прибуток, якщо капітал більший за початковий"
    },
    "Withdraw all profit monthly": {
      "ru": "Выводить весь профит каждый месяц",
      "uk": "Виводити весь прибуток щомісяця"
    },
    "Direction": {
      "ru": "Направление",
      "uk": "Напрямок"
    },
    "Short": {
      "ru": "Шорт",
      "uk": "Шорт"
    },
    "Long": {
      "ru": "Лонг",
      "uk": "Лонг"
    },
    "Mode": {
      "ru": "Режим",
      "uk": "Режим"
    },
    "Averaging using limit orders": {
      "ru": "Усреднять с помощью лимитных ордеров",
      "uk": "Усереднювати за допомогою лімітних ордерів"
    },
    "Averaging using signals": {
      "ru": "Усреднять с помощью сигналов",
      "uk": "Усереднювати за допомогою сигналів"
    },
    "Start of calculation": {
      "ru": "Начало расчета",
      "uk": "Початок розрахунку"
    },
    "Calculation End": {
      "ru": "Конец расчета",
      "uk": "Кінець розрахунку"
    },
    "Deposit": {
      "ru": "Депозит",
      "uk": "Депозит"
    },
    "First Order": {
      "ru": "Первый ордер",
      "uk": "Перший ордер"
    },
    "Commission limit order": {
      "ru": "Ком. лим. ордера",
      "uk": "Коміс. ліміт. ордера"
    },
    "Market Order Commission": {
      "ru": "Ком. маркет ордера",
      "uk": "Ком. ринкового ордера"
    },
    "Margin type": {
      "ru": "Тип маржи",
      "uk": "Тип маржі"
    },
    "Cross": {
      "ru": "Перекрестная",
      "uk": "Перехресна"
    },
    "Isolated": {
      "ru": "Изолированная",
      "uk": "Ізольована"
    },
    "Leverage": {
      "ru": "Плечо",
      "uk": "Плече"
    },
    "Take Profit": {
      "ru": "Тейк профит",
      "uk": "Take Profit"
    },
    "Stop Limit": {
      "ru": "Стоп лимит",
      "uk": "Стоп-ліміт"
    },
    "SOS": {
      "ru": "ШСО",
      "uk": "ШСО"
    },
    "DSOS": {
      "ru": "ДШСО",
      "uk": "ДШСО"
    },
    "Number of SO": {
      "ru": "Количество СО",
      "uk": "Кількість СО"
    },
    "Martingale": {
      "ru": "Мартингейл",
      "uk": "Мартингейл"
    },
    "Deviation": {
      "ru": "Девиация",
      "uk": "Девіація"
    },
    "Signal averaging": {
      "ru": "Усреднение по сигналу",
      "uk": "Усереднення за сигналом"
    },
    "Hedge": {
      "ru": "Хедж",
      "uk": "Хедж"
    },
    "Fast calculation": {
      "ru": "Ускоренный расчёт",
      "uk": "Прискорений розрахунок"
    },
    "Multitest: pair list": {
      "ru": "Мультитест: список пар",
      "uk": "Мультитест: список пар"
    },
    "Optimizer": {
      "ru": "Оптимизатор",
      "uk": "Оптимізатор"
    },
    "Intended timezone": {
      "ru": "Предполагаемый часовой пояс",
      "uk": "Передбачений часовий пояс"
    },
    "Moving average": {
      "ru": "Ск. средняя",
      "uk": "Ск. середня"
    },
    "TF": {
      "ru": "ТФ",
      "uk": "ТФ"
    },
    "Candlestick type": {
      "ru": "Тип свечей",
      "uk": "Тип свічок"
    },
    "Normal": {
      "ru": "Обычные",
      "uk": "Звичайні"
    },
    "Heiken-Ashi": {
      "ru": "Хейкен-Аши",
      "uk": "Хейкен-Аші"
    },
    "Calculation": {
      "ru": "Расчёт",
      "uk": "Розрахунок"
    },
    "At bar close": {
      "ru": "По закрытию бара",
      "uk": "За закриттям бара"
    },
    "On crossover (per second)": {
      "ru": "По пересечению (ежесекундно)",
      "uk": "За перетином (щосекундно)"
    },
    "Reverse?": {
      "ru": "Реверс?",
      "uk": "Реверс?"
    },
    "Type": {
      "ru": "Тип",
      "uk": "Тип"
    },
    "Wilder's Moving Average": {
      "ru": "Wilder's Moving Average",
      "uk": "Wilder's Moving Average"
    },
    "MRC (FOMO) line": {
      "ru": "Ср. линия MRC (FOMO)",
      "uk": "Сер. лінія MRC (FOMO)"
    },
    "Period": {
      "ru": "Период",
      "uk": "Період"
    },
    "When a signal is received": {
      "ru": "При получении сигнала",
      "uk": "Під час отримання сигналу"
    },
    "Sell by market": {
      "ru": "Продать по маркету",
      "uk": "Продати по маркету"
    },
    "Sell at market with deviation (if specified)": {
      "ru": "Продать по маркету с учетом девиации (если указана)",
      "uk": "Продати по маркету з урахуванням девіації (якщо вказана)"
    },
    "By the moving average": {
      "ru": "По ск. средней",
      "uk": "За ск. середньою"
    },
    "When exiting the filter": {
      "ru": "При выходе из фильтра",
      "uk": "Під час виходу з фільтра"
    },
    "Cancel cycles": {
      "ru": "Отменить циклы",
      "uk": "Скасувати цикли"
    },
    "Count by": {
      "ru": "Считать по",
      "uk": "Рахувати за"
    },
    "By the last price": {
      "ru": "Последней цене",
      "uk": "Останній ціні"
    },
    "By the entire bar range": {
      "ru": "Всему диапазону бара",
      "uk": "Усьому діапазону бара"
    },
    "MACD": {
      "ru": "MACD",
      "uk": "MACD"
    },
    "Fast moving average period": {
      "ru": "Период быстрой скользящей ср.",
      "uk": "Період швидкої ковзної сер."
    },
    "Slow sliding scale period": {
      "ru": "Период медленной скользящей ср.",
      "uk": "Період повільної ковзної сер."
    },
    "Signal sliding scale period": {
      "ru": "Период сигнальной скользящей ср.",
      "uk": "Період сигнальної ковзної сер."
    },
    "Condition": {
      "ru": "Условие",
      "uk": "Умова"
    },
    "Crossing of MACD and signal line": {
      "ru": "Пересечение MACD и сигнальной линии",
      "uk": "Перетин MACD та сигнальної лінії"
    },
    "Intersection of MACD and zero level": {
      "ru": "Пересечение MACD и нулевого уровня",
      "uk": "Перетин MACD та нульового рівня"
    },
    "By bar graph growth": {
      "ru": "По росту гистограммы",
      "uk": "За зростанням гістограми"
    },
    "By descending histogram": {
      "ru": "По снижению гистограммы",
      "uk": "За зниженням гістограми"
    },
    "By MACD": {
      "ru": "По MACD",
      "uk": "За MACD"
    },
    "Filter type": {
      "ru": "Тип фильтра",
      "uk": "Тип фільтра"
    },
    "Default": {
      "ru": "По умолчанию",
      "uk": "За замовчуванням"
    },
    "Above/below the 0th level": {
      "ru": "Выше/Ниже 0-ого уровня",
      "uk": "Вище/Нижче 0-го рівня"
    },
    "By growth/decrease of MACD line": {
      "ru": "По росту/снижению линии MACD",
      "uk": "За зростанням/зниженням лінії MACD"
    },
    "By increasing/decreasing signal line": {
      "ru": "По росту/снижению сигнальной линии",
      "uk": "За зростанням/зниженням сигнальної лінії"
    },
    "By increasing/decreasing histogram": {
      "ru": "По росту/снижению гистограммы",
      "uk": "За зростанням/зниженням гістограми"
    },
    "RSI": {
      "ru": "RSI",
      "uk": "RSI"
    },
    "Upper limit": {
      "ru": "Верхняя граница",
      "uk": "Верхня межа"
    },
    "Lower limit": {
      "ru": "Нижняя граница",
      "uk": "Нижня межа"
    },
    "At the end of the channel": {
      "ru": "По выходу из канала",
      "uk": "За виходом із каналу"
    },
    "On returning to the channel": {
      "ru": "По возвращению в канал",
      "uk": "За поверненням у канал"
    },
    "On trend change": {
      "ru": "По смене тренда",
      "uk": "За зміною тренду"
    },
    "By RSI": {
      "ru": "По RSI",
      "uk": "За RSI"
    },
    "Above/below channel": {
      "ru": "Выше/Ниже канала",
      "uk": "Вище/Нижче каналу"
    },
    "By past signal (By trend)": {
      "ru": "По прошлому сигналу (По тренду)",
      "uk": "За минулим сигналом (За трендом)"
    },
    "By internal channel": {
      "ru": "По внутреннему каналу",
      "uk": "За внутрішнім каналом"
    },
    "By RSI (Growth/Decline)": {
      "ru": "По RSI (Росту/снижению)",
      "uk": "За RSI (зростанню/зниженню)"
    },
    "Bollinger Bands": {
      "ru": "Линии Боллинджера",
      "uk": "Лінії Боллінджера"
    },
    "Standard deviation": {
      "ru": "Среднеквадратическое отклонение",
      "uk": "Середньоквадратичне відхилення"
    },
    "By Bollinger Bands": {
      "ru": "По Линиям Боллинджера",
      "uk": "За лініями Боллінджера"
    },
    "Offset to the right": {
      "ru": "Сдвиг вправо",
      "uk": "Зсув вправо"
    },
    "On the internal channel from the trunk": {
      "ru": "По внутреннему каналу от ср. линии",
      "uk": "За внутрішнім каналом від сер. лінії"
    },
    "By channel width": {
      "ru": "По ширине канала Боллинджера",
      "uk": "За шириною каналу Боллінгера"
    },
    "Allow entry if": {
      "ru": "Разрешать вход если",
      "uk": "Дозволяти вхід якщо"
    },
    "Channel of the already set %": {
      "ru": "Канал уже заданного %",
      "uk": "Канал уже заданого %"
    },
    "The channel is wider than the specified %": {
      "ru": "Канал шире заданного %",
      "uk": "Канал ширший за заданий %"
    },
    "Channel width, %": {
      "ru": "Ширина канала, %",
      "uk": "Ширина каналу, %"
    },
    "Stochastic": {
      "ru": "Стохастик",
      "uk": "Стохастик"
    },
    "Period %K": {
      "ru": "Период %K",
      "uk": "Період %K"
    },
    "Smoothing factor": {
      "ru": "Фактор сглаживания",
      "uk": "Фактор згладжування"
    },
    "Period %D": {
      "ru": "Период %D",
      "uk": "Період %D"
    },
    "By channel stochastic": {
      "ru": "По канальному стохастику",
      "uk": "За канальним стохастиком"
    },
    "ADX DI+ DI-": {
      "ru": "ADX DI+ DI-",
      "uk": "ADX DI+ DI-"
    },
    "Threshold": {
      "ru": "Порог",
      "uk": "Поріг"
    },
    "Crossing of DI+/DI-": {
      "ru": "Пересечение DI+/DI-",
      "uk": "Перетин DI+/DI-"
    },
    "Above threshold ADX + DI+/DI- intersection": {
      "ru": "Выше порога ADX + пересечение DI+/DI-",
      "uk": "Вище порога ADX + перетин DI+/DI-"
    },
    "Below ADX threshold + DI+/DI- crossover": {
      "ru": "Ниже порога ADX + пересечение DI+/DI-",
      "uk": "Нижче порога ADX + перетин DI+/DI-"
    },
    "By ADX": {
      "ru": "По ADX",
      "uk": "За ADX"
    },
    "Above threshold": {
      "ru": "Выше порога",
      "uk": "Вище порога"
    },
    "Below threshold": {
      "ru": "Ниже порога",
      "uk": "Нижче порога"
    },
    "Chande Momentum Oscillator": {
      "ru": "Chande Momentum Oscillator",
      "uk": "Chande Momentum Oscillator"
    },
    "By Chande Momentum Oscillator": {
      "ru": "По Chande Momentum Oscillator",
      "uk": "По Chande Momentum Oscillator"
    },
    "Above the threshold": {
      "ru": "Выше порога",
      "uk": "Вище порога"
    },
    "Below the threshold": {
      "ru": "Ниже порога",
      "uk": "Нижче порога"
    },
    "By MRC (FOMO) channel width": {
      "ru": "По ширине канала MRC (FOMO)",
      "uk": "За шириною каналу MRC (FOMO)"
    },
    "Overbought/Oversold": {
      "ru": "Перекупленность/Перепроданость",
      "uk": "Перекупленість/Перепроданість"
    },
    "Weak": {
      "ru": "Слабая",
      "uk": "Слабка"
    },
    "Medium": {
      "ru": "Средняя",
      "uk": "Середня"
    },
    "Strong": {
      "ru": "Сильная",
      "uk": "Сильна"
    },
    "MRC (FOMO)": {
      "ru": "MRC (FOMO)",
      "uk": "MRC (FOMO)"
    },
    "By MRC (FOMO)": {
      "ru": "По MRC (FOMO)",
      "uk": "За MRC (FOMO)"
    },
    "Impulse 2.0": {
      "ru": "Импульс 2.0",
      "uk": "Імпульс 2.0"
    },
    "Fast mode": {
      "ru": "Быстрый режим",
      "uk": "Швидкий режим"
    },
    "Calculation time (s)": {
      "ru": "Время расчёта (с)",
      "uk": "Час розрахунку (с)"
    },
    "By MFI (Growth/Decline)": {
      "ru": "По MFI (Росту/снижению)",
      "uk": "За MFI (зростанню/зниженню)"
    },
    "MFI": {
      "ru": "MFI",
      "uk": "MFI"
    },
    "By MFI": {
      "ru": "По MFI",
      "uk": "За MFI"
    },
    "Momentum": {
      "ru": "Momentum",
      "uk": "Momentum"
    },
    "By Momentum": {
      "ru": "По Momentum",
      "uk": "За Momentum"
    },
    "By growth/decrease": {
      "ru": "По росту/снижению",
      "uk": "За зростанням/зниженням"
    },
    "On Balance Volume (OBV)": {
      "ru": "Балансовый объем (OBV)",
      "uk": "Балансовий обсяг (OBV)"
    },
    "OBV Channel Length": {
      "ru": "OBV Channel Length",
      "uk": "OBV Channel Length"
    },
    "OBV Average Length": {
      "ru": "OBV Average Length",
      "uk": "OBV Average Length"
    },
    "Normalization factor": {
      "ru": "Коэффициент нормализации",
      "uk": "Коефіцієнт нормалізації"
    },
    "By On Balance Volume (OBV)": {
      "ru": "По Балансовому объему (OBV)",
      "uk": "За балансовим обсягом (OBV)"
    },
    "Based on past impulse": {
      "ru": "По прошлому импульсу",
      "uk": "За минулим імпульсом"
    },
    "Analysis time (m)": {
      "ru": "Время анализа (м)",
      "uk": "Час аналізу (хв)"
    },
    "There was an impulse": {
      "ru": "Был импульс",
      "uk": "Був імпульс"
    },
    "There was no momentum": {
      "ru": "Не было импульса",
      "uk": "Не було імпульсу"
    },
    "Both sides": {
      "ru": "Обе стороны",
      "uk": "Обидві сторони"
    },
    "By volatility": {
      "ru": "По волатильности",
      "uk": "За волатильністю"
    },
    "Volatility is greater than the set value, %": {
      "ru": "Волатильность больше заданного значения, %",
      "uk": "Волатильність більша за задане значення, %"
    },
    "Volatility below threshold, %": {
      "ru": "Волатильность меньше заданного значения, %",
      "uk": "Волатильність менша за задане значення, %"
    },
    "The absolute growth is greater than set value": {
      "ru": "Абсолютный прирост больше заданного значения",
      "uk": "Абсолютне зростання більше за задане значення"
    },
    "Absolute growth is less than set value": {
      "ru": "Абсолютный прирост меньше заданного значения",
      "uk": "Абсолютне зростання менше за задане значення"
    },
    "Relative growth is greater than the given %": {
      "ru": "Относительный прирост больше на заданный %",
      "uk": "Відносне зростання більше на заданий %"
    },
    "Relative growth is less than the given %": {
      "ru": "Относительный прирост меньше на заданный %",
      "uk": "Відносне зростання менше на заданий %"
    },
    "By price increase/decrease 2.0": {
      "ru": "По росту/снижению цены 2.0",
      "uk": "За зростанням/зниженням ціни 2.0"
    },
    "Growth of more than": {
      "ru": "Рост более",
      "uk": "Зростання більше"
    },
    "Growth of less than": {
      "ru": "Рост менее",
      "uk": "Зростання менше"
    },
    "Decrease of more than": {
      "ru": "Снижение более",
      "uk": "Зниження більше"
    },
    "Decrease of less than": {
      "ru": "Снижение менее",
      "uk": "Зниження менше"
    },
    "By price range": {
      "ru": "По диапазону цены",
      "uk": "За діапазоном цін"
    },
    "Price from": {
      "ru": "цена от",
      "uk": "ціна від"
    },
    "Price to": {
      "ru": "цена до",
      "uk": "ціна до"
    },
    "Inside range": {
      "ru": "Внутри диапазона",
      "uk": "Всередині діапазону"
    },
    "Above/below range": {
      "ru": "Выше/ниже диапазона",
      "uk": "Вище/нижче діапазону"
    },
    "By volume $ 2.0": {
      "ru": "По объему $ 2.0",
      "uk": "За обсягом $ 2.0"
    },
    "Coefficient": {
      "ru": "Коэффициент",
      "uk": "Коефіцієнт"
    },
    "By volume $": {
      "ru": "По объему $",
      "uk": "За обсягом $"
    },
    "The volume is greater than the specified one": {
      "ru": "Объём больше заданного",
      "uk": "Обсяг більший за заданий"
    },
    "The volume is less than the specified one": {
      "ru": "Объём меньше заданного",
      "uk": "Обсяг менший за заданий"
    },
    "Volume $": {
      "ru": "Объём $",
      "uk": "Обсяг $"
    },
    "SAR": {
      "ru": "SAR",
      "uk": "SAR"
    },
    "Acceleration": {
      "ru": "Ускорение",
      "uk": "Прискорення"
    },
    "Maximum": {
      "ru": "Максимум",
      "uk": "Максимум"
    },
    "By SAR": {
      "ru": "По SAR",
      "uk": "За SAR"
    },
    "Supertrend": {
      "ru": "Supertrend",
      "uk": "Supertrend"
    },
    "ATR period": {
      "ru": "ATR период",
      "uk": "ATR період"
    },
    "ATR multiplier": {
      "ru": "ATR множитель",
      "uk": "ATR множник"
    },
    "By Supertrend": {
      "ru": "По Supertrend",
      "uk": "За Supertrend"
    },
    "By trade count 2.0": {
      "ru": "По количеству сделок 2.0",
      "uk": "За кількістю угод 2.0"
    },
    "By number of trades 2.0": {
      "ru": "По количеству сделок 2.0",
      "uk": "За кількістю угод 2.0"
    },
    "By number of trades": {
      "ru": "По количеству сделок",
      "uk": "За кількістю угод"
    },
    "The number of trades is greater than the specified number": {
      "ru": "Кол-во сделок больше заданного",
      "uk": "К-сть угод більша за задану кількість"
    },
    "The number of transactions is less than the specified one": {
      "ru": "Кол-во сделок меньше заданного",
      "uk": "К-сть угод менша за задану кількість"
    },
    "Transaction count": {
      "ru": "Кол-во сделок",
      "uk": "К-сть угод"
    },
    "Volatility": {
      "ru": "Волатильность",
      "uk": "Волатильність"
    },
    "VORTEX": {
      "ru": "VORTEX",
      "uk": "VORTEX"
    },
    "By VORTEX": {
      "ru": "По VORTEX",
      "uk": "За VORTEX"
    },
    "Average": {
      "ru": "Усреднить",
      "uk": "Усереднити"
    },
    "From intersection (every second)": {
      "ru": "От пересечения (ежесекундно)",
      "uk": "Від перетину (щосекунди)"
    },
    "Break-even stop": {
      "ru": "Стоп в безубыток",
      "uk": "Стоп у беззбиток"
    },
    "BE trigger": {
      "ru": "Триггер БУ",
      "uk": "Тригер БЗ"
    },
    "BE stop level": {
      "ru": "Уровень стопа БУ",
      "uk": "Рівень стопа БЗ"
    }
  },
  "labels_by_field": {
    "note": "The same English name sometimes belongs to two different fields with two different translations: Deviation is the backtest setting Девиация and also the impulse field Отклонение. Look a field up here by its identifier first, and fall back to `labels` by name. Everything not listed here has one translation only.",
    "fields": {
      "impulse.entry.deviation-percent": {
        "ru": "Отклонение",
        "uk": "Відхилення"
      },
      "impulse.exit.deviation-percent": {
        "ru": "Отклонение",
        "uk": "Відхилення"
      },
      "past-impulse.filter.deviation-percent": {
        "ru": "Отклонение",
        "uk": "Відхилення"
      },
      "percent-volatility.filter.deviation-percent": {
        "ru": "Отклонение",
        "uk": "Відхилення"
      },
      "price-change.filter.deviation-percent": {
        "ru": "Отклонение",
        "uk": "Відхилення"
      },
      "volatility.entry.deviation-percent": {
        "ru": "Отклонение",
        "uk": "Відхилення"
      },
      "volatility.exit.deviation-percent": {
        "ru": "Отклонение",
        "uk": "Відхилення"
      },
      "backtest.stop_be_trigger_pct": {
        "en": "BE trigger",
        "ru": "Триггер БУ",
        "uk": "Тригер БЗ"
      },
      "backtest.stop_be_val_pct": {
        "en": "BE stop level",
        "ru": "Уровень стопа БУ",
        "uk": "Рівень стопа БЗ"
      },
      "profile.stop_be_enabled": {
        "en": "Break-even stop",
        "ru": "Стоп в безубыток",
        "uk": "Стоп у беззбиток"
      }
    }
  },
  "card_layout": {
    "note": "How the backtest form itself arranges the twenty required main settings and the optional Bybit break-even pair, so a card can be shown the way the user sees them. Field order inside a group is the order of the form and of the catalogue. The titles below are copied, never translated again by you: an assistant that rendered the second block into its own words produced a heading that appears nowhere in the product, and the user had nothing on screen to match it against. The same holds for the section titles and for the three column headers in card_words.",
    "groups": [
      {
        "key": "settings",
        "title": {
          "en": "Settings",
          "ru": "Настройки",
          "uk": "Налаштування"
        },
        "fields": [
          "backtest.exchange",
          "backtest.symbol",
          "backtest.account_balance_mode",
          "backtest.position_side",
          "backtest.backtest_mode",
          "backtest.start_dt",
          "backtest.end_dt"
        ]
      },
      {
        "key": "money_management",
        "title": {
          "en": "Money Management",
          "ru": "Мани менеджмент",
          "uk": "Мані менеджмент"
        },
        "fields": [
          "backtest.initial_quote_qty",
          "backtest.first_order",
          "backtest.maker_commission_perc",
          "backtest.taker_commission_perc",
          "backtest.margin_type",
          "backtest.leverage"
        ]
      },
      {
        "key": "risk_management",
        "title": {
          "en": "Risk Management",
          "ru": "Риск менеджмент",
          "uk": "Ризик-менеджмент"
        },
        "fields": [
          "backtest.tp_perc",
          "backtest.sl_perc",
          "backtest.stop_be_trigger_pct",
          "backtest.stop_be_val_pct",
          "backtest.in_step_perc",
          "backtest.in_dynamic_step",
          "backtest.in_count",
          "backtest.in_martin_gale",
          "backtest.close_by_signal_only_profit_perc"
        ]
      }
    ],
    "condition_sections": [
      {
        "role": "entry",
        "title": {
          "en": "Entry",
          "ru": "Вход",
          "uk": "Вхід"
        }
      },
      {
        "role": "filter",
        "title": {
          "en": "Filters",
          "ru": "Фильтры",
          "uk": "Фільтри"
        }
      },
      {
        "role": "exit",
        "title": {
          "en": "Exit",
          "ru": "Выход",
          "uk": "Вихід"
        },
        "title_when_averaging_by_signal": {
          "en": "Exit/Averaging",
          "ru": "Выход/Усреднение",
          "uk": "Вихід/Усереднення"
        }
      }
    ],
    "condition_block": {
      "note": "Every chosen indicator is a separate block, in the form and in the card. Its own fields are named in `labels` exactly like the main settings, and so are their options, so an indicator block is translated in full. Leaving the indicator blocks in English while the rest of the card is translated is the single most common way to get this wrong.",
      "order": [
        "entry",
        "filter",
        "exit"
      ],
      "numbering": "Blocks are numbered inside their own section, from 1.",
      "eyebrow": "Section title and the number of the block inside that section, then the name of the indicator: `Filters 2`, `Moving Average`. No identifier: the user does not know what `ma.entry` is and will ask.",
      "title": "The name of the indicator, taken from the definition's own `labels.en` in the catalogue and then translated through `labels`.",
      "rows": "The fields the catalogue lists for this `definition_id`, in the catalogue order, with the same three columns as a settings block: name, value, origin.",
      "footer": "The `explanation` written for this condition, in the user's language.",
      "empty": {
        "en": "No conditions configured.",
        "ru": "Условия не заданы.",
        "uk": "Умови не задано."
      }
    },
    "labels_when_averaging_by_signal": {
      "note": "With backtest.backtest_mode = AVERAGE_BY_SIGNAL the form renames these three fields. With AVERAGE_BY_LIMIT they keep the names in the catalogue.",
      "backtest.in_step_perc": {
        "en": "Step aver.",
        "ru": "Шаг усредн.",
        "uk": "Крок усередн."
      },
      "backtest.in_dynamic_step": {
        "en": "D.step aver.",
        "ru": "Д.шаг усредн.",
        "uk": "Д.крок усередн."
      },
      "backtest.in_count": {
        "en": "Count aver.",
        "ru": "Количество усредн.",
        "uk": "Кількість усередн."
      }
    },
    "unlabelled_in_the_form": {
      "note": "These two settings have no caption in the form: the user picks between two buttons. Show the chosen option, not a field name, when you copy the form's look.",
      "backtest.position_side": {
        "LONG": {
          "en": "Long",
          "ru": "Лонг",
          "uk": "Лонг"
        },
        "SHORT": {
          "en": "Short",
          "ru": "Шорт",
          "uk": "Шорт"
        }
      },
      "backtest.margin_type": {
        "CROSSED": {
          "en": "Cross",
          "ru": "Перекрестная",
          "uk": "Перехресна"
        },
        "ISOLATED": {
          "en": "Isolated",
          "ru": "Изолированная",
          "uk": "Ізольована"
        }
      }
    },
    "never_show_the_user": {
      "note": "Everything here belongs to the machine half of this contract. A person reading a card has no use for it and stops to ask what it means. On 16 September a card printed the wire keys `ss / Is / ct / at / rs / t / p` at the user; that is the class of thing meant. Keep them for the JSON you build and for the link.",
      "items": [
        "source_key letters and any other wire key",
        "field_id paths such as backtest.tp_perc or ma.entry.period",
        "definition_id such as ma.entry - name the indicator instead",
        "raw enum codes such as AVERAGE_BY_SIGNAL or CROSSED - show the caption",
        "raw origin codes such as schema_default - show the words from card_layout.origins",
        "package file names, schema names, context ids and JSON of any kind"
      ],
      "instead": "Every one of these has a human name in this pack or in the catalogue. Show that name, in the user's language. If a thing genuinely has no human name, it does not belong in the answer at all."
    },
    "origins": {
      "note": "The third column of every card row. These are the schema's own origin values, and the user reads them in each line, so they are translated like everything else.",
      "main_settings_have_no_published_default": "schema_default is only legal where the catalogue actually publishes a schema_default for that field, and it does so for condition fields only. The twenty main settings have no published default at all, so a card that claims schema_default for one of them is rejected with field.default_origin. When you keep a main setting at the value the form itself shows, the honest origin is agent_choice, and the note says that is what it is.",
      "user": {
        "en": "from you",
        "ru": "от вас",
        "uk": "від вас"
      },
      "derived": {
        "en": "read from the documentation",
        "ru": "из документации",
        "uk": "з документації"
      },
      "schema_default": {
        "en": "form default",
        "ru": "значение формы по умолчанию",
        "uk": "значення форми за замовчуванням"
      },
      "agent_choice": {
        "en": "chosen by the assistant",
        "ru": "выбор ассистента",
        "uk": "вибір асистента"
      },
      "illustrative": {
        "en": "placeholder, replace it",
        "ru": "заглушка, замените",
        "uk": "заглушка, замініть"
      },
      "unknown": {
        "en": "not known yet",
        "ru": "пока неизвестно",
        "uk": "поки невідомо"
      }
    },
    "value_formats": {
      "note": "How a value is printed, so a card matches the form. A date and time is `dd.mm.yyyy hh:mm`, the way the form shows it; the stored value carries no timezone. A switch is Yes or No. A number is printed as it stands.",
      "datetime": "dd.mm.yyyy hh:mm"
    },
    "units": {
      "note": "What may follow a value, and what may not. The backtest form prints no unit words at all: it puts them into the caption itself (Take Profit %, FO quantity). So a card shows only the signs the user sees on their own screen and nothing else. `bars`, `minutes`, `ratio`, `quote volume`, `trade count` and the like are this documentation's vocabulary for describing a field, not words from the interface: printed in a card they are the same defect as a raw field identifier.",
      "shown": {
        "percent": "%",
        "percent; -1 sentinel": "%",
        "quote currency (USDT in current UI)": "USDT",
        "quote notional before quantity conversion; verify symbol filters": "USDT"
      },
      "everything_else_is_silent": true
    },
    "card_words": {
      "note": {
        "en": "Note",
        "ru": "Примечание",
        "uk": "Примітка"
      },
      "origin_column": {
        "en": "Source",
        "ru": "Источник",
        "uk": "Джерело"
      },
      "name_column": {
        "en": "Parameter",
        "ru": "Параметр",
        "uk": "Параметр"
      },
      "value_column": {
        "en": "Value",
        "ru": "Значение",
        "uk": "Значення"
      },
      "pairs": {
        "en": "Pairs",
        "ru": "Пары",
        "uk": "Пари"
      },
      "pairs_in_test": {
        "en": "Pairs in this test",
        "ru": "Пар в тесте",
        "uk": "Пар у тесті"
      },
      "main_pair": {
        "en": "Main pair",
        "ru": "Основная пара",
        "uk": "Основна пара"
      },
      "profile": {
        "en": "Test profile",
        "ru": "Профиль теста",
        "uk": "Профіль тесту"
      },
      "before_run": {
        "en": "Before running a calculation",
        "ru": "Перед запуском расчёта",
        "uk": "Перед запуском розрахунку"
      },
      "none": {
        "en": "No conditions configured.",
        "ru": "Условия не заданы.",
        "uk": "Умови не задано."
      },
      "input_required": {
        "en": "Input required",
        "ru": "Нужно значение",
        "uk": "Потрібне значення"
      },
      "yes": {
        "en": "Yes",
        "ru": "Да",
        "uk": "Так"
      },
      "no": {
        "en": "No",
        "ru": "Нет",
        "uk": "Ні"
      },
      "boolean_note": "Every switch is written the way the panel writes it: Yes or No. There is no On/Off anywhere in the application, in any language.",
      "finish_first": {
        "en": "Fill in the missing values, and the link can be produced.",
        "ru": "Заполните недостающие значения — и ссылку можно будет собрать.",
        "uk": "Заповніть відсутні значення — і посилання можна буде зібрати."
      },
      "list": {
        "en": "List",
        "ru": "Список",
        "uk": "Список"
      },
      "and_more": {
        "en": "and {count} more",
        "ru": "и ещё {count}",
        "uk": "і ще {count}"
      },
      "open_link": {
        "en": "Open in backtester",
        "ru": "Открыть в бэктестере",
        "uk": "Відкрити в бектестері"
      },
      "status_example": {
        "en": "EDUCATIONAL EXAMPLE - NOT EXECUTED",
        "ru": "УЧЕБНЫЙ ПРИМЕР - НЕ ЗАПУЩЕН",
        "uk": "НАВЧАЛЬНИЙ ПРИКЛАД - НЕ ЗАПУЩЕНО"
      },
      "status_proposal": {
        "en": "USER HYPOTHESIS - NOT EXECUTED",
        "ru": "ГИПОТЕЗА ПОЛЬЗОВАТЕЛЯ - НЕ ЗАПУЩЕНА",
        "uk": "ГІПОТЕЗА КОРИСТУВАЧА - НЕ ЗАПУЩЕНА"
      },
      "status_needs_input": {
        "en": "INPUT REQUIRED",
        "ru": "НУЖНЫ ДАННЫЕ",
        "uk": "ПОТРІБНІ ДАНІ"
      },
      "profile_note": {
        "en": "These annotations state intent. Check modes and date interpretation in the application.",
        "ru": "Это пометки о намерении. Режимы и трактовку дат проверьте в приложении.",
        "uk": "Це позначки про намір. Режими та трактування дат перевірте в застосунку."
      },
      "pairs_note": {
        "en": "Each pair is calculated separately on the full deposit; the pairs do not interact and this is not a portfolio. Calculating more than one pair is a VIP feature; without VIP the calculation service refuses the run. Testing more pairs produces more results, not better ones.",
        "ru": "Каждая пара считается отдельно и на весь депозит; пары не взаимодействуют, это не портфель. Расчёт больше одной пары — возможность VIP; без VIP сервис расчёта откажет. Больше пар — больше результатов, а не лучше.",
        "uk": "Кожна пара рахується окремо і на весь депозит; пари не взаємодіють, це не портфель. Розрахунок більш ніж однієї пари — можливість VIP; без VIP сервіс розрахунку відмовить. Більше пар — більше результатів, а не краще."
      },
      "footer_values": {
        "en": "Values in this card: {count}, from one validated configuration.",
        "ru": "Значений в карточке: {count}, из одной проверенной конфигурации.",
        "uk": "Значень у картці: {count}, з однієї перевіреної конфігурації."
      },
      "observed_prefix": {
        "en": "Interface observed:",
        "ru": "Данные интерфейса:",
        "uk": "Дані інтерфейсу:"
      },
      "footer_not_executed": {
        "en": "No backtest or live trade was executed. The link fills settings; the user starts a calculation separately.",
        "ru": "Ни бэктест, ни реальная сделка не запускались. Ссылка только заполняет настройки; расчёт пользователь запускает сам.",
        "uk": "Ані бектест, ані реальна угода не запускалися. Посилання лише заповнює налаштування; розрахунок користувач запускає сам."
      },
      "footer_print": {
        "en": "Use the browser Print / Save as PDF command for a printable copy.",
        "ru": "Для печати используйте команду браузера «Печать» или «Сохранить как PDF».",
        "uk": "Для друку скористайтеся командою браузера «Друк» або «Зберегти як PDF»."
      }
    },
    "gate_words": {
      "note": "The checklist under a card. The generator returns these checks in English with a stable `id`; show the wording from here instead, in the user's language. The gate whose id is `multi` uses `multi_list` when its `expected` is true and `multi_single` otherwise.",
      "tier": {
        "en": "Calculating several pairs is a VIP feature. Without VIP the calculation service refuses the run. The link cannot see your tier.",
        "ru": "Расчёт нескольких пар — возможность VIP. Без VIP сервис расчёта откажет. Ссылка ваш тариф не видит.",
        "uk": "Розрахунок кількох пар — можливість VIP. Без VIP сервіс розрахунку відмовить. Посилання ваш тариф не бачить."
      },
      "multi_list": {
        "en": "Check that the pair table shows exactly the pairs listed here. A pair the exchange does not offer is skipped silently, and an earlier selection is not cleared.",
        "ru": "Проверьте, что в таблице пар именно те пары, что перечислены здесь. Пару, которой нет у биржи, пропустят молча, а прежний выбор ссылка не очищает.",
        "uk": "Перевірте, що в таблиці пар саме ті пари, що перелічені тут. Пару, якої немає на біржі, пропустять мовчки, а попередній вибір посилання не очищає."
      },
      "multi_single": {
        "en": "Clear the multi-pair selection: a selection left in the table overrides the single pair when the calculation starts.",
        "ru": "Очистите выбор нескольких пар: оставленный в таблице выбор перебьёт одиночную пару при запуске расчёта.",
        "uk": "Очистіть вибір кількох пар: залишений у таблиці вибір переб'є одиночну пару під час запуску розрахунку."
      },
      "fast": {
        "en": "Accelerated calculation (x200) is not restored by the link. A VIP account may switch it on by itself, so turn it off by hand before calculating.",
        "ru": "Ускоренный расчёт (x200) ссылкой не восстанавливается. У VIP он может включиться сам, поэтому перед расчётом выключите его вручную.",
        "uk": "Прискорений розрахунок (x200) посиланням не відновлюється. У VIP він може увімкнутися сам, тож перед розрахунком вимкніть його вручну."
      },
      "hedge": {
        "en": "Check in the ordinary backtester that classic hedge is switched off: no hedge settings are carried by the link.",
        "ru": "Проверьте в обычном бэктестере, что классический хедж выключен: настройки хеджа ссылка не переносит.",
        "uk": "Перевірте у звичайному бектестері, що класичний хедж вимкнено: налаштування хеджа посилання не переносить."
      },
      "optimizer": {
        "en": "Use the ordinary form. Neither optimizer ranges nor an optimizer run are carried by the link.",
        "ru": "Пользуйтесь обычной формой. Ни диапазоны оптимизатора, ни его запуск ссылка не переносит.",
        "uk": "Користуйтеся звичайною формою. Ні діапазони оптимізатора, ні його запуск посилання не переносить."
      },
      "dates": {
        "en": "Check both dates, how the timezone is read and whether there is history for the period, warm-up included. The dates carry no timezone offset.",
        "ru": "Проверьте обе даты, трактовку часового пояса и наличие истории за период, включая прогрев. Часового пояса в датах нет.",
        "uk": "Перевірте обидві дати, трактування часового поясу та наявність історії за період, включно з прогріванням. Часового поясу в датах немає."
      },
      "form": {
        "en": "When the page has loaded, compare every field and every indicator with this card. Changing the exchange, the mode or the pair can clear or rewrite them, and the leverage can be capped.",
        "ru": "Когда страница загрузится, сверьте каждое поле и каждый индикатор с этой карточкой. Смена биржи, режима или пары может их очистить или переписать, а плечо может быть урезано.",
        "uk": "Коли сторінка завантажиться, звірте кожне поле й кожен індикатор із цією карткою. Зміна біржі, режиму або пари може їх очистити чи переписати, а плече може бути обмежено."
      },
      "account": {
        "en": "Opening the application may ask you to sign in. The link carries no session and no credentials, and it starts nothing by itself.",
        "ru": "Приложение может попросить войти. Ссылка не несёт ни сессии, ни доступов и сама ничего не запускает.",
        "uk": "Застосунок може попросити увійти. Посилання не несе ні сесії, ні доступів і саме нічого не запускає."
      },
      "costs": {
        "en": "Before starting a calculation, check your actual capital, order size, fees, leverage and the limits of the instrument.",
        "ru": "Перед запуском расчёта проверьте свой реальный капитал, размер ордера, комиссии, плечо и лимиты инструмента.",
        "uk": "Перед запуском розрахунку перевірте свій реальний капітал, розмір ордера, комісії, плече та ліміти інструмента."
      }
    },
    "free_text": {
      "note": "Everything you write yourself is written in the user's language too: the title of the card, the sentence of intent, the note under a field, the explanation under an indicator and the checklist before a run. The example cards in this package are in English because this documentation is in English - that is not a model to copy for language. Only tickers, exchange names, numbers and timeframe codes stay as they are, because they are the same on the user's screen."
    },
    "optional_fields": {
      "profile.stop_be_enabled": {
        "when_false": "Do not show either break-even value row.",
        "when_true": [
          "backtest.stop_be_trigger_pct",
          "backtest.stop_be_val_pct"
        ]
      }
    },
    "main_settings_have_no_published_default": "Main settings have no published schema default."
  }
}
```

## Common catalogue

```json
{
  "format": "itb.field-catalog/0.5.0",
  "observed_date": "2026-09-22",
  "allowed_sources": [
    "README.md",
    "00-agent-contract.md",
    "01-system-model.md",
    "02-compatibility.md",
    "03-card-format.md",
    "04-backtest-workflow.md",
    "05-signal-passports.md",
    "06-order-grid.md",
    "07-preset-links.md",
    "agent-policy.json",
    "condition-constraints.json",
    "field-catalog.json",
    "strategy-card.schema.json",
    "reference/crossing.py",
    "main-settings-constraints.json",
    "passports/adx.md",
    "passports/bollinger.md",
    "passports/chande-momentum.md",
    "passports/fomo.md",
    "passports/impulse.md",
    "passports/ma.md",
    "passports/macd.md",
    "passports/mfi.md",
    "passports/momentum.md",
    "passports/obv-oscillator.md",
    "passports/price-range.md",
    "passports/quote-volume.md",
    "passports/rsi.md",
    "passports/sar.md",
    "passports/stochastic.md",
    "passports/supertrend.md",
    "passports/trade-count.md",
    "passports/volatility.md",
    "passports/vortex.md",
    "reference/ordinary_grid.py",
    "render_card.py"
  ],
  "scope": "Complete current ordinary desktop BACKTEST new-card inventory: BINANCE/BYBIT x DCA false/true. The ordinary Bybit form also supports an optional break-even stop pair. Not all platform modes or a trading API.",
  "required_definition_fields": true,
  "evidence_note": "Types/enums/defaults: current public BACKTEST metadata. Labels and numeric constraints: observed source. Runtime responses do not provide numeric min/max. Neither proves deployed numerical parity.",
  "semantic_bindings": {
    "exchange": "backtest.exchange",
    "asset": "backtest.symbol",
    "dca_enabled": "profile.dca_enabled",
    "mode": "backtest.backtest_mode",
    "start": "backtest.start_dt",
    "end": "backtest.end_dt"
  },
  "contexts": [
    {
      "id": "backtest-binance-dca-false",
      "exchange": "BINANCE",
      "dca_enabled": false,
      "limits": {
        "max_main_ind_count": 1,
        "max_price_limit_ind_count": 10,
        "max_close_by_ind_count": 3,
        "entry": 1,
        "filter": 10,
        "exit": 3
      },
      "observation_id": "backtest-binance-dca-false@4a7f4cb49894",
      "available_definition_ids": [
        "ma.entry",
        "ma.exit",
        "ma.filter",
        "macd.entry",
        "macd.exit",
        "macd.filter",
        "rsi.entry",
        "rsi.exit",
        "rsi.filter",
        "rsi-growth-decline.filter",
        "bollinger.entry",
        "bollinger.exit",
        "bollinger.filter",
        "bollinger-width.filter",
        "stochastic.entry",
        "stochastic.exit",
        "stochastic.filter",
        "adx-di.entry",
        "adx-di.exit",
        "adx.filter",
        "chande-momentum.entry",
        "chande-momentum.exit",
        "chande-momentum.filter",
        "fomo-width.filter",
        "fomo.entry",
        "fomo.exit",
        "fomo.filter",
        "impulse.entry",
        "impulse.exit",
        "mfi-growth-decline.filter",
        "mfi.entry",
        "mfi.exit",
        "mfi.filter",
        "momentum.entry",
        "momentum.exit",
        "momentum.filter",
        "obv-oscillator.entry",
        "obv-oscillator.exit",
        "obv-oscillator.filter",
        "past-impulse.filter",
        "percent-volatility.filter",
        "price-change.filter",
        "price-range.filter",
        "quote-volume-pump.entry",
        "quote-volume-pump.exit",
        "quote-volume-pump.filter",
        "quote-volume.filter",
        "sar.entry",
        "sar.exit",
        "sar.filter",
        "supertrend.entry",
        "supertrend.exit",
        "supertrend.filter",
        "trade-count-pump.entry",
        "trade-count-pump.exit",
        "trade-count-pump.filter",
        "trade-count.filter",
        "volatility.entry",
        "volatility.exit",
        "vortex.entry",
        "vortex.exit",
        "vortex.filter"
      ]
    },
    {
      "id": "backtest-binance-dca-true",
      "exchange": "BINANCE",
      "dca_enabled": true,
      "limits": {
        "max_main_ind_count": 1,
        "max_price_limit_ind_count": 10,
        "max_close_by_ind_count": 3,
        "entry": 1,
        "filter": 10,
        "exit": 3
      },
      "observation_id": "backtest-binance-dca-true@830e6db9e72c",
      "available_definition_ids": [
        "ma.entry",
        "ma.exit",
        "ma.filter",
        "macd.entry",
        "macd.exit",
        "macd.filter",
        "rsi.entry",
        "rsi.exit",
        "rsi.filter",
        "rsi-growth-decline.filter",
        "bollinger.entry",
        "bollinger.exit",
        "bollinger.filter",
        "bollinger-width.filter",
        "stochastic.entry",
        "stochastic.exit",
        "stochastic.filter",
        "adx-di.entry",
        "adx-di.exit",
        "adx.filter",
        "chande-momentum.entry",
        "chande-momentum.exit",
        "chande-momentum.filter",
        "fomo-width.filter",
        "fomo.entry",
        "fomo.exit",
        "fomo.filter",
        "impulse.entry",
        "impulse.exit",
        "mfi-growth-decline.filter",
        "mfi.entry",
        "mfi.exit",
        "mfi.filter",
        "momentum.entry",
        "momentum.exit",
        "momentum.filter",
        "obv-oscillator.entry",
        "obv-oscillator.exit",
        "obv-oscillator.filter",
        "past-impulse.filter",
        "percent-volatility.filter",
        "price-change.filter",
        "price-range.filter",
        "quote-volume-pump.entry",
        "quote-volume-pump.exit",
        "quote-volume-pump.filter",
        "quote-volume.filter",
        "sar.entry",
        "sar.exit",
        "sar.filter",
        "supertrend.entry",
        "supertrend.exit",
        "supertrend.filter",
        "trade-count-pump.entry",
        "trade-count-pump.exit",
        "trade-count-pump.filter",
        "trade-count.filter",
        "volatility.entry",
        "volatility.exit",
        "vortex.entry",
        "vortex.exit",
        "vortex.filter"
      ]
    },
    {
      "id": "backtest-bybit-dca-false",
      "exchange": "BYBIT",
      "dca_enabled": false,
      "limits": {
        "max_main_ind_count": 1,
        "max_price_limit_ind_count": 10,
        "max_close_by_ind_count": 3,
        "entry": 1,
        "filter": 10,
        "exit": 3
      },
      "observation_id": "backtest-bybit-dca-false@c5fa4a76fd6e",
      "available_definition_ids": [
        "ma.entry",
        "ma.exit",
        "ma.filter",
        "macd.entry",
        "macd.exit",
        "macd.filter",
        "rsi.entry",
        "rsi.exit",
        "rsi.filter",
        "rsi-growth-decline.filter",
        "bollinger.entry",
        "bollinger.exit",
        "bollinger.filter",
        "bollinger-width.filter",
        "stochastic.entry",
        "stochastic.exit",
        "stochastic.filter",
        "adx-di.entry",
        "adx-di.exit",
        "adx.filter",
        "chande-momentum.entry",
        "chande-momentum.exit",
        "chande-momentum.filter",
        "fomo-width.filter",
        "fomo.entry",
        "fomo.exit",
        "fomo.filter",
        "impulse.entry",
        "impulse.exit",
        "mfi-growth-decline.filter",
        "mfi.entry",
        "mfi.exit",
        "mfi.filter",
        "momentum.entry",
        "momentum.exit",
        "momentum.filter",
        "obv-oscillator.entry",
        "obv-oscillator.exit",
        "obv-oscillator.filter",
        "past-impulse.filter",
        "percent-volatility.filter",
        "price-change.filter",
        "price-range.filter",
        "quote-volume-pump.entry",
        "quote-volume-pump.exit",
        "quote-volume-pump.filter",
        "quote-volume.filter",
        "sar.entry",
        "sar.exit",
        "sar.filter",
        "supertrend.entry",
        "supertrend.exit",
        "supertrend.filter",
        "volatility.entry",
        "volatility.exit",
        "vortex.entry",
        "vortex.exit",
        "vortex.filter"
      ]
    },
    {
      "id": "backtest-bybit-dca-true",
      "exchange": "BYBIT",
      "dca_enabled": true,
      "limits": {
        "max_main_ind_count": 1,
        "max_price_limit_ind_count": 10,
        "max_close_by_ind_count": 3,
        "entry": 1,
        "filter": 10,
        "exit": 3
      },
      "observation_id": "backtest-bybit-dca-true@b4e804c5495d",
      "available_definition_ids": [
        "ma.entry",
        "ma.exit",
        "ma.filter",
        "macd.entry",
        "macd.exit",
        "macd.filter",
        "rsi.entry",
        "rsi.exit",
        "rsi.filter",
        "rsi-growth-decline.filter",
        "bollinger.entry",
        "bollinger.exit",
        "bollinger.filter",
        "bollinger-width.filter",
        "stochastic.entry",
        "stochastic.exit",
        "stochastic.filter",
        "adx-di.entry",
        "adx-di.exit",
        "adx.filter",
        "chande-momentum.entry",
        "chande-momentum.exit",
        "chande-momentum.filter",
        "fomo-width.filter",
        "fomo.entry",
        "fomo.exit",
        "fomo.filter",
        "impulse.entry",
        "impulse.exit",
        "mfi-growth-decline.filter",
        "mfi.entry",
        "mfi.exit",
        "mfi.filter",
        "momentum.entry",
        "momentum.exit",
        "momentum.filter",
        "obv-oscillator.entry",
        "obv-oscillator.exit",
        "obv-oscillator.filter",
        "past-impulse.filter",
        "percent-volatility.filter",
        "price-change.filter",
        "price-range.filter",
        "quote-volume-pump.entry",
        "quote-volume-pump.exit",
        "quote-volume-pump.filter",
        "quote-volume.filter",
        "sar.entry",
        "sar.exit",
        "sar.filter",
        "supertrend.entry",
        "supertrend.exit",
        "supertrend.filter",
        "volatility.entry",
        "volatility.exit",
        "vortex.entry",
        "vortex.exit",
        "vortex.filter"
      ]
    }
  ],
  "settings": [
    {
      "id": "backtest.exchange",
      "type": "string",
      "labels": {
        "en": "Exchange"
      },
      "unit": "unknown/not applicable",
      "required": true,
      "enum_values": [
        "BINANCE",
        "BYBIT"
      ],
      "enum_labels": {
        "BINANCE": {
          "en": "BINANCE"
        },
        "BYBIT": {
          "en": "BYBIT"
        }
      },
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.symbol",
      "type": "string",
      "labels": {
        "en": "Asset"
      },
      "unit": "unknown/not applicable",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.account_balance_mode",
      "type": "string",
      "labels": {
        "en": "Balance Operation Mode"
      },
      "unit": "unknown/not applicable",
      "required": true,
      "enum_values": [
        "NO_WITHDRAW",
        "WITHDRAW_ALL_PROFIT",
        "WITHDRAW_ALL_PROFIT_IF_CAP_GREATER_THEN_INITIAL",
        "WITHDRAW_ALL_PROFIT_EVERY_MONTH"
      ],
      "enum_labels": {
        "NO_WITHDRAW": {
          "en": "No Withdrawal"
        },
        "WITHDRAW_ALL_PROFIT": {
          "en": "Withdraw All Profit"
        },
        "WITHDRAW_ALL_PROFIT_IF_CAP_GREATER_THEN_INITIAL": {
          "en": "Withdraw all profit if capital exceeds the initial amount"
        },
        "WITHDRAW_ALL_PROFIT_EVERY_MONTH": {
          "en": "Withdraw all profit monthly"
        }
      },
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.position_side",
      "type": "string",
      "labels": {
        "en": "Direction"
      },
      "unit": "enum",
      "required": true,
      "enum_values": [
        "SHORT",
        "LONG"
      ],
      "enum_labels": {
        "SHORT": {
          "en": "Short"
        },
        "LONG": {
          "en": "Long"
        }
      },
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified",
      "ui_selected_label": {
        "en": "Long"
      }
    },
    {
      "id": "backtest.backtest_mode",
      "type": "string",
      "labels": {
        "en": "Mode"
      },
      "unit": "unknown/not applicable",
      "required": true,
      "enum_values": [
        "AVERAGE_BY_LIMIT",
        "AVERAGE_BY_SIGNAL"
      ],
      "enum_labels": {
        "AVERAGE_BY_LIMIT": {
          "en": "Averaging using limit orders"
        },
        "AVERAGE_BY_SIGNAL": {
          "en": "Averaging using signals"
        }
      },
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.start_dt",
      "type": "string",
      "labels": {
        "en": "Start of calculation"
      },
      "unit": "calendar date and minute; wire has no UTC offset",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.end_dt",
      "type": "string",
      "labels": {
        "en": "Calculation End"
      },
      "unit": "calendar date and minute; wire has no UTC offset",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.initial_quote_qty",
      "type": "number",
      "labels": {
        "en": "Deposit"
      },
      "unit": "quote currency (USDT in current UI)",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.first_order",
      "type": "number",
      "labels": {
        "en": "First Order"
      },
      "unit": "quote notional before quantity conversion; verify symbol filters",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.maker_commission_perc",
      "type": "number",
      "labels": {
        "en": "Commission limit order"
      },
      "unit": "percent",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.taker_commission_perc",
      "type": "number",
      "labels": {
        "en": "Market Order Commission"
      },
      "unit": "percent",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.margin_type",
      "type": "string",
      "labels": {
        "en": "Margin type"
      },
      "unit": "unknown/not applicable",
      "required": true,
      "enum_values": [
        "CROSSED",
        "ISOLATED"
      ],
      "enum_labels": {
        "CROSSED": {
          "en": "Cross"
        },
        "ISOLATED": {
          "en": "Isolated"
        }
      },
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified",
      "ui_selected_label": {
        "en": "Isolated"
      }
    },
    {
      "id": "backtest.leverage",
      "type": "integer",
      "labels": {
        "en": "Leverage"
      },
      "unit": "ratio x",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.tp_perc",
      "type": "number",
      "labels": {
        "en": "Take Profit"
      },
      "unit": "percent",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.sl_perc",
      "type": "number",
      "labels": {
        "en": "Stop Limit"
      },
      "unit": "percent",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.in_step_perc",
      "type": "number",
      "labels": {
        "en": "SOS"
      },
      "unit": "percent",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.in_dynamic_step",
      "type": "number",
      "labels": {
        "en": "DSOS"
      },
      "unit": "multiplier",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.in_count",
      "type": "integer",
      "labels": {
        "en": "Number of SO"
      },
      "unit": "count of safety orders",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.in_martin_gale",
      "type": "number",
      "labels": {
        "en": "Martingale"
      },
      "unit": "quantity multiplier",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.close_by_signal_only_profit_perc",
      "type": "number",
      "labels": {
        "en": "Deviation"
      },
      "unit": "percent; -1 sentinel",
      "required": true,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "evidence": "source_form; current public HTML signature matched; backend range not certified"
    },
    {
      "id": "backtest.stop_be_trigger_pct",
      "type": "number",
      "labels": {
        "en": "BE trigger"
      },
      "unit": "percent from current average position price",
      "required": false,
      "enum_values": null,
      "enum_labels": {},
      "minimum": null,
      "maximum": null,
      "available_contexts": [
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "required_when": {
        "field_id": "profile.stop_be_enabled",
        "equals": true
      },
      "evidence": "reviewed source contract on origin/dev; trigger must be finite and greater than zero"
    },
    {
      "id": "backtest.stop_be_val_pct",
      "type": "number",
      "labels": {
        "en": "BE stop level"
      },
      "unit": "percent from current average position price",
      "required": false,
      "enum_values": null,
      "enum_labels": {},
      "minimum": 0,
      "maximum": null,
      "available_contexts": [
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "required_when": {
        "field_id": "profile.stop_be_enabled",
        "equals": true
      },
      "evidence": "reviewed source contract on origin/dev; level must be lower than trigger"
    },
    {
      "id": "profile.dca_enabled",
      "type": "boolean",
      "labels": {
        "en": "Signal averaging"
      },
      "enum_values": null,
      "minimum": null,
      "maximum": null,
      "unit": null,
      "required": true,
      "profile_only": true
    },
    {
      "id": "profile.hedge_enabled",
      "type": "boolean",
      "labels": {
        "en": "Hedge"
      },
      "enum_values": null,
      "minimum": null,
      "maximum": null,
      "unit": null,
      "required": true,
      "profile_only": true,
      "constant": false
    },
    {
      "id": "profile.fast_enabled",
      "type": "boolean",
      "labels": {
        "en": "Fast calculation"
      },
      "enum_values": null,
      "minimum": null,
      "maximum": null,
      "unit": null,
      "required": true,
      "profile_only": true,
      "constant": false
    },
    {
      "id": "profile.multi_enabled",
      "type": "boolean",
      "labels": {
        "en": "Multitest: pair list"
      },
      "enum_values": null,
      "minimum": null,
      "maximum": null,
      "unit": null,
      "required": true,
      "profile_only": true
    },
    {
      "id": "profile.optimizer_enabled",
      "type": "boolean",
      "labels": {
        "en": "Optimizer"
      },
      "enum_values": null,
      "minimum": null,
      "maximum": null,
      "unit": null,
      "required": true,
      "profile_only": true,
      "constant": false
    },
    {
      "id": "profile.stop_be_enabled",
      "type": "boolean",
      "labels": {
        "en": "Break-even stop"
      },
      "enum_values": null,
      "minimum": null,
      "maximum": null,
      "unit": null,
      "required": true,
      "profile_only": true,
      "note": "True exactly when both optional backtest.stop_be_* fields are present."
    },
    {
      "id": "profile.timezone_intent",
      "type": "string",
      "labels": {
        "en": "Intended timezone"
      },
      "enum_values": null,
      "minimum": null,
      "maximum": null,
      "unit": null,
      "required": true,
      "profile_only": true,
      "constant": "UTC"
    }
  ],
  "unsupported_matrix": [
    {
      "feature": "Funding conditions",
      "status": "not_offered_in_reviewed_desktop_new_card_selector",
      "available_backtest": false
    },
    {
      "feature": "Hidden or legacy cards",
      "status": "not_supported_as_new_cards_by_this_release",
      "available_backtest": false
    },
    {
      "feature": "TradingView, live robot integrations and non-BACKTEST contexts",
      "status": "outside_this_preset_profile",
      "note": "This scope statement does not establish availability elsewhere in the platform."
    },
    {
      "feature": "Hedge settings, fast calculation and optimizer ranges",
      "status": "outside_this_preset_profile",
      "note": "A fixed break-even pair can be transferred to the ordinary Bybit backtest; optimizer ranges remain outside this profile."
    },
    {
      "feature": "Multitest: one strategy over a list of pairs",
      "status": "transferred_by_the_preset_link",
      "note": "The link fills the pair table. The calculation itself is a VIP feature: the calculation service compares the number of pairs with the account tier limit (one pair without VIP) and otherwise refuses the run with 400 'Too many symbols'."
    },
    {
      "feature": "Impulse MAIN fm=true",
      "status": "metadata_option_with_unconfirmed_ordinary_backtest_effect",
      "preset_generation": "blocked_in_this_release",
      "supported_value": false
    },
    {
      "feature": "Break-even stop in ordinary BACKTEST",
      "status": "supported_for_bybit_only",
      "preset_generation": "optional_exact_pair",
      "note": "Both values are required together; trigger > 0, level >= 0, level < trigger; unavailable with hedge."
    }
  ]
}
```

## Shared condition policy

```json
{
  "format": "itb.condition-constraints/0.4.0",
  "scope": {
    "families": 19,
    "family_count_convention": "editorial grouping of current ordinary desktop BACKTEST IDs",
    "definitions": 62,
    "fields": 490,
    "numeric_fields": 135,
    "metadata_status": "current_backtest_observed",
    "validation_status": "source_observed_constructor_domain",
    "deployed_parity": false,
    "full_platform_catalog": false,
    "complete_current_desktop_backtest_metadata": true
  },
  "contract": {
    "strict_mode_meaning": "Complete normalized constructor input domain for current ordinary desktop BACKTEST conditions; not complete numerical execution/deployment contract",
    "unknown_field_policy": "reject",
    "missing_field_policy": "needs_input",
    "null_value_policy": "needs_input; never invent a replacement",
    "coercion_policy": "none; no rounding, truncation, numeric strings or bool-as-number",
    "unknown_constraints_policy": "fail_closed",
    "external_indicators_or_data": "not permitted by this condition catalog",
    "step_policy": "Use the exact declared policy: normalized integer, source modulo, finite allowed_values, conditional domains, or Python float scaled truncation modulo. UI step is descriptive only.",
    "asset_policy": "same symbol as the user-selected card; symbol existence/data availability require separate authoritative checks",
    "unbounded_policy": "source_no_explicit_bounds means the inspected constructor chain adds no numeric bound; finite/type/other listed validators still apply. It does not prove every value computes successfully.",
    "context_policy": "Definition and field must be available in the exact selected context."
  }
}
```

## Main settings constraints

```json
{
  "format": "itb.main-settings-constraints/0.5.0",
  "checked_on": "2026-09-22",
  "scope": "Ordinary BACKTEST over one pair or a list of pairs; first-order size in quote currency, no percentage-first-order mode. The optional break-even pair applies only to Bybit and is measured from the current average position price.",
  "fields": {
    "backtest.initial_quote_qty": {
      "type": "number",
      "finite": true,
      "minimum": 10,
      "maximum": 10000000,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "type": "number",
        "value": "10000"
      }
    },
    "backtest.first_order": {
      "type": "number",
      "finite": true,
      "minimum": 5,
      "maximum": 1000000,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "type": "number",
        "value": "200"
      }
    },
    "backtest.leverage": {
      "type": "integer",
      "finite": true,
      "minimum": 1,
      "maximum": 125,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "type": "number",
        "value": "10"
      },
      "normalized_input": "Exact JSON integer for predictable UI transfer; no silent rounding or server-coercion claim."
    },
    "backtest.maker_commission_perc": {
      "type": "number",
      "finite": true,
      "minimum": 0,
      "maximum": 1,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "type": "number",
        "value": "0.04"
      }
    },
    "backtest.taker_commission_perc": {
      "type": "number",
      "finite": true,
      "minimum": 0,
      "maximum": 1,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "type": "number",
        "value": "0.05"
      }
    },
    "backtest.tp_perc": {
      "type": "number",
      "finite": true,
      "minimum": 0,
      "maximum": 50,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "type": "number",
        "value": "0.5"
      }
    },
    "backtest.sl_perc": {
      "type": "number",
      "finite": true,
      "minimum": 0,
      "maximum": 50,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "type": "number",
        "value": "0"
      }
    },
    "backtest.in_count": {
      "type": "integer",
      "finite": true,
      "minimum": 0,
      "maximum": 50,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "1",
        "type": "number",
        "value": "10"
      },
      "normalized_input": "Exact JSON integer for predictable UI transfer; no silent rounding or server-coercion claim."
    },
    "backtest.close_by_signal_only_profit_perc": {
      "type": "number",
      "finite": true,
      "minimum": -1,
      "maximum": 10,
      "minimum_inclusive": true,
      "maximum_inclusive": false,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "type": "number",
        "value": "-1"
      }
    },
    "backtest.in_step_perc": {
      "type": "number",
      "finite": true,
      "minimum": 0.1,
      "maximum": 10,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "type": "number",
        "value": "1"
      },
      "applies_when": {
        "field_id": "backtest.in_count",
        "operator": "not_equal",
        "value": 0
      },
      "otherwise": "Finite number; the inspected source skips this range check when no additional orders are requested."
    },
    "backtest.in_dynamic_step": {
      "type": "number",
      "finite": true,
      "minimum": 0,
      "maximum": 10,
      "minimum_inclusive": false,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "type": "number",
        "value": "1"
      },
      "applies_when": {
        "field_id": "backtest.in_count",
        "operator": "not_equal",
        "value": 0
      },
      "otherwise": "Finite number; the inspected source skips this range check when no additional orders are requested."
    },
    "backtest.in_martin_gale": {
      "type": "number",
      "finite": true,
      "minimum": 0.5,
      "maximum": 10,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "type": "number",
        "value": "1"
      },
      "applies_when": {
        "field_id": "backtest.in_count",
        "operator": "not_equal",
        "value": 0
      },
      "otherwise": "Finite number; the inspected source skips this range check when no additional orders are requested."
    },
    "backtest.stop_be_trigger_pct": {
      "type": "number",
      "finite": true,
      "minimum": 0,
      "maximum": null,
      "minimum_inclusive": false,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "min": "0",
        "type": "number",
        "value": ""
      },
      "applies_when": {
        "field_id": "profile.stop_be_enabled",
        "operator": "equal",
        "value": true
      },
      "availability": {
        "exchange": "BYBIT",
        "hedge_enabled": false
      }
    },
    "backtest.stop_be_val_pct": {
      "type": "number",
      "finite": true,
      "minimum": 0,
      "maximum": null,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "bounds_status": "source_observed",
      "server_step": {
        "status": "no_explicit_step",
        "value": null
      },
      "ui_input": {
        "step": "0.01",
        "min": "0",
        "type": "number",
        "value": ""
      },
      "applies_when": {
        "field_id": "profile.stop_be_enabled",
        "operator": "equal",
        "value": true
      },
      "cross_field": {
        "operator": "lt",
        "right_field_id": "backtest.stop_be_trigger_pct"
      },
      "availability": {
        "exchange": "BYBIT",
        "hedge_enabled": false
      }
    }
  },
  "date_rule": "Use complete local wall-clock minutes. Start must not follow end. Confirm displayed dates and available history in the panel.",
  "ui_step_policy": "HTML input steps describe UI controls. They are not additional server modulo constraints; the adapter does not silently round values.",
  "remaining_runtime_checks": [
    "Symbol availability and historical-data coverage.",
    "The selected symbol/account can impose a lower leverage limit.",
    "Price/quantity ticks, minimum notional, margin, fees and order validity depend on the selected instrument and mode.",
    "Source-observed bounds are not proof of the deployed backend revision or successful calculation."
  ]
}
```

## Strategy card schema

```json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "format",
    "knowledge_version",
    "id",
    "title",
    "intent",
    "context_id",
    "status",
    "classification",
    "settings",
    "conditions",
    "checks",
    "unresolved",
    "sources",
    "execution",
    "knowledge_policy"
  ],
  "properties": {
    "format": {
      "const": "itb.strategy-card/0.5.0"
    },
    "knowledge_version": {
      "const": "0.5.0"
    },
    "id": {
      "type": "string",
      "minLength": 1
    },
    "title": {
      "type": "string",
      "minLength": 1
    },
    "intent": {
      "type": "string",
      "minLength": 1
    },
    "context_id": {
      "type": "string",
      "minLength": 1
    },
    "status": {
      "enum": [
        "needs_input",
        "complete_example",
        "complete_proposal"
      ]
    },
    "classification": {
      "enum": [
        "educational_example",
        "user_draft"
      ]
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/field"
      },
      "minItems": 1
    },
    "symbols": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 40
      },
      "minItems": 2,
      "maxItems": 600,
      "uniqueItems": true,
      "description": "A pair list exists only for a test over several pairs. One pair is an ordinary single-pair card: omit symbols entirely and set profile.multi_enabled to false."
    },
    "conditions": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/condition"
      },
      "minItems": 0
    },
    "checks": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "schema_observation_id",
        "history_verified",
        "backend_timezone_verified",
        "deployed_engine_verified"
      ],
      "properties": {
        "schema_observation_id": {
          "type": "string",
          "minLength": 1
        },
        "history_verified": {
          "const": false
        },
        "backend_timezone_verified": {
          "const": false
        },
        "deployed_engine_verified": {
          "const": false
        }
      }
    },
    "unresolved": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "minItems": 0
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "minItems": 1
    },
    "execution": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "backtest_executed",
        "live_trade_executed",
        "results"
      ],
      "properties": {
        "backtest_executed": {
          "const": false
        },
        "live_trade_executed": {
          "const": false
        },
        "results": {
          "type": "null"
        }
      }
    },
    "knowledge_policy": {
      "const": "itb-only/1"
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "status": {
            "const": "complete_example"
          }
        }
      },
      "then": {
        "properties": {
          "classification": {
            "const": "educational_example"
          },
          "settings": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "not": {
                    "type": "null"
                  }
                },
                "origin": {
                  "not": {
                    "const": "unknown"
                  }
                }
              }
            }
          },
          "conditions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "fields": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "not": {
                          "type": "null"
                        }
                      },
                      "origin": {
                        "not": {
                          "const": "unknown"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "status": {
            "const": "complete_proposal"
          }
        }
      },
      "then": {
        "properties": {
          "classification": {
            "const": "user_draft"
          },
          "settings": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "not": {
                    "type": "null"
                  }
                },
                "origin": {
                  "not": {
                    "const": "unknown"
                  }
                }
              },
              "allOf": [
                {
                  "if": {
                    "properties": {
                      "field_id": {
                        "enum": [
                          "backtest.symbol",
                          "backtest.start_dt",
                          "backtest.end_dt",
                          "backtest.initial_quote_qty",
                          "backtest.first_order",
                          "backtest.leverage"
                        ]
                      }
                    }
                  },
                  "then": {
                    "properties": {
                      "origin": {
                        "const": "user"
                      }
                    }
                  }
                }
              ]
            }
          },
          "conditions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "fields": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "not": {
                          "type": "null"
                        }
                      },
                      "origin": {
                        "not": {
                          "const": "unknown"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "urn:itb:knowledge:strategy-card:0.5.0",
  "title": "ITradingBot corpus-only card: educational example or user proposal; no execution",
  "definitions": {
    "field": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "field_id",
        "value",
        "origin",
        "note"
      ],
      "properties": {
        "field_id": {
          "type": "string",
          "minLength": 1
        },
        "value": {
          "type": [
            "string",
            "number",
            "boolean",
            "null"
          ]
        },
        "origin": {
          "enum": [
            "user",
            "illustrative",
            "derived",
            "schema_default",
            "unknown",
            "agent_choice"
          ]
        },
        "note": {
          "type": "string"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "origin": {
                "const": "unknown"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "type": "null"
              },
              "note": {
                "type": "string",
                "minLength": 1
              }
            }
          },
          "else": {
            "properties": {
              "value": {
                "not": {
                  "type": "null"
                }
              }
            }
          }
        }
      ]
    },
    "condition": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "definition_id",
        "role",
        "fields",
        "explanation"
      ],
      "properties": {
        "definition_id": {
          "type": "string",
          "minLength": 1
        },
        "role": {
          "enum": [
            "entry",
            "filter",
            "exit"
          ]
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/field"
          },
          "minItems": 1
        },
        "explanation": {
          "type": "string",
          "minLength": 1
        }
      }
    }
  }
}
```

## The wording of the backtest page itself

The captions, buttons and hint sentences of the backtest page, in the same two languages. None of this is needed to build a card; use it when you write *about* the form, so your wording is the wording on the user's screen.

```json
{
  "note": "Everything else the backtest page itself prints: section captions, buttons, hints and the sentences under the fields. Keyed by the English text, same two languages. Use it when you write about the form in the user's language, so your wording is the wording on their screen.",
  "strings": {
    "% of liquidation from average entry point:": {
      "ru": "% от ликв. от ср. точки входа:",
      "uk": "% від лікв. від середньої точки входу:"
    },
    "1 year": {
      "ru": "1 год",
      "uk": "1 рік"
    },
    "24h Volume": {
      "ru": "Объем 24ч",
      "uk": "Обсяг за 24 год"
    },
    "3 months": {
      "ru": "3 месяца",
      "uk": "3 місяці"
    },
    "6 months": {
      "ru": "6 месяцев",
      "uk": "6 місяців"
    },
    "Confirm": {
      "ru": "Подтвердить",
      "uk": "Підтвердити"
    },
    "I have read and accept the terms of use for presets.": {
      "ru": "Ознакомился и принимаю условия использования пресетов.",
      "uk": "Ознайомився і приймаю умови використання пресетів."
    },
    "Access": {
      "ru": "Доступ",
      "uk": "Доступ"
    },
    "Active on exchange more days.": {
      "ru": "Актив находится на бирже дольше указанного количества дней.",
      "uk": "Актив перебуває на біржі довше зазначеної кількості днів."
    },
    "Asset List": {
      "ru": "Список активов",
      "uk": "Список активів"
    },
    "Add": {
      "ru": "Добавить",
      "uk": "Додати"
    },
    "Add level": {
      "ru": "Добавить уровень",
      "uk": "Додати рівень"
    },
    "Add preset": {
      "ru": "Добавить пресет",
      "uk": "Додати пресет"
    },
    "Add as a Single List": {
      "ru": "Добавить одним списком",
      "uk": "Додати одним списком"
    },
    "Add a list of coins": {
      "ru": "Добавить список монет",
      "uk": "Додати список монет"
    },
    "Adjustable range parameters": {
      "ru": "Параметры настраиваемых диапазонов",
      "uk": "Параметри налаштовуваних діапазонів"
    },
    "All": {
      "ru": "Все",
      "uk": "Всі"
    },
    "allowed leverage for the asset": {
      "ru": "допустимые кредитные плечи для актива",
      "uk": "допустимі кредитні плечі для активу"
    },
    "Apply": {
      "ru": "Применить",
      "uk": "Застосувати"
    },
    "Archive": {
      "ru": "Архив",
      "uk": "Архів"
    },
    "Are you sure?": {
      "ru": "Вы уверены?",
      "uk": "Ви впевнені?"
    },
    "Average admission price:": {
      "ru": "Средняя цена входа:",
      "uk": "Середня ціна входу:"
    },
    "Avg profit": {
      "ru": "Средний профит",
      "uk": "Середній профіт"
    },
    "Avg trade": {
      "ru": "Ср. сделка",
      "uk": "Сер. угода"
    },
    "Back": {
      "ru": "Назад",
      "uk": "Назад"
    },
    "Backtest History": {
      "ru": "История бэктеста",
      "uk": "Історія бектесту"
    },
    "Backtest Results": {
      "ru": "Результаты бэктеста",
      "uk": "Результати бектесту"
    },
    "The mobile version is under development": {
      "ru": "Мобильная версия в разработке",
      "uk": "Мобільна версія в розробці"
    },
    "Backtester is available only in the web version": {
      "ru": "Бэктестер доступен только в web-версии",
      "uk": "Бектестер доступний лише у web-версії"
    },
    "Backtester": {
      "ru": "Бэктестер",
      "uk": "Бектестер"
    },
    "Best": {
      "ru": "Лучший",
      "uk": "Найкращий"
    },
    "SM in break-even for part of hedge, %": {
      "ru": "СМ в Б/У для части хеджа, %",
      "uk": "СМ в Б/У для частини хеджу, %"
    },
    "CO count": {
      "ru": "Кол-во СО",
      "uk": "К-сть СО"
    },
    "Calc time, from": {
      "ru": "Время расчета, от",
      "uk": "Час розрахунку, від"
    },
    "Calc time, to": {
      "ru": "Время расчета, до",
      "uk": "Час розрахунку, до"
    },
    "Calculate": {
      "ru": "Рассчитать",
      "uk": "Розрахувати"
    },
    "Cancel": {
      "ru": "Отменить",
      "uk": "Скасувати"
    },
    "Category Name": {
      "ru": "Название категории",
      "uk": "Назва категорії"
    },
    "Chart": {
      "ru": "График",
      "uk": "Графік"
    },
    "Clear": {
      "ru": "Очистить",
      "uk": "Очистити"
    },
    "Close price": {
      "ru": "Цена закрытия",
      "uk": "Ціна закриття"
    },
    "Close reason": {
      "ru": "Причина закрытия",
      "uk": "Причина закриття"
    },
    "Close time": {
      "ru": "Время закрытия",
      "uk": "Час закриття"
    },
    "Closed by SM": {
      "ru": "Закрыто по СМ",
      "uk": "Закрито по СМ"
    },
    "By SM": {
      "ru": "Закр. по СМ",
      "uk": "Закр. по СМ"
    },
    "Closed by signal": {
      "ru": "Закрыто по сигналу",
      "uk": "Закрито по сигналу"
    },
    "By signal": {
      "ru": "Закр. по сигн.",
      "uk": "Закр. по сигн."
    },
    "Closing the position at a loss; the percentage is specified from the first order.": {
      "ru": "Закрытие позиции в убыток; процент указывается от первого ордера.",
      "uk": "Закриття позиції в збиток; відсоток вказується від першого ордера."
    },
    "Coefficient for increasing the distance between each safety order.": {
      "ru": "Коэффициент увеличения расстояния между каждым страховочным ордером.",
      "uk": "Коефіцієнт збільшення відстані між кожним страховочним ордером."
    },
    "Coefficient for increasing the volume of each safety order.": {
      "ru": "Коэффициент увеличения объёма каждого страховочного ордера.",
      "uk": "Коефіцієнт збільшення обсягу кожного страховочного ордера."
    },
    "The conditions under which the exchange allows trading a given asset.": {
      "ru": "Условия по которому позволяет работать биржа по заданному активу.",
      "uk": "Умови, за якими біржа дозволяє працювати з обраним активом."
    },
    "Copy Link": {
      "ru": "Скопировать ссылку",
      "uk": "Скопіювати посилання"
    },
    "Copy symbols": {
      "ru": "Копировать символы",
      "uk": "Копіювати символи"
    },
    "Create task": {
      "ru": "Создать задачу",
      "uk": "Створити завдання"
    },
    "DD avg, %": {
      "ru": "Просад. от ср., %",
      "uk": "Просад. від сер., %"
    },
    "DD entry, %": {
      "ru": "Просад. от вх., %",
      "uk": "Просад. від вх., %"
    },
    "DD from average": {
      "ru": "Просад. от средн.",
      "uk": "Просад. від серед."
    },
    "DD from entry": {
      "ru": "Просад. от входа",
      "uk": "Просад. від входу"
    },
    "Date": {
      "ru": "Дата",
      "uk": "Дата"
    },
    "Avg entry": {
      "ru": "Ср. вход",
      "uk": "Сер. вхід"
    },
    "Close ind.": {
      "ru": "Индик. закр.",
      "uk": "Індик. закр."
    },
    "Closed": {
      "ru": "Закрытие",
      "uk": "Закриття"
    },
    "Drawdown from avg, %": {
      "ru": "Просад. от средн., %",
      "uk": "Просад. від серед., %"
    },
    "DD, %": {
      "ru": "Просад., %",
      "uk": "Просад., %"
    },
    "Dur.": {
      "ru": "Длит.",
      "uk": "Трив."
    },
    "Fee": {
      "ru": "Комис.",
      "uk": "Коміс."
    },
    "Open price": {
      "ru": "Цена откр.",
      "uk": "Ціна відкр."
    },
    "Opened": {
      "ru": "Открытие",
      "uk": "Відкриття"
    },
    "Volumes (PO+SO)": {
      "ru": "Объёмы (ПО+СО)",
      "uk": "Обсяги (ПО+СО)"
    },
    "Delete preset": {
      "ru": "Удалить пресет",
      "uk": "Видалити пресет"
    },
    "Deposit change": {
      "ru": "Изменение депозита",
      "uk": "Зміна депозиту"
    },
    "Distance in percentage between each safety order.": {
      "ru": "Расстояние в процентах между каждым страховочным ордером.",
      "uk": "Відстань у відсотках між кожним страховочним ордером."
    },
    "Confirm deletion of indicator/filter?": {
      "ru": "Подтверждаете удаление индикатора/фильтра?",
      "uk": "Підтверджуєте видалення індикатора/фільтра?"
    },
    "Do you confirm the deletion of the strategy from the archive?": {
      "ru": "Подтверждаете удаление стратегии из архива?",
      "uk": "Підтверджуєте видалення стратегії з архіву?"
    },
    "Download CSV": {
      "ru": "Скачать CSV",
      "uk": "Завантажити CSV"
    },
    "Download summary": {
      "ru": "Скачать сводку",
      "uk": "Завантажити зведення"
    },
    "Drawdown": {
      "ru": "Просадка",
      "uk": "Просадка"
    },
    "Loss in % from entry point": {
      "ru": "Просадка в % от ТВХ",
      "uk": "Просадка в % від ТВХ"
    },
    "Dyn. step": {
      "ru": "ДШСО",
      "uk": "ДШСО"
    },
    "End": {
      "ru": "Конец",
      "uk": "Кінець"
    },
    "English HTML code ": {
      "ru": "HTML-код (английский) ",
      "uk": "HTML-код (англійська) "
    },
    "Errors": {
      "ru": "Ошибки",
      "uk": "Помилки"
    },
    "Each asset on a new line": {
      "ru": "Каждый актив с новой строки",
      "uk": "Кожен актив з нового рядка"
    },
    "Exchange terms": {
      "ru": "Условия биржи",
      "uk": "Умови біржі"
    },
    "Exclude TRADIFI (traditional finance) pairs.": {
      "ru": "Исключить пары TRADIFI (традиционные финансы).",
      "uk": "Виключити пари TRADIFI (традиційні фінанси)."
    },
    "Exclude TRADIFI": {
      "ru": "Исключить TRADIFI",
      "uk": "Виключити TRADIFI"
    },
    "Output / Average": {
      "ru": "Выход / Усредн.",
      "uk": "Вихід / Усередн."
    },
    "Filters": {
      "ru": "Фильтры",
      "uk": "Фільтри"
    },
    "Filters & walk-forward": {
      "ru": "Фильтры и Walk-Forward",
      "uk": "Фільтри та Walk-Forward"
    },
    "First order": {
      "ru": "Первый ордер",
      "uk": "Перший ордер"
    },
    "Next": {
      "ru": "Вперед",
      "uk": "Вперед"
    },
    "From listing": {
      "ru": "С листинга",
      "uk": "З лістингу"
    },
    "Grid": {
      "ru": "Сетка",
      "uk": "Сітка"
    },
    "Grid Optimize": {
      "ru": "Запустить Grid Optimize",
      "uk": "Запустити Grid Optimize"
    },
    "Grid width": {
      "ru": "Ширина сетки",
      "uk": "Ширина сітки"
    },
    "Grid width %": {
      "ru": "Ширина сетки %",
      "uk": "Ширина сітки %"
    },
    "Grid optimizer settings": {
      "ru": "Настройки оптимизатора сетки",
      "uk": "Налаштування оптимізатора сітки"
    },
    "Hedge commission": {
      "ru": "Комиссия хеджа",
      "uk": "Комісія хеджа"
    },
    "Hedging levels": {
      "ru": "Уровни хеджирования",
      "uk": "Рівні хеджування"
    },
    "Hedge profit": {
      "ru": "Прибыль хеджа",
      "uk": "Прибуток хеджа"
    },
    "Hedge reserve, %": {
      "ru": "Запас хеджа, %",
      "uk": "Запас хеджу, %"
    },
    "Hedge robot settings (classic mode)": {
      "ru": "Настройки Хедж робота (классический режим)",
      "uk": "Налаштування Хедж робота (класичний режим)"
    },
    "A hedging mode based on gradually building up hedge volume from set levels of the opposite position. It uses safe zones that prevent instant re-opening of volume, places break-even stop-market orders for parts of the hedge, and a paired-closing mechanism for both positions.": {
      "ru": "Режим хеджирования, основанный на поэтапном наборе объёма хеджа от заданных уровней противоположной позиции. Используются сейф-зоны, предотвращающие моментальное переоткрытие объёма, установка стоп-маркетов в безубыток для частей хеджа, а также механизм парного закрытия обеих позиций.",
      "uk": "Режим хеджування, заснований на поетапному наборі обсягу хеджа від заданих рівнів протилежної позиції. Використовуються сейф-зони, що запобігають миттєвому перевідкриттю обсягу, встановлення стоп-маркетів у беззбиток для частин хеджа, а також механізм парного закриття обох позицій."
    },
    "Historical Trade Data": {
      "ru": "Исторические данные по сделкам",
      "uk": "Історичні дані по угодах"
    },
    "IMPORTANT:": {
      "ru": "ВАЖНО:",
      "uk": "ВАЖЛИВО:"
    },
    "Important:": {
      "ru": "Важно:",
      "uk": "Важливо:"
    },
    "are examples of strategies calculated based on historical data. They help to understand the logic of the robot's operation and its possible behavior on different assets, but they are not investment recommendations.": {
      "ru": "— это примеры стратегий, рассчитанные на основе исторических данных. Они помогают понять логику работы робота и возможное поведение на разных активах, но не являются инвестиционной рекомендацией.",
      "uk": "— це приклади стратегій, розрахованих на основі історичних даних. Вони допомагають зрозуміти логіку роботи робота і можливу поведінку на різних активах, але не є інвестиційною рекомендацією."
    },
    "The strategies in this section are based on the Momentum 2.0 indicator and can be applied to individual instruments as well as most assets on the market.": {
      "ru": "Стратегии в данном разделе основаны на индикаторе Импульс 2.0 и могут применяться как к отдельным инструментам, так и к большинству активов на рынке.",
      "uk": "Стратегії в даному розділі базуються на індикаторі Імпульс 2.0 і можуть застосовуватися як до окремих інструментів, так і до більшості активів на ринку."
    },
    "Strategies must be adapted to your deposit, MM/RM parameters, and trading logic.": {
      "ru": "Стратегии требуют обязательной адаптации под ваш депозит, параметры MM/RM и торговую логику.",
      "uk": "Стратегії вимагають обов'язкової адаптації під ваш депозит, параметри MM/RM і торгову логіку."
    },
    "To reduce risks, it is recommended to use available hedging tools and carefully check the settings before launch.": {
      "ru": "Для снижения рисков рекомендуется использовать доступные инструменты хеджирования и внимательно проверять настройки перед запуском.",
      "uk": "Для зниження ризиків рекомендується використовувати доступні інструменти хеджування та уважно перевіряти налаштування перед запуском."
    },
    "Indicators and filters for analyzing historical data": {
      "ru": "Индикаторы и фильтры для анализа исторических данных",
      "uk": "Індикатори та фільтри для аналізу історичних даних"
    },
    "Liquidation price from average entry point:": {
      "ru": "Цена ликв. от ср. точки входа:",
      "uk": "Ціна лікв. від серед. точки входу:"
    },
    "Liquidations": {
      "ru": "Ликвидации",
      "uk": "Ліквідації"
    },
    "Liquid.": {
      "ru": "Ликвид.",
      "uk": "Ліквід."
    },
    "Listing": {
      "ru": "Листинг",
      "uk": "Лістинг"
    },
    "Loading bars": {
      "ru": "Загрузка баров",
      "uk": "Завантаження барів"
    },
    "Loading…": {
      "ru": "Загрузка…",
      "uk": "Завантаження…"
    },
    "Entry": {
      "ru": "Вход",
      "uk": "Вхід"
    },
    "Exit": {
      "ru": "Выход",
      "uk": "Вихід"
    },
    "Max. number of active SMs": {
      "ru": "Макс. кол-во активных СМ",
      "uk": "Макс. кількість активних СМ"
    },
    "Max deposit DD %": {
      "ru": "Макс. просадка деп., %",
      "uk": "Макс. просадка деп., %"
    },
    "Max funds % of deposit": {
      "ru": "Макс. % депозита в сделке",
      "uk": "Макс. % депозиту в угоді"
    },
    "Max price DD %": {
      "ru": "Макс. просадка цены, %",
      "uk": "Макс. просадка ціни, %"
    },
    "Maximum allowable ticksize.": {
      "ru": "Максимально допустимый размер ticksize",
      "uk": "Максимально допустимый размер ticksize"
    },
    "Max trade": {
      "ru": "Макс. сделка",
      "uk": "Макс. угода"
    },
    "Max trade hours": {
      "ru": "Макс. часов в сделке",
      "uk": "Макс. годин у угоді"
    },
    "Unreal. DD": {
      "ru": "Нереал. просад.",
      "uk": "Нереаліз. просад."
    },
    "Maximum grid width in %": {
      "ru": "Максимальная ширина сетки в %",
      "uk": "Максимальна ширина сітки в %"
    },
    "Max. volume without CM": {
      "ru": "Макс. объем без СМ",
      "uk": "Макс. об'єм без СМ"
    },
    "Maximum tickSize": {
      "ru": "Максим. tickSize",
      "uk": "Максим. tickSize"
    },
    "Maximum allowable order volume for the asset": {
      "ru": "максимально допустимый объем актива для ордера",
      "uk": "максимально допустимий обсяг активу для ордера"
    },
    "Min profit": {
      "ru": "Мин. профит",
      "uk": "Мін. профіт"
    },
    "Min trades": {
      "ru": "Мин. кол-во сделок",
      "uk": "Мін. кількість угод"
    },
    "Min volume for 24h.": {
      "ru": "Минимальный торговый объём за последние 24 часа.",
      "uk": "Мінімальний торговий обсяг за останні 24 години."
    },
    "Minimum volume at a given leverage.": {
      "ru": "Минимальный объем на заданном плече.",
      "uk": "Мінімальний обсяг на заданому плечі."
    },
    "Minimum grid width in %": {
      "ru": "Минимальная ширина сетки в %",
      "uk": "Мінімальна ширина сітки в %"
    },
    "Min. volume without SM": {
      "ru": "Мин. объем без СМ",
      "uk": "Мін. обсяг без СМ"
    },
    "minimum allowable order volume for the asset": {
      "ru": "минимально допустимый объем актива для ордера",
      "uk": "мінімально допустимий обсяг активу для ордера"
    },
    "minimum allowable price change": {
      "ru": "минимальное допустимое изменение цены",
      "uk": "мінімальна допустима зміна ціни"
    },
    "Minimum order amount (price × quantity)": {
      "ru": "минимальная сумма ордера (цена × количество)",
      "uk": "мінімальна сума ордера (ціна × кількість)"
    },
    "minimum order size increment": {
      "ru": "минимальный шаг изменения объема ордера",
      "uk": "мінімальний шаг зміни обсягу ордера"
    },
    "Minimum position size": {
      "ru": "Минимальный объем позиции",
      "uk": "Мінімальний обсяг позиції"
    },
    "Money Management": {
      "ru": "Мани менеджмент",
      "uk": "Мані менеджмент"
    },
    "Month": {
      "ru": "Месяц",
      "uk": "Місяць"
    },
    "Monthly profit, %": {
      "ru": "Месячный профит, %",
      "uk": "Місячний прибуток, %"
    },
    "Monthly": {
      "ru": "Месячный",
      "uk": "Місячний"
    },
    "Monthly, %": {
      "ru": "Мес., %",
      "uk": "Міс., %"
    },
    "Multi-backtest results": {
      "ru": "Результаты мульти-бэктеста",
      "uk": "Результати мульти-бектесту"
    },
    "This mode runs a historical analysis of the chosen strategy across all selected assets at once.": {
      "ru": "Данный режим позволяет сделать исторический анализ заданной стратегии по всем выбранным активам одновременно.",
      "uk": "Цей режим дозволяє зробити історичний аналіз заданої стратегії за всіма вибраними активами одночасно."
    },
    "Multimode settings": {
      "ru": "Настройки мультирежима",
      "uk": "Налаштування мультирежиму"
    },
    "My Funds, %": {
      "ru": "Мои средства, %",
      "uk": "Мої кошти, %"
    },
    "My funds in the deal:": {
      "ru": "Мои средства в сделке:",
      "uk": "Мої кошти в угоді:"
    },
    "Name": {
      "ru": "Name",
      "uk": "Name"
    },
    "No": {
      "ru": "Нет",
      "uk": "Ні"
    },
    "Nothing found": {
      "ru": "Ничего не найдено",
      "uk": "Нічого не знайдено"
    },
    "Number of averaging orders in your risk management.": {
      "ru": "Количество усредняющих ордеров в вашем риск-менеджменте.",
      "uk": "Кількість усереднюючих ордерів у вашому ризик-менеджменті."
    },
    "Open Full Screen": {
      "ru": "Открыть на весь экран",
      "uk": "Відкрити на весь екран"
    },
    "Open time": {
      "ru": "Время открытия",
      "uk": "Час відкриття"
    },
    "Open, PNL": {
      "ru": "Откр., PNL",
      "uk": "Відкр., PNL"
    },
    "Order": {
      "ru": "Ордер",
      "uk": "Ордер"
    },
    "Per page": {
      "ru": "На странице",
      "uk": "На сторінці"
    },
    "Percentage of paired closing": {
      "ru": "Процент парного закрытия",
      "uk": "Відсоток парного закриття"
    },
    "Percentage from the average entry point for closing the position.": {
      "ru": "Процент от средней точки входа для закрытия позиции.",
      "uk": "Відсоток від середньої точки входу для закриття позиції."
    },
    "Percentage of signal ignoring for closing an active position. Works in conjunction with closing filters and signals.": {
      "ru": "Процент игнорирования сигнала для закрытия активной позиции. Работает совместно с фильтрами и сигналами закрытия.",
      "uk": "Відсоток ігнорування сигналу для закриття активної позиції. Працює спільно з фільтрами та сигналами закриття."
    },
    "PnL": {
      "ru": "PnL",
      "uk": "PnL"
    },
    "Presets": {
      "ru": "Пресеты",
      "uk": "Пресет"
    },
    "Price": {
      "ru": "Price",
      "uk": "Price"
    },
    "Disclaimer": {
      "ru": "Отказ от ответственности",
      "uk": "Відмова від відповідальності"
    },
    "Profit": {
      "ru": "Профит",
      "uk": "Прибуток"
    },
    "Profit USDT": {
      "ru": "Профит USDT",
      "uk": "Прибуток USDT"
    },
    "Profit, %": {
      "ru": "Профит, %",
      "uk": "Профіт, %"
    },
    "Profit, USDT": {
      "ru": "Профит, USDT",
      "uk": "Прибуток, USDT"
    },
    "Qty": {
      "ru": "Кол-во",
      "uk": "К-сть"
    },
    "Reload": {
      "ru": "Перезагрузить",
      "uk": "Перезавантажити"
    },
    "Reset": {
      "ru": "Сбросить",
      "uk": "Скинути"
    },
    "Take profit on the main position": {
      "ru": "Снимать тейк-профит основной позиции",
      "uk": "Знімати тейк-профіт основної позиції"
    },
    "Risk Management": {
      "ru": "Риск менеджмент",
      "uk": "Ризик-менеджмент"
    },
    "Russian HTML code ": {
      "ru": "HTML-код (русский) ",
      "uk": "HTML-код (російська) "
    },
    "SL rotations": {
      "ru": "Ротации стопа",
      "uk": "Ротації стопу"
    },
    "Safe zone toward hedge, %": {
      "ru": "Safe-зона к хеджу, %",
      "uk": "Safe-зона до хеджу, %"
    },
    "Safe zone toward main, %": {
      "ru": "Safe-зона к main, %",
      "uk": "Safe-зона до main, %"
    },
    "Search": {
      "ru": "Поиск",
      "uk": "Пошук"
    },
    "Search...": {
      "ru": "Поиск...",
      "uk": "Пошук..."
    },
    "Select an exchange to get the list of required assets.": {
      "ru": "Выберите биржу для получения списка нужных активов.",
      "uk": "Оберіть біржу для отримання списку потрібних активів."
    },
    "Select the asset for which historical data analysis will be performed.": {
      "ru": "Выберите актив, по которому будет производиться анализ исторических данных.",
      "uk": "Оберіть актив, за яким буде проводитися аналіз історичних даних."
    },
    "Select the leverage for the specified asset.": {
      "ru": "Выберите кредитное плечо для заданного актива.",
      "uk": "Оберіть кредитне плече для заданого активу."
    },
    "Select what will happen with the profit from your trading strategy.": {
      "ru": "Выберите, что будет происходить с профитом вашей торговой стратегии.",
      "uk": "Оберіть, що буде відбуватися з прибутком вашої торгової стратегії."
    },
    "Select All": {
      "ru": "Выбрать все",
      "uk": "Вибрати все"
    },
    "Settings": {
      "ru": "Настройки",
      "uk": "Налаштування"
    },
    "Task builder with limit orders": {
      "ru": "Конструктор задачи с выставлением лимитных ордеров",
      "uk": "Конструктор завдань з виставленням лімітних ордерів"
    },
    "Spot": {
      "ru": "Спот",
      "uk": "Спот"
    },
    "Start": {
      "ru": "Начало",
      "uk": "Початок"
    },
    "Status": {
      "ru": "Статус",
      "uk": "Статус"
    },
    "SO step": {
      "ru": "ШСО",
      "uk": "ШСО"
    },
    "Stop limit": {
      "ru": "Стоп лимит",
      "uk": "Стоп ліміт"
    },
    "Strategy": {
      "ru": "Стратегия",
      "uk": "Стратегія"
    },
    "Strategy description": {
      "ru": "Описание стратегии",
      "uk": "Опис стратегії"
    },
    "Successful": {
      "ru": "Успешно",
      "uk": "Успішно"
    },
    "Sum profit": {
      "ru": "Сумма профита",
      "uk": "Сума профіту"
    },
    "Assets": {
      "ru": "Активы",
      "uk": "Активи"
    },
    "Take profit": {
      "ru": "Тейк профит",
      "uk": "Тейк профіт"
    },
    "The amount of funds in your trading account.": {
      "ru": "Количество средств на вашем торговом аккаунте.",
      "uk": "Кількість коштів на вашому торговому акаунті."
    },
    "The date from which the historical data analysis will begin.": {
      "ru": "Дата, с которой начнётся анализ исторических данных.",
      "uk": "Дата, з якої розпочнеться аналіз історичних даних."
    },
    "The end date for the historical data analysis.": {
      "ru": "Дата окончания анализа исторических данных.",
      "uk": "Дата завершення аналізу історичних даних."
    },
    "The mode of working with position averaging.": {
      "ru": "Режим работы с усреднениями позиции.",
      "uk": "Режим роботи з усередненнями позиції."
    },
    "The percentage that will be withheld by the exchange for each limit order executed.": {
      "ru": "Процент, который будет удержан биржей при исполнении каждого лимитного ордера.",
      "uk": "Відсоток, який буде утриманий біржею при виконанні кожного лімітного ордера."
    },
    "The percentage that will be withheld by the exchange for each market order executed.": {
      "ru": "Процент, который будет удержан биржей при исполнении каждого рыночного ордера.",
      "uk": "Відсоток, який буде утриманий біржею при виконанні кожного ринкового ордера."
    },
    "The presets presented below": {
      "ru": "Представленные ниже пресеты",
      "uk": "Представлені нижче пресети"
    },
    "The volume of the first order in stablecoin, which will be used to calculate your risk management.": {
      "ru": "Объём первого ордера в стейблкоине, от которого будет рассчитываться ваш риск-менеджмент.",
      "uk": "Обсяг першого ордеру в стейблкоїні, від якого буде розраховуватися ваш ризик-менеджмент."
    },
    "Total": {
      "ru": "Общий",
      "uk": "Загальний"
    },
    "All of my backtests": {
      "ru": "Всего моих бэктестов",
      "uk": "Всього моїх бектестів"
    },
    "Total of my backtests per day": {
      "ru": "Всего моих бэктестов за сутки",
      "uk": "Всього моїх бектестів за добу"
    },
    "Trades": {
      "ru": "Сделки",
      "uk": "Угоди"
    },
    "Trigger set. SM, %": {
      "ru": "Триггер выставл. СМ, %",
      "uk": "Тригер виставлений. СМ, %"
    },
    "Ukranian HTML code ": {
      "ru": "HTML-код (украинский) ",
      "uk": "HTML-код (українська) "
    },
    "The strategies in this section are based on the volatility indicator and can be applied to both individual instruments and most assets on the market.": {
      "ru": "Стратегии в данном разделе основаны на индикаторе волатильности и могут применяться как к отдельным инструментам, так и к большинству активов на рынке.",
      "uk": "Стратегії в даному розділі базуються на індикаторі волатильності і можуть застосовуватися як до окремих інструментів, так і до більшості активів на ринку."
    },
    "User ID": {
      "ru": "ID пользователя",
      "uk": "ID користувача"
    },
    "Volume Leverage": {
      "ru": "Объем Leverage",
      "uk": "Обсяг Leverage"
    },
    "Volume for opening other hedge position.": {
      "ru": "Объём средств, который нужно оставить для открытия противоположной хеджирующей позиции.",
      "uk": "Обсяг коштів, який потрібно залишити для відкриття протилежної хеджуючої позиції."
    },
    "Volume from main position, %": {
      "ru": "Объем от основной позы, %",
      "uk": "Об'єм від основної пози, %"
    },
    "WF segments": {
      "ru": "Сегментов WF",
      "uk": "Сегментів WF"
    },
    "Week": {
      "ru": "Неделя",
      "uk": "Тиждень"
    },
    "Yes": {
      "ru": "Да",
      "uk": "Так"
    },
    "available": {
      "ru": "доступных",
      "uk": "доступних"
    },
    "Serves to analyse your strategies on the exchange's historical data and shows how a strategy would have behaved in the past: return, drawdown and risk level.": {
      "ru": "Служит для анализа ваших стратегий на исторических данных биржи и показывает, как она вела бы себя в прошлом: доходность, просадку и уровень риска.",
      "uk": "Слугує для аналізу ваших стратегій на історичних даних біржі та показує, як вона поводилася б у минулому: дохідність, просадку й рівень ризику."
    },
    "Backtesting on historical data is for information only and is not a recommendation. Past results do not guarantee future returns.": {
      "ru": "Расчёт на исторических данных носит ознакомительный характер и не является рекомендацией. Прошлые результаты не гарантируют доходности в будущем.",
      "uk": "Розрахунок на історичних даних має ознайомчий характер і не є рекомендацією. Минулі результати не гарантують дохідності в майбутньому."
    },
    "Accelerated calculation is available only to VIP users": {
      "ru": "Ускоренный расчет доступен только для VIP-пользователей",
      "uk": "Прискорений розрахунок доступний лише для VIP-користувачів"
    },
    "The share of the deposit for one position as a whole — the grid and the hedge reserve together. Calculated from the Deposit field of the Money Management card. It only selects assets and does not affect the backtest itself.": {
      "ru": "Доля депозита на одну позицию целиком — сетка и запас под хедж вместе. Считается от поля «Депозит» карточки «Мани менеджмент». Отбирает активы, на сам расчёт не влияет.",
      "uk": "Частка депозиту на одну позицію цілком — сітка та запас під хедж разом. Рахується від поля «Депозит» картки «Мані менеджмент». Відбирає активи, на сам розрахунок не впливає."
    },
    "Select assets that, together with the hedge reserve, fit into the given share of the form deposit.": {
      "ru": "Отбирать активы, которые вместе с запасом под хедж укладываются в заданную долю депозита из формы.",
      "uk": "Відбирати активи, які разом із запасом під хедж уміщаються в задану частку депозиту з форми."
    },
    "Keep only assets that trade on the Binance spot market. The check uses the Binance spot list regardless of the exchange selected in Settings. Enabled together with the Bybit check, an asset must be on the spot market of both exchanges.": {
      "ru": "Оставить только те активы, которые торгуются на спотовом рынке Binance. Проверка идёт по списку спота Binance независимо от того, какая биржа выбрана в «Настройках». Включённая вместе с проверкой Bybit — актив обязан быть на споте обеих бирж.",
      "uk": "Залишити лише ті активи, які торгуються на спотовому ринку Binance. Перевірка йде за списком споту Binance незалежно від того, яку біржу обрано в «Налаштуваннях». Увімкнена разом із перевіркою Bybit — актив має бути на споті обох бірж."
    },
    "Keep only assets that trade on the Bybit spot market. The check uses the Bybit spot list regardless of the exchange selected in Settings, so a futures asset can be backed by spot availability on a specific exchange.": {
      "ru": "Оставить только те активы, которые торгуются на спотовом рынке Bybit. Проверка идёт по списку спота Bybit независимо от того, какая биржа выбрана в «Настройках»: так фьючерсный актив можно подстраховать наличием спота на конкретной бирже.",
      "uk": "Залишити лише ті активи, які торгуються на спотовому ринку Bybit. Перевірка йде за списком споту Bybit незалежно від того, яку біржу обрано в «Налаштуваннях»: так ф'ючерсний актив можна підстрахувати наявністю споту на конкретній біржі."
    },
    "off": {
      "ru": "выкл",
      "uk": "вимк"
    },
    " — safety order count range": {
      "ru": " — диапазон количества страховочных ордеров",
      "uk": " — діапазон кількості страхувальних ордерів"
    },
    " — Dynamic step range": {
      "ru": " — диапазон динамического шага",
      "uk": " — діапазон динамічного кроку"
    },
    " — first order size range": {
      "ru": " — диапазон размера первого ордера",
      "uk": " — діапазон розміру першого ордера"
    },
    " — martingale multiplier range": {
      "ru": " — диапазон множителя мартингейла",
      "uk": " — діапазон множника мартингейла"
    },
    " — SL range, from entry price": {
      "ru": " — диапазон СЛ, от цены входа",
      "uk": " — діапазон СЛ, від ціни входу"
    },
    " — safety order step range": {
      "ru": " — диапазон шага страховочных ордеров",
      "uk": " — діапазон кроку страхувальних ордерів"
    },
    " — take-profit range": {
      "ru": " — диапазон выставляемого тейк-профита",
      "uk": " — діапазон тейк-профіту, що виставляється"
    },
    "Maximum value": {
      "ru": "Максимальное значение",
      "uk": "Максимальне значення"
    },
    "Minimum value": {
      "ru": "Минимальное значение",
      "uk": "Мінімальне значення"
    },
    "Range step": {
      "ru": "Шаг диапазона",
      "uk": "Крок діапазону"
    },
    "Available only for VIP users. Sweeps a 4D grid of DCA parameters (Step / Dyn step / CO count / Martingale) on cloud GPU and returns the top variations sorted by profit.": {
      "ru": "Доступно только для VIP. Перебирает 4D-сетку параметров DCA (Шаг / Дин. шаг / Кол-во СО / Мартингейл) на облачном GPU и возвращает лучшие варианты по прибыли.",
      "uk": "Доступно лише для VIP. Перебирає 4D-сітку параметрів DCA (Крок / Дин. крок / К-сть СО / Мартингейл) на хмарному GPU та повертає кращі варіанти за прибутком."
    },
    "h": {
      "ru": "ч",
      "uk": "год"
    },
    "maxQty": {
      "ru": "maxQty",
      "uk": "maxQty"
    },
    "minQty": {
      "ru": "minQty",
      "uk": "minQty"
    },
    "minValue": {
      "ru": "minValue",
      "uk": "minValue"
    },
    "description": {
      "ru": "описание",
      "uk": "опис"
    },
    "of calculation": {
      "ru": "расчета",
      "uk": "розрахунку"
    },
    "The strategies (presets) presented are not investment recommendations, financial advice, or an offer. Their use may result in partial or total loss of capital.": {
      "ru": "Представленные стратегии (пресеты) не являются инвестиционными рекомендациями, финансовым советом или офертой. Их использование может привести к частичной или полной потере капитала.",
      "uk": "Представлені стратегії (пресети) не є інвестиційними рекомендаціями, фінансовою порадою або офертою. Їх використання може призвести до часткової або повної втрати капіталу."
    },
    "The strategies are based on historical data analysis and are intended solely for informational and educational purposes. Past performance is not indicative of future results.": {
      "ru": "Стратегии основаны на анализе исторических данных и предназначены исключительно для ознакомительных и информационных целей. Прошлые результаты не гарантируют будущей доходности.",
      "uk": "Стратегії базуються на аналізі історичних даних і призначені виключно для ознайомчих та інформаційних цілей. Минулі результати не гарантують майбутньої прибутковості."
    },
    "The user bears full responsibility for all decisions made and possible financial consequences.": {
      "ru": "Пользователь несёт полную ответственность за все принимаемые решения и возможные финансовые последствия.",
      "uk": "Користувач несе повну відповідальність за всі прийняті рішення та можливі фінансові наслідки."
    },
    "Max": {
      "ru": "Макс",
      "uk": "Макс"
    },
    "Min": {
      "ru": "Мин",
      "uk": "Мін"
    },
    "Step": {
      "ru": "Шаг",
      "uk": "Крок"
    },
    "Use my deposit": {
      "ru": "Учитывать депозит",
      "uk": "Враховувати депозит"
    },
    "Fullscreen": {
      "ru": "На весь экран",
      "uk": "На весь екран"
    },
    "stepSize": {
      "ru": "stepSize",
      "uk": "stepSize"
    },
    "No task is created: the bot form opens with the values prefilled — check them and create the task yourself.": {
      "ru": "Задача не создаётся: откроется форма робота с подставленными значениями — проверьте их и создайте задачу сами.",
      "uk": "Задача не створюється: відкриється форма робота з підставленими значеннями — перевірте їх і створіть задачу самі."
    },
    "Export": {
      "ru": "Экспортировать",
      "uk": "Експортувати"
    },
    "Select the bot to move this strategy to": {
      "ru": "Выберите робота, в которого перенести стратегию",
      "uk": "Оберіть робота, у якого перенести стратегію"
    },
    "Export to bot": {
      "ru": "Экспорт в робота",
      "uk": "Експорт у робота"
    },
    "tickSize": {
      "ru": "tickSize",
      "uk": "tickSize"
    },
    "200x faster calculation speed (VIP)": {
      "ru": "х200 к скорости расчета (VIP)",
      "uk": "х200 до швидкості розрахунку (VIP)"
    },
    "A protective stop that moves the position to break-even. It is measured from the CURRENT average position price, unlike Stop Limit, which is measured from the first order. After every averaging the average price changes and the stop is recalculated.": {
      "ru": "Защитный стоп, переводящий позицию в безубыток. Отсчитывается от ТЕКУЩЕЙ средней цены позиции — в отличие от «Стоп лимита», который считается от первого ордера. После каждого усреднения средняя цена меняется, и стоп пересчитывается.",
      "uk": "Захисний стоп, що переводить позицію в беззбиток. Відлічується від ПОТОЧНОЇ середньої ціни позиції — на відміну від «Стоп ліміту», який рахується від першого ордера. Після кожного усереднення середня ціна змінюється, і стоп перераховується."
    },
    "Not available together with the hedge robot": {
      "ru": "Недоступно вместе с хедж-роботом",
      "uk": "Недоступно разом із хедж-роботом"
    },
    "Available only for Bybit exchange robots. Switch the exchange to BYBIT to backtest a strategy with the break-even stop.": {
      "ru": "Доступно только биржевым Bybit-роботам. Выберите биржу BYBIT, чтобы рассчитать стратегию со стопом в безубыток.",
      "uk": "Доступно лише біржовим Bybit-роботам. Оберіть біржу BYBIT, щоб розрахувати стратегію зі стопом у беззбиток."
    },
    "Break-even stop is fixed (not swept):": {
      "ru": "Стоп в безубыток зафиксирован (перебора по нему нет):",
      "uk": "Стоп у беззбиток зафіксовано (перебору за ним немає):"
    },
    "Closed by break-even stop": {
      "ru": "Закрыто по стопу БУ",
      "uk": "Закрито стопом БЗ"
    },
    "The break-even stop was not applied to this run": {
      "ru": "Стоп в безубыток к этому прогону не применялся",
      "uk": "Стоп у беззбиток до цього прогону не застосовувався"
    }
  }
}
```
