Implementaciones alternativas de funciones/enfoques estándar - página 2

 
Renat Fatkhullin:

En 2016, la mayoría de los compiladores de C++ han llegado a los mismos niveles de optimización.

MSVC hace que uno se pregunte sobre las mejoras con cada actualización, e Intel C++ como compilador se ha fusionado - nunca se ha curado realmente de su "error interno" en proyectos grandes.

Otra de nuestras mejoras en el compilador en la compilación 1400 es que es más rápido en la compilación de proyectos complejos.

Si no fuera por este diálogo, probablemente no nos hubiéramos enterado. Se agradecería más información sobre el gran trabajo que están realizando.
 
fxsaber:

Sobre el tema. Hay que crear alternativas a las funciones estándar, porque a veces dan una salida equivocada. Este es un ejemplo de la alternativa SymbolInfoTick

Puede llamar a SymbolInfoTick en cada evento NewTick en el probador y sumar el campo de volumen para conocer la rotación de las acciones. Pero no, no se puede. Tengo que hacer un MySymbolInfoDouble mucho más lógico.

Bienvenido a la programación, donde tú eres el creador.

Te damos la herramienta más completa, donde puedes hacer lo que quieras.

 
Renat Fatkhullin:

Puedes optimizar todo lo que te rodea.

Es un proceso interminable. Pero el 99% de las veces no es económicamente viable.

No estamos hablando de optimización, sino de llevar la antigua función a las nuevas realidades. Claro, podrías no haber escrito NormalizeDouble en absoluto. Y la gente habría hecho su propia variante. Pero lo has creado para ahorrar tiempo. Ahora no ha sido suficiente. Y sería bueno para arreglar la vieja bicicleta para satisfacer las mismas herramientas de stock.
 
fxsaber:
No se trata de optimizar, sino de llevar la antigua función a la nueva realidad. Está claro que podría no haber escrito NormalizeDouble en absoluto. Y la gente habría hecho su propia variante. Pero lo has creado para ahorrar tiempo. Ahora no ha sido suficiente. Y sería bueno para arreglar la vieja bicicleta para satisfacer las mismas herramientas de stock.
Gracias, lo comprobaremos y veremos si podemos cambiar la biblioteca.
 

Por cierto, no hace mucho tiempo @iliyas sugirió insertar un montón de funciones del sistema en tiempo de compilación como código fuente MQL5, para que pudieran participar en el inlining y la máxima optimización.

Al principio no aprecié la idea, pero ahora veo que sería brillante. El mismo MSVC lo hace.

 
Renat Fatkhullin:
Gracias, lo comprobaremos y veremos si podemos cambiar la biblioteca.

Lo has entendido mal. No son bibliotecas, sino NormalizeDouble. Para añadir una sobrecarga.

double NormalizeDouble( double Value, double TickSize );

Para normalizar los precios y los lotes cuando TickSize = 25, VolumeStep = 0.5

Por ejemplo, la normalización tendría el siguiente aspecto

NormalizeDouble(Price, 0.00001) // Нормализация до пятого знака
NormalizeDouble(Price, 10.0) // Нормализация цены для RTS-9.16
NormalizeDouble(Price, 25.0) // Нормализация цены для MIX-9.16
 
Renat Fatkhullin:

Por cierto, no hace mucho tiempo @iliyas sugirió insertar un montón de funciones del sistema en tiempo de compilación como códigos fuente MQL5, para que pudieran participar en el inlining y maximizar la optimización.

No aprecié la idea de inmediato, pero ahora veo que sería genial. El mismo MSVC lo hace.

Resulta que #import ex5 es el mal de la optimización.

Preste atención a las características del preprocesador

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

¿Cómo puedo enumerar secuencialmente?

Alexey Navoykov, 2016.09.01 23:20

Ya he implementado el método anterior, y no es tan difícil de mostrar cómo utilizar el número fijo de argumentos en MQL5, ya que el número de macros se limita a 8. Así que tengo sólo 3 valores para enum.

En cuanto a la apariencia teórica, probablemente sea más rápido crear una función propia para el análisis sintáctico de enum. Los desarrolladores ya han prometido crear algo.


Resulta que se pueden crear construcciones muy astutas y fáciles de usar.

 
fxsaber:

Lo has entendido mal. No son bibliotecas, sino NormalizeDouble. Para añadir una sobrecarga.

Para normalizar los precios y los lotes cuando TickSize = 25, VolumeStep = 0.5

Por ejemplo, la normalización tendría el siguiente aspecto

No se puede sobrecargar de esta manera. Las mismas firmas de funciones.

Pero la idea es clara: la función de normalización teniendo en cuenta la granulación de las garrapatas.

 
Renat Fatkhullin:

No se puede sobrecargar de esta manera. Las mismas firmas de funciones.

No parece que haya ningún problema. En una variación, el segundo parámetro es int (era), en la otra es double (aparecerá).

Pero la idea es clara: la función de normalización teniendo en cuenta la granulación de la garrapata.

¡Exactamente!
 

fxsaber

Hay un error en su código