Errori, bug, domande - pagina 2310

 
ExpertRemove non funziona correttamente in modalità Ottimizza.
input int Range = 0; // 1 .. 10

bool FuncInit()
{
  ExpertRemove();
  
  return(true);
}

int Count = 0;

void OnTick()
{
  static const bool Init = FuncInit();
  
  Count++;
}

double OnTester()
{
  return(Count);
}


Ottimizzazione dell'esecuzione. Potete vedere dal codice che tutti i passaggi dovrebbero essere terminati da ExpertRemove. Ma questo non succede:

Core 5  pass 8 tested with error "expert removed itself in global initialization function" in 0:00:00.312
Core 5  pass 9 returned result 331851.00 in 0:00:00.125
Core 4  pass 6 tested with error "expert removed itself in global initialization function" in 0:00:00.265
Core 4  pass 7 returned result 331851.00 in 0:00:00.140
Core 1  pass 0 tested with error "expert removed itself in global initialization function" in 0:00:00.312
Core 1  pass 1 returned result 331851.00 in 0:00:00.125
Core 3  pass 4 tested with error "expert removed itself in global initialization function" in 0:00:00.296
Core 3  pass 5 returned result 331851.00 in 0:00:00.156
Core 8  pass 2 tested with error "expert removed itself in global initialization function" in 0:00:00.265
Core 8  pass 3 returned result 331851.00 in 0:00:00.140
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 01 seconds
Statistics      shortest pass 0:00:00.125, longest pass 0:00:00.156, average pass 0:00:00.137
Statistics      local 10 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

La metà dei passaggi ha ignorato ExpertRemove. È riproducibile?


ZY Questo causa discrepanze tra i singoli passaggi e le ottimizzazioni.

 
fxsaber:
typedef void (*FUNC)();
void f1() {};

void f2()
{
   f1();
}

void f2( FUNC g) 
{
   g();
}

Questo è essenzialmente lo stesso di una singola funzione con un parametro predefinito. questo è di solito il modo in cui viene gestito, quindi non è un workaround o una stampella, è una soluzione perfettamente normale.

 
TheXpert:

In effetti, è la stessa cosa di una funzione con un parametro predefinito. Di solito è così che si risolve, quindi non è un workaround o una stampella, ma una soluzione perfettamente normale.

L'opzione di sovraccarico è comprensibile. Ma non è affatto flessibile creare una cosa del genere per ogni funzione. Non si può fare bello anche in C++?

 
fxsaber:

L'opzione di sovraccarico è comprensibile. Ma non è affatto flessibile creare una cosa del genere per ogni funzione. Non possiamo farlo bene anche in C++?

Non so, C++ è più flessibile con le costanti, ma non ho lavorato con i puntatori di funzione come parametri predefiniti

UPD g++ mangia il tuo codice
 
TheXpert:

hz, C++ è più flessibile con le costanti, ma non ho lavorato specificamente con i puntatori di funzione come parametri predefiniti

UPD g++ mangia il tuo codice a pieni voti

Grazie per le informazioni!

 
fxsaber:

Come si ottiene un valore predefinito per il parametro di ingresso di una funzione?

Puoi usare il codice in stile python

typedef void (*FUNC)();

void f0() {Print(__FUNCSIG__);};
void f1() {Print(__FUNCSIG__);};

void f2( FUNC g = NULL ) {
   if (g == NULL){g = f1;}
   
   g();
}


void OnStart()
{
   f2();
   f2(f0);
}
 
Sergey Dzyublik:

Puoi usare il codice in stile python

Grazie, non sapevo del NULL.

 

Nel rapporto Tester, quando si calcola l'aspettativa matematica di due posizioni crollate per CloseBy, essa viene divisa per due, invece che per uno. Da qui si ottengono valori sbagliati nel rapporto.


E tali disavventure a CloseBy nel rapporto


 

Привет

Ho affittato questo [nome prodotto Mercato è stato cancellato dal moderatore] per un me e non sono stato in grado di cambiare le impostazioni, posizione numero tre 3 max

come cambiare il numero di posizioni multiple di acquisto e vendita allo stesso tempo

Philip

 
foonet:

Le discussioni sui prodotti Market sono proibite sul forum, mi dispiace.
Le discussioni sui prodotti Market sono proibite sul forum, mi dispiace.