Errori, bug, domande - pagina 1490

 
Vladislav Andruschenko:

in generale i risultati sono ambigui, il test è approssimativo - uno veloce..:

lo script mostra semplicemente l'ora e il prezzo sul tester:

..................

La memoria virtuale è in uso? Provate a disabilitarla. (solo se Windows è su SSD)

In Windows 7 cliccate con il tasto destro su "Risorse del computer", poi "Proprietà", poi nell'elenco a sinistra "Proprietà avanzate del sistema" e da sinistra a destra in sequenza:

Sono su HDD, quindi viene usata la memoria virtuale

 
tutto è spento
 
Vladislav Andruschenko:
tutto è spento.
Un agente è comprensibile. I compiti più complessi del mondo sono risolti da agenti.
 
Signori, amministratori e utenti esperti di Metatrader4, per favore aiutatemi ancora una volta.
Ho lavorato con molti utenti di MetaTrader4 e ho lavorato con molti utenti di MetaTrader4 per molto tempo. Cosa dovrebbe fare nel suo terminale per evitare un tale scenario in futuro?
 
Artem Prischepa:
Signori, amministratori e utenti esperti di Metatrader4, per favore aiutatemi ancora una volta.
Un abbonato del mio segnale si è lamentato che uno dei suoi scambi è stato duplicato, mentre ce n'era solo uno sul mio conto. Cosa devo regolare nel mio terminale per evitare un tale scenario in futuro?
Dal lato dell'abbonato, l'apertura di due terminali comporta la duplicazione del segnale ricevuto.
 
lilita bogachkova:
Dal lato dell'abbonato, l'apertura di due terminali provoca una duplicazione del segnale ricevuto.
Se possibile, si prega di spiegarlo in modo più dettagliato. Se solo 1 terminale è iscritto al segnale, come può un secondo terminale aperto duplicare l'apertura di una posizione?
 
Maxim Khrolenko:
Vorrei saperne di più. Se solo 1 terminale è iscritto al segnale, come può la presenza di un 2° terminale aperto duplicare l'apertura di una posizione?

Ho lasciato il mio computer in funzione e ho aperto un terminale su un altro computer per testare le strategie (stesso conto), entrambi i terminali funzionano con i portatili. Guardo il conto e si apre un'operazione, poi un'altra, poi un'altra, e il lato del segnale è dimezzato. Ho chiuso un terminale e le operazioni hanno smesso di duplicarsi.

 

MT4. Voglio attirare l'attenzione sulla differenza nell'ordine di inizializzazione delle variabili globali e delle variabili esterne. Non è menzionato nella documentazione.

La variabile extern si trova nello scope globale e dal tipo di variabile (globale o locale) si riferisce alla globale, come è scritto nella documentazione e nel tutorial di Kovalev.

Poiché la documentazione non dice nulla sull'ordine di inizializzazione di extern, è logico concludere che l'ordine di inizializzazione di extern è lo stesso di quello della variabile globale stessa.

In effetti, le differenze sono significative. Le variabili globali a e b sono inizializzate una volta prima dell'esecuzione della prima funzione init; mantengono i loro valori iniziali (o cambiano nel codice) se il timeframe o il simbolo sul grafico è stato cambiato.

La variabile extern int c non salva il valore cambiato nel codice e, se il timeframe o lo strumento sul grafico è stato cambiato, prende il valore iniziale specificato. Il codice qui sotto lo mostra.

Questo è importante da sapere per capire perché, a parità di condizioni, i risultati del codice eseguito dalla finestra "Proprietà" o dalla ricompilazione differiscono dai risultati del codice eseguito cambiando il timeframe o il simbolo.

Qui sotto c'è il codice che mostra questo. Cambiando più volte il timeframe o lo strumento possiamo vedere che a e b crescono, mentre c mantiene il suo valore originale.

extern int c=1;
int a=1,b=1;
void  OnInit()
  {Print(" a=",a," b=",b," c=",c);
  a++;b++;c++;
  }


 
Yuri Evseenkov:

MT4. Voglio attirare l'attenzione sulla differenza nell'ordine di inizializzazione delle variabili globali e delle variabili esterne. Non è menzionato nella documentazione.

Sì, è così.

#property strict
extern int c=1;
int a=1,b=1;
int OnInit()
  {
   Print(" a=",a," b=",b," c=",c); a++;b++;c++;
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason) { }
void OnTick() { }


 
C'è un'opzione sul server MT4 per disabilitare la funzione CloseBy?
Motivazione: