dualea/Experts/Advisors/DualEA/Tests/Test_PaperExecutionSafety.mq5
28 lines
1.2 KiB
MQL5
Princeec13
2026-10-28 00:31:51 -04:00
#property strict
#include "../Include/PaperExecutionSafety.mqh"
int failures=0;
int checks=0;
void Check(bool passed,string label)
{
checks++;
if(!passed) { failures++; Print("[SAFETY FAIL] ",label); }
}
int OnInit()
{
Check(!PaperAccountAllowed(false,ACCOUNT_TRADE_MODE_REAL),"real account refused");
Check(!PaperAccountAllowed(false,ACCOUNT_TRADE_MODE_CONTEST),"contest refused");
Check(PaperAccountAllowed(false,ACCOUNT_TRADE_MODE_DEMO),"demo allowed");
Check(PaperAccountAllowed(true,ACCOUNT_TRADE_MODE_REAL),"tester simulated account allowed");
for(int tester=0;tester<2;tester++)
for(int mode=0;mode<3;mode++)
for(int enabled=0;enabled<2;enabled++)
for(int shadow=0;shadow<2;shadow++)
{
bool expected=(tester==1 || mode==ACCOUNT_TRADE_MODE_DEMO) && enabled==1 && shadow==0;
Check(PaperExecutionAllowed((bool)tester,mode,(bool)enabled,(bool)shadow)==expected,"execution matrix");
}
PrintFormat("[SAFETY RESULT] checks=%d failures=%d",checks,failures);
return failures==0 ? INIT_SUCCEEDED : INIT_FAILED;
}
void OnTick() {}
double OnTester() { return failures==0 ? checks : -failures; }