Errori, bug, domande - pagina 2745
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Domanda di ottimizzazione. Nel tester, su ogni segno di spunta ho bisogno di ottenere un segno di spunta per un ulteriore lavoro. Io lo faccio in questo modo.
È chiaro che questa variante sarà più lenta:
Ma SymbolInfoTick è anche più lento perché il suo parametro stringa non è passato per riferimento.
È possibile avere un regolare sovraccarico di SymbolInfo* dove la stringa è passata per riferimento?
È meglio avere
In Optimizer, queste funzioni sono chiamate decine di miliardi di volte.
Chiamare Symbol() espande SEMPRE l'accesso alla variabile globale _Symbol, così come Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason()
La chiamata Symbol() si svolge SEMPRE per accedere alla variabile globale _Symbol, così come Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason()
E il passaggio di una stringa per riferimento?
E passare una stringa per riferimento?
Apparentemente la ragione è uno dei problemi irrisolvibili in MQL - passare un letterale come parametro per const ref.
È possibile avere sovraccarichi regolari di SymbolInfo*, dove la stringa è passata per riferimento?
Come potrebbero aiutare?
Restituisce ancora 1, non 2
E passare una stringa per riferimento?
La stringa viene passata per riferimento.
Siamo passati da tempo a "copy_on_write string" -> quando si copia una stringa in un'altra il contenuto non viene copiato immediatamente (come era prima), il numero di riferimenti al buffer delle stringhe viene aumentato
Per esempio, il numero di riferimenti viene aumentato quando si passa una stringa per valore, come parametro e viene ridotto dopo la chiamata.
Quando
una stringa viene cambiata, viene controllato il conteggio dei riferimenti al buffer e se c'è più di un riferimento, la stringa da cambiare viene "scollegata" dal vecchio buffer e ne viene allocato uno nuovo.
Come possono aiutare?
Restituisce ancora (chiamato) 1, non 2
La variabile _Symbol è costante
Allora anche il sovraccarico non aiuterà.
ci sarà un errore già al momento della compilazione
La stringa viene passata per riferimento.
Siamo passati da tempo a "copy_on_write string" -> quando si copia una stringa in un'altra il contenuto non viene copiato immediatamente (come era prima), il numero di riferimenti al buffer della stringa viene aumentato
Per esempio, il numero di riferimenti viene aumentato quando si passa una stringa per valore, come parametro e diminuito dopo la chiamata.
Quando
una stringa viene cambiata, viene controllato il conteggio dei riferimenti al buffer e se c'è più di un riferimento, la stringa cambiata viene "scollegata" dal vecchio buffer e gliene viene assegnato uno nuovo.
È tutto definito a livello di compilazione?
Errore del compilatore:
È tutto definito a livello di compilazione?
No. Non è ancora noto al momento della compilazione.