Algoritmi, metodi di soluzione, confronto delle loro prestazioni - pagina 21

 

Se il profiler deve essere creduto, sullo stesso TC OrderSend (quinta parte) impiega l'88% del tempo.

Se lo trasferisco su una macchina virtuale, ci vuole solo il 2%.

Non capisco perché ci sia questa differenza.

 
fxsaber:

Se il profiler deve essere creduto, OrderSend (a cinque vie) impiega l'88% del mio tempo sullo stesso TC.

Se lo trasferisco su una macchina virtuale, ci vuole solo il 2%.

Perché una tale differenza, non capisco.

Posso solo indovinare.

OrderSend invia un messaggio al sito MQL, mentre la macchina virtuale non toccaOrderSend e quindi lavora più velocemente))

Nelle ultime build, il terminale stesso è sovraccaricato durante l'ottimizzazione e i test, tranne che per gli agenti tester.

Non esiste una cosa del genere nelle build precedenti!

 
Sergey Chalyshev:

Posso solo speculare.

OrderSend - invia un messaggio al sito MQL, e il virtuale non tocca OrderSend e quindi funziona più velocemente ))))

Nelle ultime build, durante l'ottimizzazione e i test, ad eccezione degli agenti tester, il terminale stesso è sovraccaricato.

Non c'è un tale compito nelle build precedenti!

Ho eseguito il profiler su dati storici. Pertanto, l'invio da qualche parte è escluso.

 
Nelle nuove build, si carica il terminale stesso durante i test e l'ottimizzazione? Nel task manager, quanto sta consumando?
 
fxsaber:

Se il profiler deve essere creduto, sullo stesso TC OrderSend (quinta parte) impiega l'88% del tempo.

Se lo trasferisco su una macchina virtuale, ci vuole solo il 2%.

Perché una tale differenza, non capisco.

L'88% di cosa? Se dal 2%, allora va bene.

 
fxsaber:

Se il profiler deve essere creduto, OrderSend (a cinque vie) impiega l'88% del mio tempo sullo stesso TC.

Se lo trasferisco su una macchina virtuale, ci vuole solo il 2%.

Non capisco perché ci sia questa differenza.

Controllare il margine e altre condizioni di trading.

Se si aggiorna il Virtual a MT5 tester, sarà quasi lo stesso.

 
Bene, sì, bene, sì.
 
Andrey Khatimlianskii:

Controllare i margini e altre condizioni di trading.

Se si aggiorna Virtual allo stato di tester di MT5, è più o meno lo stesso.

Modalità Pips. Molto probabilmente il profiler sta mentendo.

 
Andrey Khatimlianskii:

Se si aggiorna Virtual a un tester MT5, è quasi lo stesso.

Secondo le cifre la differenza è più di due ordini di grandezza

 
Andrei Trukhanovich:

Se si deve credere alle cifre, la differenza è più di due ordini di grandezza

Dati citati dal mio grande EA, che corro nell'ottimizzatore. Ma sembra che abbia iniziato a capire dove sono i freni. Ecco un semplice Expert Advisor.

#include <MT4Orders.mqh>

//#define VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
//#include <fxsaber\Virtual\Virtual.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

input int Offset = 10000;
input int inFakeRange = 0;

void OnTick()
{
  static bool FirstRun = true;
  static int Sign = 1;
  
  if (FirstRun)
    FirstRun = (OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - Offset * _Point, 0, 0, 0) == -1);
  else if (OrderSelect(0, SELECT_BY_POS))  
  {
    OrderModify(OrderTicket(), OrderOpenPrice() + Sign * _Point, 0, 0, 0);
    
    Sign = -Sign;
  }    
}

È quasi impossibile aspettare il suo profilo sulle zecche - ci vuole troppo tempo. Pertanto, l'ho lanciato nella modalità Optimizer.

optimization finished, total passes 11
optimization done in 0 minutes 55 seconds
shortest pass 0:00:04.300, longest pass 0:00:06.442, average pass 0:00:05.058


Se decommento le due linee evidenziate e imposto il parametro di input Virtual = true, diventa così.

optimization finished, total passes 11
optimization done in 0 minutes 07 seconds
shortest pass 0:00:00.355, longest pass 0:00:01.208, average pass 0:00:00.590


La differenza è di un ordine di grandezza. Il profiler mostra una differenza ancora maggiore. Faccio tutto solo in base ai pip e ai tick reali.

Motivazione: