Market validation: how to obtain test conditions for "no trading operations"?

Hello. An MT5 EA returns only "there are no trading operations" in automatic Market validation: EURUSD H1, XAUUSD D1, GBPUSD M30 and EURUSD M1 (hedging). There is no detailed Expert journal in the report.

The exact submitted EX5 trades locally on MetaQuotes-Demo, XAUUSD D1, with factory Inputs, real ticks, 20 ms delay, EUR 1000 and leverage 1:100 (2026-09-01 to 2026-09-02, exclusive). Changing only the tester deposit to EUR 100 reproduces zero trades: 27 entry opportunities are skipped because the configured 0.25% risk budget is EUR 0.25, below the calculated EUR 1.70–1.71 SL loss at the symbol minimum of 0.01 lot. History and indicator readiness show no missing-data blocks. This proves a local small-deposit explanation, not the cause of the Market result.

I have read the official publication-check article (2555). I do not want to round volume up beyond the risk budget, remove protections, or add artificial validation-only trades.

Is there a supported way to obtain the actual validator dates, deposit, leverage, symbol specification and Expert journal? If these are unavailable, what is the recommended diagnostic process for distinguishing legitimate risk-budget rejection from absent signals? Service Desk directs technical questions to this forum. Thank you.
Update: I completed 96 local diagnostic cases for the two affected EAs using factory Inputs on MetaQuotes-Demo build 6182. The matrix covers EURUSD H1, XAUUSD D1, GBPUSD M30 and EURUSD M1; 2023-02-01 to 2023-07-01 exclusive; EUR 1/10/100/1000 and leverage 1:30/1:100/1:500.

Results were reconciled against native logs and HTML order/deal records:
- 10 cases produced deals.
- 5 stopped at insufficient-margin checks.
- 27 stopped because the minimum admissible volume exceeded the configured risk budget.
- 48 had no qualifying signal/entry level.
- 6 accepted a pending order that was canceled by the existing Friday rule before activation.

Important limitation: the 24 historical XAUUSD cases used MT5's M1-based tick generation fallback, not original real ticks. The separate September 2026 gold baseline trades on real ticks. I am not claiming these local conditions match the hidden validator, or that the cause of the Market failure is established.

I have not increased risk, rounded unsafe lots upward, weakened signal filters, or introduced validation-only trades. Successful local cases demonstrate that request checking, pending placement and deal creation can work with the same EA.

Could MetaQuotes identify the actual dates, initial deposit, leverage, symbol specifications and Input overrides used for a failed validation, or provide its Expert journal? If that is not available through the seller interface, is there a supported escalation route for reviewing legitimate risk/margin rejection without altering the product's intended trading behavior?

Thank you.
Yurii Lobas:
I have read the official publication-check article (2555). I do not want to round volume up beyond the risk budget, remove protections, or add artificial validation-only trades.

There are some more:

  1. Solving Automatic Validation Problems Arising During Product Submission in MQL5 Market - blog post with some code example which should be included to be inside EA.

  2. there are no trading operations - the forum discussion thread; the users are sharing the codes/decision which they used to pass validation sucessfully

  3. How to resolve "no trading operations" validation failure? - (solved step by step) small forum thread
Yurii Lobas #:
Could MetaQuotes identify the actual dates, initial deposit, leverage, symbol specifications and Input overrides used for a failed validation, or provide its Expert journal? If that is not available through the seller interface, is there a supported escalation route for reviewing legitimate risk/margin rejection without altering the product's intended trading behavior?
I do not think MQ will provide/disclose everything concerning about how to fit EA in strategy tester's validation to pass this validation (means: how to cheat the validator).
Because this validation process is provided to secure the potential buyers, means: there should not be any limitation and EA must trade, and all necessary checking (lot size, deposit side and more) should be inside EA's code.

Your own log already shows the cause: 27 skips because the minimum lot is bigger than 0.25% of the deposit. On a small deposit, a stop-based 0.25% risk works out to less than 0.01 lot on most symbols, so the EA never trades. The validator isn't the only one who will see that. A buyer with a small account will run it, see no trades, and think it's broken.

You don't have to weaken the logic to fix this. You can make the choice visible to the user instead. I'd add two inputs: allow the minimum lot when the risk budget is too small, and the highest risk % you'll accept for that minimum lot. Then log one clear line whenever a trade is skipped:

input double InpRiskPct      = 0.25;  // Risk per trade, %
input bool   InpAllowMinLot  = true;  // Use min lot if budget is too small
input double InpMaxMinLotPct = 1.0;   // ...but only if min lot risk <= this %

double LotForRisk(double slPoints)
{
   double eq       = AccountInfoDouble(ACCOUNT_EQUITY);
   double tickVal  = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
   double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
   double minLot   = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
   double step     = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
   double lossPerLot = slPoints * _Point / tickSize * tickVal;
   if(lossPerLot <= 0 || eq <= 0) return 0;

   double lots = MathFloor(eq * InpRiskPct / 100.0 / lossPerLot / step) * step;
   if(lots < minLot)
   {
      double minLotPct = minLot * lossPerLot / eq * 100.0;
      if(!InpAllowMinLot || minLotPct > InpMaxMinLotPct)
      {
         PrintFormat("Skip: min lot %.2f would risk %.2f%% (limit %.2f%%)",
                     minLot, minLotPct, InpAllowMinLot ? InpMaxMinLotPct : InpRiskPct);
         return 0;
      }
      lots = minLot;
   }

   double margin;
   if(!OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, lots, SymbolInfoDouble(_Symbol, SYMBOL_ASK), margin)
      || margin > AccountInfoDouble(ACCOUNT_MARGIN_FREE))
   {
      Print("Skip: not enough free margin for ", lots, " lots");
      return 0;
   }
   return lots;
}

The risk stays capped, it's just capped at a number the user chose. Before you submit again, run it yourself with small deposits (100 and 1,000) at a few leverage levels, on a symbol with a wide stop like XAUUSD. If it trades there without errors, it will usually pass. If you want strict 0.25% to be the default, that's a fair choice, but the validator will probably keep failing it on small deposits. Also check XAUUSD D1: if the test period is short, a D1 strategy may not get a signal at all, even with correct sizing.