Нормативные ИИ-инструкции, recipes по моделям и детерминированная сборка StrategySpec → plan-*.cfg.
ManualCFGTesterSupport
Для пользователя
Промпт для ИИ
Скопируйте и отправьте этот промпт ИИ — всё необходимое уже включено.
Открой https://hinn.in/ru/lazy-trader/cfg-flow и используй эту страницу как единственный источник правил и формата Lazy Trader.
Создай универсальный, логически обоснованный торговый план:
— по умолчанию выбери одну уникальную модель;
— подбери для неё независимый Direction и одно-два независимых условия Start After;
— не привязывай стратегию к символу или брокеру;
— не дублируй одно семейство сигналов в Direction и Start After.
Выполни все блоки «ИИ-ИНСТРУКЦИЯ» и соблюдай машиночитаемый контракт на странице. Сначала сформируй StrategySpec, затем проверь его встроенным компилятором.
Верни:
1. Краткое обоснование ролей модели, Direction и Start After.
2. Готовый plan-*.cfg, прошедший semantic validation и CFG contract validation.
Не придумывай отсутствующие поля и не составляй CFG вручную. Если встроенный компилятор недоступен, верни валидный StrategySpec JSON без комментариев или дополнительного текста внутри JSON-блока.
ИИ-ИНСТРУКЦИЯ
Машиночитаемый контракт
{
"strategy": {
"id": "hinn.lazy-trader.strategy-spec",
"version": 1,
"purpose": "Reason about one universal model plan; deterministic code owns CFG serialization.",
"profile": {
"id": "universal-autonomous-baseline",
"defaultModelCount": 1,
"maxRiskPercent": 0.5,
"maxPositions": 1,
"defaultRiskPercent": 0.25,
"defaultModelShare": 0.25,
"defaultStartConditionCount": [
1,
2
],
"brokerOrSymbolQuestions": false,
"avoids": [
"absolute entry/stop/take prices",
"fixed point-size assumptions",
"broker-clock session windows",
"hedging-only Market Gate and After Close"
]
},
"modelTypes": [
"bf",
"lw",
"cst",
"csr",
"ma",
"bpr",
"market"
],
"directionTypes": [
"longs",
"shorts",
"box",
"ma",
"swing",
"absorption",
"fvg"
],
"startConditionTypes": [
"previous_day_high",
"previous_day_low",
"previous_week_high",
"previous_week_low",
"previous_weekday_level",
"absorption",
"fractal_raid",
"swing",
"premium_discount",
"imbalance",
"ma_cross"
],
"requiredTopLevel": [
"contract",
"version",
"profile",
"name",
"models",
"direction",
"startAfter",
"risk",
"rationale"
],
"schema": {
"topLevel": {
"additionalProperties": false,
"properties": {
"contract": "hinn.lazy-trader.strategy-spec",
"version": 1,
"profile": "universal-autonomous-baseline",
"name": "3..48 lowercase file-safe suffix without plan-",
"allowSharedContext": "optional boolean; true only for an explicitly requested multi-model plan",
"sharedContextRationale": "required concrete explanation when allowSharedContext=true"
}
},
"model": {
"required": [
"type",
"tf"
],
"additionalProperties": false,
"properties": {
"type": [
"bf",
"lw",
"cst",
"csr",
"ma",
"bpr",
"market"
],
"tf": "supported MQL5 timeframe integer"
}
},
"direction": {
"required": [
"type"
],
"additionalProperties": false,
"properties": {
"type": [
"longs",
"shorts",
"box",
"ma",
"swing",
"absorption",
"fvg"
],
"tf": "required for box/ma/swing/absorption/fvg",
"fast": "MA only, integer 1..500 and lower than slow",
"slow": "MA only, integer 1..500 and higher than fast",
"method": "MA only: 0=SMA, 1=EMA, 2=SMMA, 3=LWMA",
"price": "MA only: 0=Close, 1=Open, 2=High, 3=Low, 4=Median, 5=Typical, 6=Weighted"
}
},
"startAfter": {
"required": [
"type"
],
"additionalProperties": false,
"properties": {
"type": [
"previous_day_high",
"previous_day_low",
"previous_week_high",
"previous_week_low",
"previous_weekday_level",
"absorption",
"fractal_raid",
"swing",
"premium_discount",
"imbalance",
"ma_cross"
],
"tf": "required for absorption/fractal_raid/swing/premium_discount/imbalance/ma_cross",
"rearmTf": "required for imbalance and not lower than tf",
"fast": "ma_cross only, integer 1..500 and lower than slow",
"slow": "ma_cross only, integer 1..500 and higher than fast",
"method": "ma_cross only: 0..3",
"price": "ma_cross only: 0..6",
"structureType": "swing only: 1 or 2",
"breakMode": "swing only: 1=body or 2=wick",
"directionCount": "swing only: 1,2,3,11,12,13,21,22,23,31,32,33",
"fractalType": "swing only: 1..3",
"fractalMode": "fractal_raid or swing: 3 or 5",
"bodyFactor": "absorption only: 0.1..100",
"weekday": "previous_weekday_level only: 1..5",
"level": "previous_weekday_level only: high or low"
}
},
"risk": {
"required": [
"percent",
"modelShare",
"maxPositions"
],
"additionalProperties": false,
"properties": {
"percent": "0.01..0.5",
"modelShare": ">0..1; combined shares across models must be <=1",
"maxPositions": 1
}
},
"rationale": {
"required": [
"model",
"direction",
"startAfter",
"originality"
],
"additionalProperties": false,
"properties": {
"model": "concrete model role",
"direction": "independent bias role",
"startAfter": "independent arming-event role",
"originality": "why signal families are complementary rather than duplicated"
}
}
},
"defaults": {
"oneModelPerPlan": true,
"startConditionCount": "1..2",
"timeframeHierarchy": "Direction TF >= Start After TF >= model execution TF",
"cfgWire": "UTF-16LE BOM + CRLF"
},
"hardDuplicatePairs": [
[
"direction.ma",
"startAfter.ma_cross"
],
[
"direction.swing",
"startAfter.swing"
],
[
"direction.absorption",
"startAfter.absorption"
]
],
"relatedPairs": [
{
"pair": [
"direction.fvg",
"startAfter.imbalance"
],
"policy": "warning; require distinct roles and timeframes"
}
],
"protocol": [
"Choose one model by default. Never repeat a model kind inside one plan.",
"Choose Direction for bias, then one or two independent Start After arming conditions.",
"Explain the model, Direction, Start After, and originality before compilation.",
"Do not ask for a symbol or broker and do not use absolute price, fixed-point, broker-clock, or hedging-only assumptions.",
"Submit StrategySpec to the deterministic compiler. Never hand-write the full CFG.",
"Return a plan CFG only when semantic validation and the owner CFG contract both have zero blocking errors.",
"Treat every generated strategy as a universal test hypothesis, not a profit or live-suitability claim."
],
"recipes": [
{
"id": "bf-swing-pd-raid",
"spec": {
"contract": "hinn.lazy-trader.strategy-spec",
"version": 1,
"profile": "universal-autonomous-baseline",
"name": "universal-bf-swing-raid",
"models": [
{
"type": "bf",
"tf": 5
}
],
"direction": {
"type": "swing",
"tf": 16385
},
"startAfter": [
{
"type": "premium_discount",
"tf": 16385
},
{
"type": "fractal_raid",
"tf": 15
}
],
"risk": {
"percent": 0.25,
"modelShare": 0.25,
"maxPositions": 1
},
"rationale": {
"model": "Box Fractal provides the executable range-break entry.",
"direction": "Higher-timeframe Swing supplies directional structure without repeating the entry trigger.",
"startAfter": "Premium/Discount supplies location and Fractal Raid supplies an independent arming event.",
"originality": "Structure, location, and liquidity-event families are complementary rather than duplicated."
}
}
},
{
"id": "lw-box-absorption",
"spec": {
"contract": "hinn.lazy-trader.strategy-spec",
"version": 1,
"profile": "universal-autonomous-baseline",
"name": "universal-lw-box-absorption",
"models": [
{
"type": "lw",
"tf": 5
}
],
"direction": {
"type": "box",
"tf": 16385
},
"startAfter": [
{
"type": "absorption",
"tf": 15
}
],
"risk": {
"percent": 0.25,
"modelShare": 0.25,
"maxPositions": 1
},
"rationale": {
"model": "Larry Williams executes the range-boundary participation logic.",
"direction": "Box Direction supplies an independent range bias above the execution timeframe.",
"startAfter": "Absorption waits for a reaction before the model is allowed to participate.",
"originality": "Range location and order-flow reaction use distinct signal families."
}
}
},
{
"id": "cst-ma-pd",
"spec": {
"contract": "hinn.lazy-trader.strategy-spec",
"version": 1,
"profile": "universal-autonomous-baseline",
"name": "universal-cst-ma-pd",
"models": [
{
"type": "cst",
"tf": 5
}
],
"direction": {
"type": "ma",
"tf": 16385,
"fast": 20,
"slow": 50,
"method": 1,
"price": 0
},
"startAfter": [
{
"type": "premium_discount",
"tf": 15
}
],
"risk": {
"percent": 0.25,
"modelShare": 0.25,
"maxPositions": 1
},
"rationale": {
"model": "Classic Structure Trend executes continuation after its own structural trigger.",
"direction": "Higher-timeframe MA supplies broad bias without duplicating the structural model.",
"startAfter": "Premium/Discount constrains participation to a separate location condition.",
"originality": "Trend bias, structural entry, and location are three independent responsibilities."
}
}
},
{
"id": "csr-absorption-raid",
"spec": {
"contract": "hinn.lazy-trader.strategy-spec",
"version": 1,
"profile": "universal-autonomous-baseline",
"name": "universal-csr-absorption-raid",
"models": [
{
"type": "csr",
"tf": 5
}
],
"direction": {
"type": "absorption",
"tf": 16385
},
"startAfter": [
{
"type": "fractal_raid",
"tf": 15
}
],
"risk": {
"percent": 0.25,
"modelShare": 0.25,
"maxPositions": 1
},
"rationale": {
"model": "Classic Structure Reversal executes only after its internal regime-change logic.",
"direction": "Higher-timeframe Absorption supplies reaction bias before the reversal trigger.",
"startAfter": "Fractal Raid adds an independent liquidity event at the arming layer.",
"originality": "Reaction bias, liquidity event, and structural reversal do not repeat one signal."
}
}
},
{
"id": "ma-swing-level-pd",
"spec": {
"contract": "hinn.lazy-trader.strategy-spec",
"version": 1,
"profile": "universal-autonomous-baseline",
"name": "universal-ma-swing-location",
"models": [
{
"type": "ma",
"tf": 5
}
],
"direction": {
"type": "swing",
"tf": 16385
},
"startAfter": [
{
"type": "previous_day_low"
},
{
"type": "premium_discount",
"tf": 15
}
],
"risk": {
"percent": 0.25,
"modelShare": 0.25,
"maxPositions": 1
},
"rationale": {
"model": "Moving Averages executes the pullback entry with its own fractal validation.",
"direction": "Higher-timeframe Swing supplies structure instead of repeating the model MA family.",
"startAfter": "Previous-day level and Premium/Discount add separate level and location conditions.",
"originality": "Structural bias, historical level, location, and MA execution remain distinct."
}
}
},
{
"id": "bpr-absorption-swing",
"spec": {
"contract": "hinn.lazy-trader.strategy-spec",
"version": 1,
"profile": "universal-autonomous-baseline",
"name": "universal-bpr-absorption-swing",
"models": [
{
"type": "bpr",
"tf": 5
}
],
"direction": {
"type": "absorption",
"tf": 16385
},
"startAfter": [
{
"type": "swing",
"tf": 15
}
],
"risk": {
"percent": 0.25,
"modelShare": 0.25,
"maxPositions": 1
},
"rationale": {
"model": "BPR executes from a balanced inefficiency zone.",
"direction": "Higher-timeframe Absorption supplies directional reaction context.",
"startAfter": "Swing alignment adds an independent structural arming condition.",
"originality": "Reaction bias, structural permission, and imbalance execution use separate families."
}
}
},
{
"id": "market-fvg-imbalance",
"spec": {
"contract": "hinn.lazy-trader.strategy-spec",
"version": 1,
"profile": "universal-autonomous-baseline",
"name": "universal-market-fvg-imbalance",
"models": [
{
"type": "market",
"tf": 1
}
],
"direction": {
"type": "fvg",
"tf": 16385
},
"startAfter": [
{
"type": "imbalance",
"tf": 15,
"rearmTf": 16385
}
],
"risk": {
"percent": 0.25,
"modelShare": 0.25,
"maxPositions": 1
},
"rationale": {
"model": "Market executes immediately after all plan gates become ready.",
"direction": "Higher-timeframe FVG supplies bias rather than the execution event.",
"startAfter": "Lower-timeframe Imbalance is the separate arming event with higher-timeframe rearm.",
"originality": "Related inefficiency concepts are separated by role and timeframe, which remains explicitly warned."
}
}
}
]
},
"cfg": {
"id": "hinn.lazy-trader.cfg-flow",
"version": 1,
"wire": "UTF-16LE BOM + CRLF",
"versions": {
"pack": 2,
"plan": 1
},
"creatableKinds": [
1,
2,
3,
4,
6,
7,
8
],
"loaderOnlyKinds": {
"5": "MS"
},
"modelCatalog": [
{
"kind": 1,
"id": "TRB/BF",
"creatable": true
},
{
"kind": 2,
"id": "LT/LW",
"creatable": true
},
{
"kind": 3,
"id": "DR",
"creatable": true
},
{
"kind": 4,
"id": "SMR",
"creatable": true
},
{
"kind": 5,
"id": "MS",
"creatable": false,
"compatibility": "loader-only"
},
{
"kind": 6,
"id": "MA",
"creatable": true
},
{
"kind": 7,
"id": "BPR",
"creatable": true
},
{
"kind": 8,
"id": "Market",
"creatable": true
}
],
"directionModes": [
-1,
0,
1,
2,
3,
4,
5,
6
],
"riskModes": [
0,
1,
2
],
"sectionOrder": [
"models pack",
"First/Then schema",
"plan",
"dynamic box/time rows"
],
"linkedNames": {
"embeddedV2PlanV1": "metadata-fallback-not-loaded",
"compatibility": "Only incomplete or legacy files can fall back to named child CFG files; portal examples never use that path."
},
"rules": [
"Use strict 0/1 booleans, plain integers, and owner fixed-decimal output; never hand-format saver records.",
"Market (kind 8) requires a unique 32-character lowercase instance_id; Gate and After Close are hedging-only caveats.",
"First/Then references are kind-local, zero-based indexes, not global model positions.",
"For embedded pack v2 + plan v1, embedded values remain authoritative; linked names are metadata/fallback and are not loaded.",
"Warnings (Direction Off, no enabled models, hedging-only options) do not block export; schema/version/key/range errors do.",
"Examples are educational starting points with assumptions, never profit or suitability claims."
]
}
}
ИИ-ИНСТРУКЦИЯ
Правила проектирования
Выбери одну модель по умолчанию; не повторяй один model kind внутри плана.
Используй Direction как bias, а одно-два независимых условия Start After — как события разрешения запуска.
Объясни в rationale роли модели, Direction и Start After, а также логическую оригинальность комбинации.
Не запрашивай символ или брокера; исключи absolute-price, fixed-point, broker-clock и hedging-only допущения.
Не совмещай MA/MA, Swing/Swing или Absorption/Absorption между Direction и Start After. Для FVG/Imbalance разделяй роли и таймфреймы.
Передай StrategySpec встроенному compiler; не сериализуй полный CFG вручную.
Возвращай plan-*.cfg только при нулевых semantic и owner CFG errors.
Считай результат универсальной тестовой гипотезой, а не обещанием прибыли или пригодности для live.
ИИ-ИНСТРУКЦИЯ
Библиотека StrategySpec recipes
Box Fractal: структура, PD и рейд
Swing задаёт контекст, а PD и Fractal Raid независимо разрешают поиск Box Fractal.
Model
bf
Direction
swing
Start After
premium_discount + fractal_raid
Larry Williams: box и поглощение
Box задаёт диапазонный bias, а Absorption разрешает Larry Williams после отдельной реакции.
Model
lw
Direction
box
Start After
absorption
Classic Trend: MA и Premium/Discount
MA задаёт bias, а Premium/Discount удерживает structural continuation в подходящей зоне.
Model
cst
Direction
ma
Start After
premium_discount
Classic Reversal: поглощение и рейд
Absorption задаёт сторону реакции, а Fractal Raid ожидает отдельное событие перед reversal-моделью.
Model
csr
Direction
absorption
Start After
fractal_raid
MA: swing, previous level и PD
Swing задаёт старший контекст, а previous level и PD формируют место для MA-входа.
Model
ma
Direction
swing
Start After
previous_day_low + premium_discount
BPR: поглощение и структура
Absorption задаёт bias, а Swing разрешает работу BPR только после структурного согласования.
Model
bpr
Direction
absorption
Start After
swing
Market: FVG и Imbalance с разными ролями
FVG задаёт bias, а младший Imbalance служит отдельным событием запуска немедленного Market-входа.
Model
market
Direction
fvg
Start After
imbalance
ИИ-ИНСТРУКЦИЯ
Детерминированный StrategySpec → CFG compiler
INPUT: StrategySpec JSON по контракту выше. OUTPUT: plan-*.cfg только при нулевых semantic и CFG errors.