Errores, fallos, preguntas - página 2745
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Pregunta de optimización. En el probador, en cada garrapata necesito obtener una garrapata para seguir trabajando. Yo lo hago así.
Está claro que esta variante será más lenta:
Pero SymbolInfoTick también es más lento porque su parámetro de cadena no se pasa por referencia.
¿Es posible tener una sobrecarga regular de SymbolInfo* donde la cadena se pasa por referencia?
Es mejor tener
En el Optimizer, estas funciones son llamadas decenas de miles de millones de veces.
Llamar a Symbol() SIEMPRE se expande para acceder a la variable global _Symbol, así como a Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason()
La llamada Symbol() SIEMPRE se despliega para acceder a la variable global _Symbol, al igual que Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason()
¿Y el paso de la cadena por referencia?
¿Y pasar una cadena por referencia?
Aparentemente la razón es uno de los problemas irresolubles en MQL - pasar un literal como parámetro por const ref.
¿Es posible tener sobrecargas regulares de SymbolInfo*, donde la cadena se pasa por referencia?
¿Cómo ayudarían?
Sigue devolviendo 1, no 2
¿Y pasar una cadena por referencia?
La cadena se pasa por referencia.
Hace tiempo que pasamos a "copy_on_write string" -> cuando se copia una cadena a otra el contenido no se copia inmediatamente (como era antes), el recuento de referencias del buffer de la cadena se incrementa
. Por ejemplo, el recuento de referencias se incrementa cuando se pasa la cadena por valor, como parámetro y se disminuye después de la llamada.
Cuando
se modifica una cadena, se comprueba el recuento de referencias del buffer y, si hay más de una referencia, la cadena que se va a modificar se "desvincula" del buffer antiguo y se asigna uno nuevo.
¿Cómo van a ayudar?
Sigue devolviendo (llamado) 1, no 2
La variable _Symbol es constante
Entonces la sobrecarga tampoco ayudará.
habrá un error ya en tiempo de compilación
La cadena se pasa por referencia.
Hace tiempo que pasamos a "copy_on_write string" -> cuando se copia una cadena a otra el contenido no se copia inmediatamente (como antes), el número de referencias al buffer de la cadena se incrementa
Por ejemplo, el número de referencias se incrementa cuando la cadena se pasa por valor, como parámetro y se reduce después de la llamada.
Cuando
se modifica una cadena, se comprueba el recuento de referencias del buffer y, si hay más de una referencia, la cadena modificada se "desvincula" del buffer antiguo y se le asigna uno nuevo.
¿Está todo definido a nivel de compilación?
Error del compilador:
¿Está todo definido a nivel de compilación?
No. Todavía no se conoce en tiempo de compilación.