Normative AI instructions, model-specific recipes, and deterministic StrategySpec → plan-*.cfg compilation.
ManualCFGTesterSupport
For the user
Prompt for AI
Copy and send this prompt to the AI — everything it needs is already included.
Open https://hinn.in/en/lazy-trader/cfg-flow and use this page as the sole source of Lazy Trader rules and file-format requirements.
Create a universal, logically justified trading plan:
— use one unique model by default;
— choose an independent Direction and one or two independent Start After conditions for that model;
— do not bind the strategy to a symbol or broker;
— do not duplicate the same signal family across Direction and Start After.
Follow every “AI INSTRUCTION” block and the machine-readable contract on the page. First produce StrategySpec, then validate it with the embedded compiler.
Return:
1. A concise explanation of the model, Direction, and Start After roles.
2. A ready plan-*.cfg that passes semantic validation and CFG contract validation.
Do not invent fields or serialize CFG manually. If the embedded compiler is unavailable, return a valid StrategySpec JSON with no comments or additional prose inside the JSON block.
AI INSTRUCTION
Machine-readable contract
{
"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."
]
}
}
AI INSTRUCTION
Strategy design rules
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.
AI INSTRUCTION
StrategySpec recipe library
Box Fractal: structure, PD, and raid
Swing supplies context while PD and Fractal Raid independently arm the Box Fractal entry.
Model
bf
Direction
swing
Start After
premium_discount + fractal_raid
Larry Williams: box and absorption
Box supplies range bias while Absorption arms Larry Williams after an independent reaction.
Model
lw
Direction
box
Start After
absorption
Classic Trend: MA and Premium/Discount
MA supplies bias while Premium/Discount keeps structural continuation in a suitable location.
Model
cst
Direction
ma
Start After
premium_discount
Classic Reversal: absorption and raid
Absorption supplies reaction bias while Fractal Raid waits for a separate event before the reversal model.
Model
csr
Direction
absorption
Start After
fractal_raid
MA: swing, previous level, and PD
Swing supplies higher context while a previous level and PD shape the location for the MA entry.
Model
ma
Direction
swing
Start After
previous_day_low + premium_discount
BPR: absorption and structure
Absorption supplies bias while Swing arms BPR only after structural alignment.
Model
bpr
Direction
absorption
Start After
swing
Market: FVG and Imbalance with distinct roles
FVG supplies bias while lower-timeframe Imbalance is a distinct arming event for the immediate Market entry.
Model
market
Direction
fvg
Start After
imbalance
AI INSTRUCTION
Deterministic StrategySpec → CFG compiler
INPUT: StrategySpec JSON matching the contract above. OUTPUT: plan-*.cfg only with zero semantic and CFG errors.