#property strict #include "../Include/EnhancedEfficientGateSystem.mqh" int failures=0,checks=0; void Check(bool ok,string label) { checks++; if(!ok) { failures++; Print("[GATE-SAFETY FAIL] ",label); } } int OnInit() { CEfficientGateManagerEnhanced manager; manager.Initialize(false); TradingSignal signal; signal.Init(); signal.id="gate-safety"; signal.strategy="test"; signal.symbol=_Symbol; signal.timeframe=_Period; signal.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK); signal.sl=signal.price-100*_Point; signal.tp=signal.price+200*_Point; signal.volume=0.01; signal.confidence=0.01; CSignalDecision decision; string reason; for(int mode=0;mode<=4;mode++) { manager.SetMode((EGateProcessingMode)mode); signal.confidence=0.01; bool passed=manager.ProcessSignalEnhanced(signal,decision,reason); Check(!passed,"Low-confidence risk failure blocks every processing mode"); Check(!decision.gate_results[0],"G1 result records failure"); Check(decision.gate_timestamps[0]>0,"G1 actually evaluated"); Check(reason!="","Blocking reason retained"); Check(decision.original_volume==0.01 && decision.signal_id==signal.id,"Original fields retained"); } signal.volume=0; Check(!manager.ProcessSignalEnhanced(signal,decision,reason),"Explicit zero volume rejected"); manager.Shutdown(); PrintFormat("[GATE-SAFETY RESULT] checks=%d failures=%d",checks,failures); return failures==0 ? INIT_SUCCEEDED : INIT_FAILED; } void OnTick() {} double OnTester() { return failures==0 ? checks : -failures; }