CRITICAL FIX: - MoveToBreakeven() now validates against broker stop level before modification - Prevents "Invalid stops" error causing infinite retry spam - Marks breakeven_applied=true even on failed modify to stop retries RELATED FIXES: - Disabled analyzer cleanup in OnDeinit to prevent error 506 pointer access crash - Analyzer GenerateAnalysisReport() file I/O unsafe during shutdown - TODO: Refactor analyzer report generation to be shutdown-safe Changes to PositionManager_PME_Complete.mqh: - Lines 854-876: Added ValidateStopLoss() check in MoveToBreakeven() - Failsafe: Mark BE attempted even if modify fails post-validation - Prevents tick-spam when BE trigger met but SL too close to market price Changes to ERMT_PME_2.1_M5.mq5: - Lines 893-906: Commented out g_analyzer cleanup block in OnDeinit() - Temporary disable pending shutdown-safe refactor Testing: - Before: "failed modify #7... [Invalid stops]" spam, backtest hangs - After: Clean execution, BE either succeeds or silently skips - Parametric optimization now completes successfully Dependencies: Requires M5 v2.1 changes from previous commit
115 lines
8.7 KiB
INI
115 lines
8.7 KiB
INI
;Genetic optimization: ERMT_PME_2.1_M5, EURUSD M5, real ticks, last year
|
|
[Tester]
|
|
Expert=Advisors\ERMT_PMEx\ERMT_PME_2.1_M5.ex5
|
|
Symbol=EURUSD
|
|
Period=M5
|
|
Optimization=2
|
|
Model=4
|
|
Dates=2
|
|
ForwardMode=0
|
|
Deposit=1000
|
|
Currency=USD
|
|
ProfitInPips=1
|
|
Leverage=100
|
|
ExecutionMode=-1
|
|
OptimizationCriterion=0
|
|
[TesterInputs]
|
|
; === Management Control ===
|
|
InpInstanceID=PME2
|
|
InpManageAllPositions=true||false||0||true||N
|
|
InpMagicFilter=0||0||1||10||N
|
|
InpDefaultMode=3||0||0||4||N
|
|
InpStartLevel=1||0||0||3||N
|
|
; === Entry Mode (Backtesting) ===
|
|
InpEnableEntries=true||false||0||true||N
|
|
InpEntryMagic=77777||77777||1||777770||N
|
|
InpEntryRiskPercent=2.0||1.0||0.100000||10.000000||N
|
|
InpEntryLots=0.0||0.0||0.000000||0.000000||N
|
|
InpStopLossPoints=300||300||100||1000||N
|
|
InpTakeProfitRR=3.0||3.0||0.300000||30.000000||N
|
|
InpMinBarsBetweenEntries=10||10||1||100||N
|
|
; === Risk Protection ===
|
|
InpMaxLossPerTrade=3.0||3.0||0.300000||30.000000||N
|
|
InpMaxDailyLoss=10.0||10.0||1.000000||100.000000||N
|
|
InpMaxDrawdown=25.0||25.0||2.500000||250.000000||N
|
|
InpMaxCorrelation=0.8||0.8||0.080000||8.000000||N
|
|
; === Emergency Protection ===
|
|
InpApplyEmergencyStops=false||false||0||true||N
|
|
InpEmergencySLMultiplier=7||2.5||0.250000||25.000000||N
|
|
InpEmergencyTPMultiplier=4.0||4.0||0.400000||40.000000||N
|
|
; === Stop Loss Management ===
|
|
InpDynamicStops=false||false||0||true||N
|
|
InpTightenOnProfit=true||false||0||true||N
|
|
InpTightenThreshold=50.0||50.0||5.000000||500.000000||N
|
|
InpProtectProfits=true||false||0||true||N
|
|
; === Breakeven Settings ===
|
|
InpBreakevenEnabled=false||false||0||true||N
|
|
InpBreakevenTrigger=150||30.0||3.000000||300.000000||N
|
|
InpBreakevenOffset=50||5.0||0.500000||50.000000||N
|
|
InpMultiLevelBE=false||false||0||true||N
|
|
; === Trailing Stop ===
|
|
InpTrailingMethod=0||0||0||8||N
|
|
InpTrailStart=50.0||50.0||5.000000||500.000000||N
|
|
InpTrailDistance=30.0||30.0||3.000000||300.000000||N
|
|
InpTrailStep=10.0||10.0||1.000000||100.000000||N
|
|
InpAdaptiveTrailing=true||false||0||true||N
|
|
; === Partial Close ===
|
|
InpPartialEnabled=false||false||0||true||N
|
|
InpPartialTrigger1=50.0||50.0||5.000000||500.000000||N
|
|
InpPartialPercent1=30.0||30.0||3.000000||300.000000||N
|
|
InpPartialTrigger2=100.0||100.0||10.000000||1000.000000||N
|
|
InpPartialPercent2=25.0||25.0||2.500000||250.000000||N
|
|
; === Exit Management ===
|
|
InpUseTechnicalExits=false||false||0||true||N
|
|
InpTimeBasedExits=false||false||0||true||N
|
|
InpMaxBarsInTrade=500||500||1||5000||N
|
|
InpReduceRiskOverTime=false||false||0||true||N
|
|
; === Time Filters ===
|
|
InpUseTimeFilter=false||false||0||true||N
|
|
InpStartHour=8||8||1||80||N
|
|
InpEndHour=20||20||1||200||N
|
|
InpFridayClose=true||false||0||true||N
|
|
InpFridayCloseHour=21||21||1||210||N
|
|
; === Display Settings ===
|
|
InpShowDashboard=true||false||0||true||N
|
|
InpDashboardX=20||20||1||200||N
|
|
InpDashboardY=50||50||1||500||N
|
|
InpUpdateFrequency=2||2||1||20||N
|
|
; === System Settings ===
|
|
InpLogLevel=3||0||0||5||N
|
|
InpSaveReports=true||false||0||true||N
|
|
InpEmailAlerts=false||false||0||true||N
|
|
InpPushAlerts=false||false||0||true||N
|
|
InpSoundAlerts=true||false||0||true||N
|
|
; === M5 Bar Counting Mode ===
|
|
InpEnableM5Mode=true||false||0||true||N
|
|
InpM5Partial1=35.0||35.0||3.500000||350.000000||N
|
|
InpM5Partial2=60.0||60.0||6.000000||600.000000||N
|
|
InpM5Partial3=100.0||100.0||10.000000||1000.000000||N
|
|
InpM5Partial4=150.0||150.0||15.000000||1500.000000||N
|
|
InpM5Phase1=60||60||1||600||N
|
|
InpM5Phase2=180||180||1||1800||N
|
|
InpM5MaxBars=300||300||1||3000||N
|
|
InpM5DisasterTrigger=100.0||100.0||100||1000.000000||N
|
|
InpM5DisasterDistance=150.0||150.0||100||1000||N
|
|
InpBarCountEntry=5||3||0||0||N
|
|
; === Graduated Stop-Loss (v2.1) ===
|
|
InpUseGraduatedStops=true||false||0||true||N
|
|
InpInitialStopATR=3.5||3.5||0.5||7||Y
|
|
InpPhase1StopATR=2.5||2.5||0.250000||5||Y
|
|
InpPhase2StopATR=2.0||2.0||0.25||3||Y
|
|
InpMatureStopATR=1.5||1.5||0.25||2||Y
|
|
; === Delayed Breakeven (v2.1) ===
|
|
InpUseDelayedBreakeven=true||false||0||true||N
|
|
InpMinBarsBeforeBE=20||20||1||200||N
|
|
InpMinProfitBarsForBE=5||5||1||50||N
|
|
InpRequireProfitStability=true||false||0||true||N
|
|
; === Delayed Trailing (v2.1) ===
|
|
InpUseDelayedTrailing=true||false||0||true||N
|
|
InpMinBarsBeforeTrail=40||40||1||400||N
|
|
InpTrailMinProfit=60.0||60.0||6.000000||600.000000||N
|
|
; === Reversal Speed Tracking (v2.1) ===
|
|
InpShowReversalMetrics=true||false||0||true||N
|
|
InpAdjustForReversalSpeed=true||false||0||true||N
|
|
InpFastReversalBars=12||12||1||120||N
|
|
InpSlowReversalBars=60||60||1||600||N
|