Ручное редактирование plan-x.cfg
Карта переменных saved plan CFG для single-file workflow, где тестер берет значения прямо из plan-x.cfg.
Для тестера можно свести workflow к редактированию одного plan-x.cfg, но только если убрать или не использовать linked child CFG.
Сейчас plan-x.cfg это не просто один независимый файл. Он содержит embedded models pack + plan section, но в конце еще есть ссылки.
Когда linked child CFG заполнены
models_cfg_name=q
start_cfg_name=q
end_cfg_name=q
box_cfg_name=q
time_cfg_name=q
ma_cfg_name=q
swing_cfg_name=qПочему это важно
Если эти ссылки заполнены и соответствующие файлы существуют, Lazy Trader после загрузки plan-x.cfg дополнительно загрузит child CFG и может перекрыть часть значений из самого плана.
Для single-file workflow лучше оставить linked CFG пустыми.
Single-file plan
models_cfg_name=
start_cfg_name=
end_cfg_name=
box_cfg_name=
time_cfg_name=
ma_cfg_name=
swing_cfg_name=Тогда тестер берет значения прямо из plan-x.cfg.
Ниже карта текущего saved plan CFG. Важно: в plan-x.cfg model fields пишутся как model_0_field_60, а в отдельном model CFG как просто field_60.
Общие правила
- 0/1 = false/true.
- <i> = индекс модели/строки, начинается с 0.
- <t> = индекс TP, начинается с 0.
- TF = MQL5 timeframe int: 1=M1, 5=M5, 15=M15, 30=M30, 16385=H1, 16388=H4, 16408=D1.
Models Pack внутри Plan CFG
- pack_version = версия pack-секции; пример 1.
- pack_label = имя pack/preset; пример q.
- history_depth = глубина истории для model/MA overlay; пример 120.
- model_total = количество моделей в плане; пример 1.
- model_<i>_kind = тип модели: 1=TRB/BF, 2=LT/LW, 3=DR, 4=SMR, 5=MS, 6=MA, 7=BPR.
- model_<i>_show = показывать модель/overlay на графике; 0/1.
- model_<i>_on = модель включена в расчет/торговлю; 0/1.
- model_<i>_once_auto = runtime auto-disable once flag; лучше не генерировать вручную.
- model_<i>_tf = timeframe модели; пример 5 для M5.
- model_<i>_user_label = пользовательский label модели.
- model_<i>_cfg_name = имя model CFG; пример q -> configs\MA-q.cfg для kind=6.
- model_<i>_basic_cfg_name = имя basic CFG; пример q -> configs\basic-q.cfg.
- model_<i>_be_enabled = BE включен; 0/1.
- model_<i>_be_trigger = BE trigger в RR; пример 0.5000.
- model_<i>_be_offset = BE offset в RR/points-семантике модели; пример 0.1000.
- model_<i>_min_sl_on = Min SL включен; 0/1.
- model_<i>_min_sl_pts = Min SL points.
- model_<i>_max_sl_on = Max SL включен; 0/1.
- model_<i>_max_sl_pts = Max SL points.
- model_<i>_min_sl_fractal_on = Min SL = fractal size; 0/1.
- model_<i>_tp_count = количество TP rows.
- model_<i>_tp1_plan_tp = TP1 использовать plan TP; 0/1.
- model_<i>_tp_rr_<t> = RR для TP t; пример model_0_tp_rr_0=1.0000.
- model_<i>_tp_volume_pct_<t> = процент объема для TP t; пример 20.0.
- model_<i>_field_<N> = model/basic parameter, карта ниже.
- schema_first_count = сколько моделей в FIRST schema.
- schema_first_kind_<i> = kind модели в FIRST schema.
- schema_first_idx_<i> = индекс модели данного kind в FIRST schema.
- schema_then_count = сколько моделей в THEN schema.
- schema_then_kind_<i> = kind модели в THEN schema.
- schema_then_idx_<i> = индекс модели данного kind в THEN schema.
Common field_N для всех моделей
- field_74 = risk_part; доля риска модели; пример 0.1000.
- field_70 = min_sl_on; Min SL включен; 0/1.
- field_71 = min_sl_pts; Min SL в points.
- field_72 = max_sl_on; Max SL включен; 0/1.
- field_73 = max_sl_pts; Max SL в points.
- field_106 = min_sl_auto_on; auto Min SL включен; 0/1.
- field_107 = min_sl_auto_mult; multiplier auto Min SL; пример 1.0.
- field_108 = max_sl_auto_on; auto Max SL включен; 0/1.
- field_109 = max_sl_auto_mult; multiplier auto Max SL; пример 3.0.
- field_86 = min_sl_fractal_on; Min SL = fractal size; 0/1.
- field_87 = max_freq_on; Max frequency включен; 0/1.
- field_110 = max_freq_minutes; пауза между входами в минутах; пример 45.
- field_88 = once_on; once per setup/session; 0/1.
- field_112 = max_pos_ignore_be_on; Ignore BE for max positions; 0/1.
- field_89 = spread_to_sl; Add x Spread to SL; пример 2.
- field_101 = max_spread_on; Max spread filter включен; 0/1.
- field_102 = max_spread; Max spread points.
- field_104 = max_spread_auto_on; auto Max spread включен; 0/1.
- field_105 = max_spread_auto_mult; auto Max spread multiplier; пример 0.5.
- field_99 = min_rr_on; Min RR включен; 0/1.
- field_100 = min_rr; минимальный RR; пример 2.0.
TRB / BF, model_<i>_kind=1
- field_1 = TRB model/fractal type; 1=ST/Fractal, 2=IT, 3=LT.
- field_16 = TRB fractal mode; 3 или 5.
- field_17 = confirm TF; MQL5 timeframe int.
- field_2 = confirm mode; 1=body, 2=wick.
- field_3 = PD entry level; 0.0..1.0, legacy enum 1/2/3/4 maps to 0/.25/.5/.75.
- field_8 = SL level; 0.0..2.0.
- field_10 = lifetime minutes; пример 120.
- field_13 = max positions.
- field_14 = BE trigger.
- field_15 = BE offset.
LT / LW, model_<i>_kind=2
- field_27 = LT model type; 2=Intermediate, 3=LongTerm.
- field_28 = LT fractal mode; 3 или 5.
- field_29 = lifetime minutes.
- field_75 = open on reversal; 0/1.
- field_76 = entry fib; пример 1.0.
- field_77 = SL fib; пример 2.0.
- field_22 = sweep range limiter.
- field_23 = SL max ticks.
- field_24 = max positions.
- field_25 = BE trigger.
- field_26 = BE offset.
DR, model_<i>_kind=3
- field_113 = structure type; 1=type-1, 2=type-2.
- field_114 = structure break mode; 1=body, 2=wick.
- field_115 = structure dir count; type-1: 1..3, type-2: packed like 11, 12, 23.
- field_81 = SL model type; 1=Fractal, 2=Intermediate, 3=LongTerm.
- field_82 = SL fractal mode; 3 или 5.
- field_33 = max positions.
- field_34 = entry level.
- field_32 = SL coef.
- field_83 = structure direction check; 0/1.
- field_35 = BE trigger.
- field_36 = BE offset.
SMR, model_<i>_kind=4
- field_116 = structure type; 1=type-1, 2=type-2.
- field_117 = structure break mode; 1=body, 2=wick.
- field_118 = structure dir count.
- field_84 = SL model type; 1=Fractal, 2=Intermediate, 3=LongTerm.
- field_85 = SL fractal mode; 3 или 5.
- field_42 = PD entry.
- field_43 = SL.
- field_44 = max positions.
- field_45 = BE trigger.
- field_46 = BE offset.
MS, model_<i>_kind=5
- field_57 = structure/SL model type; 1=Fractal, 2=Intermediate, 3=LongTerm.
- field_58 = structure/SL fractal mode; 3 или 5.
- field_52 = PD entry.
- field_59 = SL.
- field_53 = FVG only; 0/1.
- field_54 = max positions.
- field_55 = BE trigger.
- field_56 = BE offset.
MA, model_<i>_kind=6
- field_60 = fast period; пример 25.
- field_61 = slow period; пример 55.
- field_62 = MA method; 0=SMA, 1=EMA, 2=SMMA, 3=LWMA.
- field_63 = applied price; 1=Close, 2=Open, 3=High, 4=Low, 5=Median, 6=Typical, 7=Weighted.
- field_80 = entry above slow only; 0/1.
- field_78 = SL model type; 1=Fractal, 2=Intermediate, 3=LongTerm.
- field_79 = SL fractal mode; 3 или 5.
- field_67 = max positions.
- field_68 = BE trigger.
- field_69 = BE offset.
BPR, model_<i>_kind=7
- field_91 = max fractals between FVGs; пример 3.
- field_92 = impulse fib; пример 0.50.
- field_93 = entry mode; 1=aggressive, 2=half, 3=full fill.
- field_94 = SL mode; 1=candle, 2=fractal 3, 3=full fill .1.
- field_95 = max positions.
- field_96 = BE trigger.
- field_97 = BE offset.
Plan Section
- plan_version = версия plan-секции; пример 1.
- plan_label = имя плана; пример q.
- plan_enabled = план включен; 0/1.
- risk_mode = 0=percent, 1=dollar, 2=lots, 3=equity/lots mode.
- risk_value = значение риска; пример 1.000000.
- risk_value_base = base/cache risk value; обычно можно держать равным risk_value.
- logic_mode = 0=long, 1=short, 2=box.
- direction_mode = -1=none, 0=longs, 1=shorts, 2=box, 3=MA, 4=Swing.
- entry = plan entry price; пишется 0 если cond_start=0.
- stop = plan SL price; пишется 0 если cond_sl=0.
- take = plan TP price; пишется 0 если cond_tp=0.
Direction MA и Swing
- direction_ma_tf = Direction MA timeframe.
- direction_ma_fast = Direction MA fast period.
- direction_ma_slow = Direction MA slow period.
- direction_ma_method = Direction MA method; 0=SMA, 1=EMA, 2=SMMA, 3=LWMA.
- direction_ma_price = Direction MA price; 1=Close и т.д.
- direction_ma_longs = allow longs by Direction MA; 0/1.
- direction_ma_shorts = allow shorts by Direction MA; 0/1.
- direction_ma_distance_on = MA distance filter enabled; 0/1.
- direction_ma_distance_points = MA distance points.
- direction_ma_distance_auto = auto distance; 0/1.
- direction_ma_show = show Direction MA visual; 0/1.
- direction_box_show = show Direction Box visual; 0/1.
- direction_swing_tf1_on = Swing TF1 enabled; 0/1.
- direction_swing_tf1 = Swing TF1 timeframe.
- direction_swing_tf2_on = Swing TF2 enabled; 0/1.
- direction_swing_tf2 = Swing TF2 timeframe.
- direction_swing_tf3_on = Swing TF3 enabled; 0/1.
- direction_swing_tf3 = Swing TF3 timeframe.
- direction_swing_type = Swing fractal type; 1=Fractal/ST, 2=IT, 3=LT.
- direction_swing_mode = Swing fractal mode; 3 или 5.
- direction_swing_structure_type = 1=type-1, 2=type-2.
- direction_swing_break_mode = 1=body, 2=wick.
- direction_swing_dir_count = direction count; 1..3 or packed type-2 value.
- direction_swing_show = show Swing visual; 0/1.
- direction_swing_tf1_show = show TF1 overlay; 0/1.
- direction_swing_tf2_show = show TF2 overlay; 0/1.
- direction_swing_tf3_show = show TF3 overlay; 0/1.
Start-After Keys
- cond_start = Start After Entry enabled; 0/1.
- cond_struct = Start Swing/Structure gate enabled; 0/1.
- start_struct_long = start structure direction long flag; 0/1.
- cond_pd = Premium/Discount gate enabled; 0/1.
- cond_imbalance = Imbalance gate enabled; 0/1.
- cond_ma = Start MA gate enabled; 0/1.
- cond_start_time = Start time gate enabled; 0/1.
- cond_time = duplicate/legacy start time gate; keep same as cond_start_time.
- start_struct_tf = Structure TF.
- start_struct_type = 1=Fractal/ST, 2=IT, 3=LT.
- start_struct_mode = 3 или 5.
- start_struct_structure_type = 1=type-1, 2=type-2.
- start_struct_break_mode = 1=body, 2=wick.
- start_struct_dir_count = dir count.
- start_pd_tf = Premium/Discount TF.
- start_imbalance_tf = Imbalance TF.
- start_imbalance_rearm_tf = Imbalance rearm TF.
- start_imbalance_rearm_type = rearm fractal type.
- start_imbalance_rearm_mode = rearm fractal mode.
- start_imbalance_rearm_structure_type = 1=type-1, 2=type-2.
- start_imbalance_rearm_break_mode = 1=body, 2=wick.
- start_imbalance_rearm_dir_count = dir count.
- start_imbalance_rearm_pd_only = rearm only through PD; 0/1.
- start_prev_day_high = previous day high gate; 0/1.
- start_prev_day_high_time_cfg = use time cfg for this gate; 0/1.
- start_prev_day_low = previous day low gate; 0/1.
- start_prev_day_low_time_cfg = use time cfg; 0/1.
- start_prev_week_high = previous week high gate; 0/1.
- start_prev_week_high_time_cfg = use time cfg; 0/1.
- start_prev_week_low = previous week low gate; 0/1.
- start_prev_week_low_time_cfg = use time cfg; 0/1.
- start_prev_weekday_level = previous weekday high/low gate; 0/1.
- start_prev_weekday_level_time_cfg = use time cfg; 0/1.
- start_prev_weekday_day = weekday 1..5, Mon..Fri.
- start_prev_weekday_high = 1=high, 0=low.
- start_prev_levels_one_of = previous-level gates use OR instead of all; 0/1.
- start_ma_tf = Start MA TF.
- start_ma_fast = Start MA fast.
- start_ma_slow = Start MA slow.
- start_ma_method = 0=SMA, 1=EMA, 2=SMMA, 3=LWMA.
- start_ma_price = applied price.
- start_ma_longs = allow longs; 0/1.
- start_ma_shorts = allow shorts; 0/1.
- start_ma_distance_on = distance filter enabled; 0/1.
- start_ma_distance_points = distance points.
- start_ma_distance_auto = auto distance; 0/1.
- start_vis_show = show Start canvas visuals; 0/1.
- start_time_h = start time hour.
- start_time_m = start time minute.
End-At Keys
- cond_tp = End at TP enabled; 0/1.
- cond_sl = End at SL enabled; 0/1.
- cond_max = End at max loss enabled; 0/1.
- cond_end_time = End at time enabled; 0/1.
- end_time_h = end time hour.
- end_time_m = end time minute.
- end_prev_day_high = end/rearm by previous day high; 0/1.
- end_prev_day_high_time_cfg = use time cfg; 0/1.
- end_prev_day_low = previous day low; 0/1.
- end_prev_day_low_time_cfg = use time cfg; 0/1.
- end_prev_week_high = previous week high; 0/1.
- end_prev_week_high_time_cfg = use time cfg; 0/1.
- end_prev_week_low = previous week low; 0/1.
- end_prev_week_low_time_cfg = use time cfg; 0/1.
- end_prev_scope = 0=all, 1=longs, 2=shorts.
- end_prev_rearm_loss = rearm after loss; 0/1.
- end_prev_rearm_tp = rearm after TP; 0/1.
- end_prev_rearm_tp_kind = level kind: 0=none, 1=PDH, 2=PDL, 3=PWH, 4=PWL.
- end_prev_rearm_tp_time_cfg = use time cfg; 0/1.
- end_prev_rearm_sl = rearm after SL; 0/1.
- end_prev_rearm_sl_kind = level kind.
- end_prev_rearm_sl_time_cfg = use time cfg; 0/1.
- end_vis_show = show End visuals; 0/1.
- time_vis_show = show Time visuals; 0/1.
Linked CFG и UI Visibility
- models_cfg_name = linked models cfg name; blank for single-file plan.
- start_cfg_name = linked start cfg name; blank for single-file plan.
- end_cfg_name = linked end cfg name; blank for single-file plan.
- box_cfg_name = linked box cfg name; blank for single-file plan.
- time_cfg_name = linked time cfg name; blank for single-file plan.
- ma_cfg_name = linked Direction MA cfg name; blank for single-file plan.
- swing_cfg_name = linked Direction Swing cfg name; blank for single-file plan.
- show_start_after = UI section expanded/visible; 0/1.
- show_end_at = UI section expanded/visible; 0/1.
- show_box = UI section expanded/visible; 0/1.
- show_time = UI section expanded/visible; 0/1.
- show_models = UI section expanded/visible; 0/1.
Box и Time Rows
- box_count = number of box rows.
- box_active = active box row index.
- box_<i>_show = show box row visual; 0/1.
- box_<i>_from_h = from hour.
- box_<i>_from_m = from minute.
- box_<i>_to_h = to hour.
- box_<i>_to_m = to minute.
- box_<i>_confirm_tf = confirm TF.
- box_<i>_confirm_mode = 1=body, 2=wick.
- box_<i>_flip = flip on break; 0/1.
- box_<i>_session_mode = session mode; 0/1.
- box_<i>_life_on = lifetime enabled; 0/1.
- box_<i>_life_min = lifetime minutes.
- time_count = number of time rows.
- time_active = active time row index.
- time_<i>_start_on = start bound enabled; 0/1.
- time_<i>_start_h = start hour.
- time_<i>_start_m = start minute.
- time_<i>_end_on = end bound enabled; 0/1.
- time_<i>_end_h = end hour.
- time_<i>_end_m = end minute.
- daily_close_on = daily close enabled; 0/1.
- daily_close_h = daily close hour.
- daily_close_m = daily close minute.
- friday_close_on = friday close enabled; 0/1.
- friday_close_h = friday close hour.
- friday_close_m = friday close minute.
- weekday_mon_on = Monday enabled; 0/1.
- weekday_tue_on = Tuesday enabled; 0/1.
- weekday_wed_on = Wednesday enabled; 0/1.
- weekday_thu_on = Thursday enabled; 0/1.
- weekday_fri_on = Friday enabled; 0/1.
- weekday_sat_on = Saturday enabled; 0/1.
- weekday_sun_on = Sunday enabled; 0/1.
Model Stats
- model_stat_count = runtime stats rows. Для тестерных preset-файлов лучше ставить 0.
- model_stat_<i>_kind = model kind.
- model_stat_<i>_idx = model index.
- model_stat_<i>_magic = magic.
- model_stat_<i>_spent_open = open spent risk.
- model_stat_<i>_spent_total = total spent risk.
- model_stat_<i>_realized = realized total.
- model_stat_<i>_opens = opens count.
- model_stat_<i>_closes = closes count.
- model_stat_<i>_realized_profit = realized profit.
- model_stat_<i>_realized_loss = realized loss.
- model_stat_<i>_win_events = win events.
- model_stat_<i>_loss_events = loss events.
Минимальный MA-план для single-file тестера
pack_version=1
pack_label=ma_test
history_depth=120
model_total=1
model_0_kind=6
model_0_show=0
model_0_on=1
model_0_tf=5
model_0_cfg_name=
model_0_basic_cfg_name=
model_0_field_74=0.1000
model_0_field_60=25.0000
model_0_field_61=55.0000
model_0_field_62=1.0000
model_0_field_63=1.0000
model_0_field_89=2.0000
model_0_field_99=1.0000
model_0_field_100=2.0000
schema_first_count=0
schema_then_count=0
plan_version=1
plan_label=ma_test
plan_enabled=1
risk_mode=0
risk_value=1.000000
risk_value_base=1.000000
logic_mode=0
direction_mode=3
direction_ma_tf=5
direction_ma_fast=20
direction_ma_slow=50
direction_ma_method=1
direction_ma_price=1
direction_ma_longs=1
direction_ma_shorts=1
models_cfg_name=
start_cfg_name=
end_cfg_name=
box_cfg_name=
time_cfg_name=
ma_cfg_name=
swing_cfg_name=
model_stat_count=0Admin presets отдельно от plan_cfg
Admin presets хранятся отдельно от обычных plan_cfg. Это не plan-x.cfg и не обычные UI presets, а входные slot-файлы для admin optimization module.
Этот слой нужен для пакетной оптимизации через admin inputs. Если клиентам нужен простой file-based workflow, им лучше давать ZEN\plan_cfg\plan-x.cfg.
Где лежат admin presets
MQL5\Files\ZEN\admin_presets\<slug>.cfg
TERMINAL_COMMONDATA_PATH\Files\ZEN\admin_presets\<slug>.cfgКак включается admin optimization module
Admin optimization module включается через InpAdminTesterOptModuleEnabled = true.
Обычный tester workflow через InpDefaultPlanCfgFile=<name> грузит plan_cfg\plan-<name>.cfg.
Обычный tester workflow
InpDefaultPlanCfgFile=<name>
ZEN\plan_cfg\plan-<name>.cfgAdmin workflow через inputs
InpAdminTesterOptModuleEnabled=true
InpAdminOptBfConfig=...
InpAdminOptTimeConfig=...
InpAdminOptDirectionMode=...
...В admin workflow Lazy Trader берет compiled defaults + overrides из файлов ZEN\admin_presets\*.cfg. Loader ищет local first, потом common Files.
Файлы admin presets
ZEN\admin_presets\bf.cfg
ZEN\admin_presets\lw.cfg
ZEN\admin_presets\cs1.cfg
ZEN\admin_presets\cs2.cfg
ZEN\admin_presets\csr.cfg
ZEN\admin_presets\bpr.cfg
ZEN\admin_presets\ma.cfg
ZEN\admin_presets\basic.cfg
ZEN\admin_presets\time.cfg
ZEN\admin_presets\start_swing.cfg
ZEN\admin_presets\start_fvg.cfg
ZEN\admin_presets\start_ma.cfg
ZEN\admin_presets\direction_swing.cfg
ZEN\admin_presets\direction_ma.cfg
ZEN\admin_presets\direction_box.cfg
ZEN\admin_presets\structure.cfgSlot-based формат
version=1
slot.0.label=BF_1
slot.0.cfg_suffix=...
slot.0.tf=5
slot.0.model_type=1
slot.0.fractal_mode=3
...Экспорт admin-generated плана
InpAdminOptSaveAsPlan=true
MQL5\Files\ZEN\AdminCfg\plan-<symbol>-<timestamp>.cfgКороткая карта файлов
ZEN\plan_cfg\plan-x.cfg = обычный самодостаточный план для InpDefaultPlanCfgFile.
ZEN\admin_presets\*.cfg = админские slot-presets для optimization module.
ZEN\AdminCfg\plan-*.cfg = экспорт результата admin-generated плана, если включен SaveAsPlan.Для native Strategy Tester optimization схема с внешним генератором должна оставаться slot-based: генератор заранее пишет admin_presets, а MT5 optimizer перебирает уже существующие enum/input значения.
Внешний генератор: общий поток
external generator
-> пишет ZEN\admin_presets\*.cfg
-> MT5 optimizer перебирает enum/input параметры
-> Lazy Trader на OnInit собирает runtime plan из выбранных slots
-> тестер считает passЧто включать в tester inputs
InpDefaultPlanCfgFile=
InpAdminTesterOptModuleEnabled=true
InpAdminOptSaveAsPlan=false или trueНе смешивать loaders
InpDefaultPlanCfgFile лучше оставить пустым, чтобы не смешивать обычный plan-loader и admin optimizer.
Что оптимизировать в admin module
InpAdminOptBfConfig
InpAdminOptLwConfig
InpAdminOptClassicStructure1Config
InpAdminOptClassicStructure2Config
InpAdminOptClassicReversalConfig
InpAdminOptBprConfig
InpAdminOptMaConfig
InpAdminOptBaseConfig
InpAdminOptTimeConfig
InpAdminOptDirectionMode
InpAdminOptDirectionMa
InpAdminOptDirectionSwing
InpAdminOptDirectionBox
InpAdminOptBfOn
InpAdminOptLwOn
InpAdminOptClassicStructure1On
InpAdminOptClassicStructure2On
InpAdminOptClassicReversalOn
InpAdminOptBprOn
InpAdminOptMaOnВнешний генератор должен писать полный набор файлов в local Files и желательно синхронно в Common Files. Текущий loader читает local first, потом FILE_COMMON, поэтому важно не оставлять stale local-файл, который перекроет common-файл.
Куда пишет внешний генератор
<MQL5 data>\Files\ZEN\admin_presets\*.cfg
<TERMINAL_COMMONDATA_PATH>\Files\ZEN\admin_presets\*.cfgТиповые файлы генератора
ZEN\admin_presets\ma.cfg
ZEN\admin_presets\basic.cfg
ZEN\admin_presets\time.cfg
ZEN\admin_presets\bf.cfg
ZEN\admin_presets\lw.cfg
ZEN\admin_presets\bpr.cfg
ZEN\admin_presets\direction_ma.cfg
ZEN\admin_presets\direction_swing.cfg
ZEN\admin_presets\direction_box.cfg
ZEN\admin_presets\structure.cfgПример ma.cfg
version=1
slot.0.cfg_suffix=gen_ma_001
slot.0.tf=5
slot.0.fast_period=20
slot.0.slow_period=50
slot.0.method=1
slot.0.price=1
slot.0.sl_model_type=2
slot.0.sl_fractal_mode=3
slot.1.cfg_suffix=gen_ma_002
slot.1.tf=5
slot.1.fast_period=30
slot.1.slow_period=80
slot.1.method=1
slot.1.price=1
slot.1.sl_model_type=2
slot.1.sl_fractal_mode=3Пример basic.cfg
version=1
slot.0.cfg_suffix=gen_basic_001
slot.0.max_positions=1
slot.0.once_on=0
slot.0.max_pos_ignore_be_on=1
slot.0.spread_to_sl=2
slot.0.max_spread_on=0
slot.0.max_spread_pts=0
slot.0.max_spread_auto_on=1
slot.0.max_spread_auto_mult=0.5
slot.0.min_sl_pts=0
slot.0.max_sl_pts=0
slot.0.min_sl_auto_on=0
slot.0.min_sl_auto_mult=1.0
slot.0.max_sl_auto_on=0
slot.0.max_sl_auto_mult=3.0
slot.0.min_sl_fractal_on=1
slot.0.max_freq_on=1
slot.0.max_freq_minutes=45
slot.0.min_rr_on=1
slot.0.min_rr=2.0
slot.0.be_enabled=1
slot.0.be_trigger=0.8
slot.0.be_offset=0.1
slot.0.tp1_plan_tp=0
slot.0.tp_count=3
slot.0.tp_rr_1=1.0
slot.0.tp_rr_2=2.0
slot.0.tp_rr_3=3.0Пример time.cfg
version=1
slot.0.cfg_name=gen_time_001
slot.0.block_1_on=1
slot.0.block_1_start_h=8
slot.0.block_1_start_m=0
slot.0.block_1_end_h=12
slot.0.block_1_end_m=0
slot.0.block_2_on=1
slot.0.block_2_start_h=13
slot.0.block_2_start_m=0
slot.0.block_2_end_h=17
slot.0.block_2_end_m=0Критичные ограничения внешнего генератора
- Нельзя переписывать admin_presets\*.cfg во время уже запущенной оптимизации. Passes могут идти параллельно, разные agents могут читать файл в разное время.
- Количество вариантов ограничено существующими enum slots. Если в коде MA_1..MA_5, генератор может заполнить 5 MA slots, а MT5 сможет оптимизировать выбор между этими 5 enum values.
- Просто добавить slot.99 в файл недостаточно, если в input enum нет значения, которое на него ссылается.
- Если генератор меняет содержимое файлов, но набор input-параметров тот же, MT5 может использовать optimization cache. Это опасно: результат может быть от старой версии файлов.
- Варианты решения для cache: очищать optimization cache перед новым batch, менять input batch/version id, добавить input int InpAdminPresetBatchId или добавить #property tester_no_cache в main mq5, если готовы отключать кеш на уровне EA.
- Для remote/cloud agents файловая история тоньше. Официально tester agents изолированы, а file operations идут через agent sandbox; FILE_COMMON помогает локальным agents и терминалу общаться через shared folder.
- Для cloud/remote лучше сначала валидировать отдельно, потому что динамически сгенерированные внешние файлы не то же самое, что статический #property tester_file.
Рекомендуемая архитектура генератора
- Generator создает run_id, например 20260601_001.
- Generator пишет полный набор admin_presets/*.cfg в local Files и Common Files.
- Generator не трогает эти файлы до конца optimization run.
- В MT5 запускается optimization с InpAdminTesterOptModuleEnabled=true и пустым InpDefaultPlanCfgFile=.
- Optimizer перебирает enum slots.
- Lazy Trader на каждом pass собирает runtime plan из выбранных slots.
- Результаты берутся из MT5 Optimization Results.
- Если нужен audit/debug, включить InpAdminOptSaveAsPlan=true, тогда сгенерированные планы сохранятся в ZEN\AdminCfg\plan-<symbol>-<timestamp>.cfg.
Если нужны тысячи готовых конфигураций
Если нужна не slot-матрица, а тысячи произвольных полностью готовых конфигураций, лучше добавить отдельный adapter. Без такого adapter-а текущая admin-система годится для фиксированного числа enum slots.
Adapter для generated presets
input int InpAdminGeneratedPresetId = 0;
input int InpAdminPresetBatchId = 0;
ZEN\admin_presets\generated\<batch_id>\<preset_id>.cfgДругие разделы Lazy Trader
Balanced Price Range (BPR)
BPR — это модель на сжатии imbalance: она работает с областью пересечения противоположных неэффективностей и позволяет выбирать глубину входа внутри этой balanced zone.
Moving Averages model
MA-модель делает больше, чем просто «касается быстрой средней»: перед входом она ещё валидирует ближайший подходящий фрактал слева.
Classic Structure Reversal
Classic Reversal становится актуален только тогда, когда сама структура уже повернулась; это не просто pullback-модель с другим стопом.
Classic Structure via primary liquidity sweep
Эта вариация открывается на первом важном structural-нарушении и трактует его как sweep, а не как полноценный reversal regime change.
Classic Structure Trend
Classic Trend участвует на pullback внутри активной структуры и не требует, чтобы направление самой структуры успело поменяться.
Classic Structure family
Classic Structure — это общий structural-layer для трёх отдельных страниц: trend continuation, primary liquidity sweep и reversal structure.
Larry-Williams model
Larry-Williams работает с границами range и поддерживает как прямое участие по breakout, так и return-entry после raid назад внутрь диапазона.
Box-Fractal model
Box-Fractal использует подтверждённый fractal-range как базу для entry и stop, а не входит по первому же экстремуму.
Position Manager
Position Manager выводит каждую открытую позицию в отдельную live-кнопку на графике и даёт управлять тейками, безубытком, стопом и объёмами без выхода из сценария Lazy Trader.
STATUS canvas
Status canvas собирает Direction, Start After, End At, Time и Models в одну live-карту: видно, что уже совпало, что ещё ждёт подтверждения и почему план сейчас в RUN или WAIT.
START AFTER menu
Start After не выбирает сторону сделки, а задаёт, что должно произойти до того, как план вообще получит право начать оценивать входы.
DIRECTION menu
Direction задаёт сторону работы плана: фиксированный long / short либо динамический bias через box, MA или swing-логику.
Автоматическое определение направления
Этот раздел объясняет связку Direction и Start After — именно там у большинства пользователей и формируется рыночный bias плана.
TIME menu
TIME — это session-логика: окна торговли, овернайты, дни недели, daily close, Friday close и тайминговые ограничения брокера.
END AT menu
END AT задаёт момент, после которого план перестаёт искать новые позиции, что не равно немедленному закрытию уже открытых сделок.
Что делает Lazy Trader
Этот раздел нужен, когда главный вопрос не «какую кнопку нажать», а «какую роль Lazy Trader вообще играет в процессе».