Deseos para MT5 - página 70

 
MetaDriver:

A los compiladores, una sugerencia.

Por favor, haga la transferencia de estructuras pequeñas por valor, no sólo por referencia. Porque toda la aritmética compleja/racional es terriblemente lenta.

Por favor, explique cómo puede ralentizar el paso por referencia en lugar de la transmisión de valores de la estructura. Lo mejor de todo con un ejemplo.


En cuanto permitimos que se pasen las estructuras por el valor, empieza el verdadero frenazo. Los desarrolladores utilizarán, sin saberlo, el paso de enormes estructuras por la pila en todas partes y sus programas se ralentizarán.

 
MetaDriver:

La herencia múltiple es definitivamente mala.

Ы? ¿Cómo se heredan dos interfaces?

Soy partidario de fusionar con los agudos en lugar de con los positivos. Ahí tiene mucho más sentido, dadas las generaciones de experiencia.

Al menos con lo básico. Tales expresiones son una flagrante trolleada.
 
MetaDriver:

Una petición a los compiladores.

Por favor, haga la transferencia de estructuras pequeñas por valor, no sólo por referencia, porque toda la aritmética compleja/racional es terriblemente lenta.

Simplemente establezca un límite (a su discreción - 32 o 64 bytes) después del cual el compilador no pasa la estructura pasada por valor y requiere estrictamente el paso por referencia.

También estaría muy bien poder devolver pequeñas estructuras como resultado de la función.

--

Incluso voto por la sobrecarga del operador. Espero poder hacerlo algún día. Parece que el rumbo de "fusionar con C++" está tomado y apoyado en general.

La sintaxis funcional para las operaciones aritméticas con objetos matemáticos no estándar es muy incómoda, y además ralentiza mucho,

porque no puede ser reemplazado por sustituciones en línea y requiere el gasto de llamadas a funciones.

No. Estructuras sólo por referencia. No hay excepciones. Danos algunas cifras de los frenos para que podamos estimar la magnitud de la catástrofe.

Solíamos tener una opción para devolver estructuras como resultado de una función. Finalmente anulamos esta opción debido a la ambigüedad de la implementación (nuestra depuración interna). Decidimos que como las estructuras se pasan por referencia, pasar la estructura resultante como parámetro.

Es posible sobrecargar los operadores. Pero ahora no.

 
Desarrolladores: por favor, hagan que OnTimer() funcione en los indicadores que no están unidos a un gráfico.
 
Lizar:
Desarrolladores: por favor, hagan que OnTimer() funcione en los indicadores que no están unidos al gráfico.
+1000
 
stringo:

1. no. estructuras sólo por referencia. No hay excepciones. Para los frenos, dé cifras, para que podamos estimar la escala del desastre.

2. Antes teníamos una opción para devolver estructuras como resultado de una función. Finalmente anulamos esta opción debido a la ambigüedad de la implementación (nuestras disputas internas). Decidimos que como las estructuras se pasan por referencia, pasar la estructura resultante como parámetro.

3. La sobrecarga de operadores es posible. Pero ahora no.

1. :) Se cancela Catastrophe, lo he medido y me ha sorprendido mucho, los frenos no están en él (el guión está en el trailer). Pero la sintaxis en muchos casos es más conveniente, cuando se pueden sustituir las expresiones en los parámetros. Sí. Bueno, puedo vivir con esto. Es soportable. Lo principal es que no se ralentiza.

Pero, ¿podemos volver a asignar estructuras? La asignación de estructuras es perfectamente legal, así que permitamos que vuelva también. El programa es mucho más legible cuando la asignación del resultado de la ejecución de la función está sintácticamente unificada:

Y = Func(X); - se ve mucho más claro al leer el código brevemente que Func(X, Y); // debe adivinar que Y es un parámetro de salida.

No, a Straustrup no le gustaría tu solución... no está bien de alguna manera... :)

3. ¡Oh! Eso es bueno. Gracias por eso.

Archivos adjuntos:
 
MetaDriver:

También podemos reasignar estructuras legalmente, así que permitamos que se reasignen también. El programa es mucho más legible cuando la asignación del resultado de una función está sintácticamente unificada:

Te diré un secreto. Sólo hazlo.

Resulta que no la cortaron. Puede devolver estructuras simples. Pero ten en cuenta que en este caso tendrás que añadir 2 copias extra - copiar en la estructura de tempo en la pila y copiar desde la estructura de tempo en la estructura de resultados.

Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - Документация по MQL5
 

¿Por qué la clase CExpert de la biblioteca estándar se declara así en la documentación?

class CExpert : public CObject

y en el archivo Expert.mqh vemos esta declaración?

class CExpert : public CExpertBase
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Es necesario un artículo sobre las clases para crear y probar estrategias de negociación...
 
Lizar:
Desarrolladores: por favor, hagan que OnTimer() funcione en los indicadores que no están unidos al gráfico.
Por el momento es poco probable. La función para establecer el temporizador debería llamarse ChartSetTimer(), este nombre refleja su comportamiento con mayor precisión.
Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5