Características del lenguaje mql5, sutilezas y técnicas - página 85

 
Nikolai Semko:

Es muy interesante...
¿Tiene alguna idea de por qué ocurre así?

¿Cuál es el mecanismo?

Es difícil decirlo con exactitud. Cuando sabes de antemano que una variable no va a cambiar, puedes encontrar una forma más elegante de almacenarla, resolver los bucles y otras optimizaciones del compilador.

Así que te recomendaría que utilizaras const en la medida de lo posible, no sólo para la autocomprobación, sino también para el compilador.

 
fxsaber:

Es difícil decirlo con seguridad. Cuando se sabe de antemano que la variable no va a cambiar, se puede encontrar una forma más elegante de almacenarla, descubriendo ciclos y otras optimizaciones del compilador.

Por lo tanto, yo recomendaría no sólo para el autocontrol, sino también para el compilador para utilizar const tanto como sea posible.

¿Ha comprobado las otras funciones StringXXX? Tal vez sean todos lentos: -D
 
Alain Verleyen:
¿Ha comprobado las otras funciones StringXXX? Tal vez sean todos lentos: -D

No lo hice. Lo necesitaba para eso.

Скрипты: ThirdPartyTicks
Скрипты: ThirdPartyTicks
  • 2018.04.11
  • www.mql5.com
ThirdPartyTicks: Автор: fxsaber...
 

fxsaber:

void OnStart()
{  
  const string Str = "123.456";
  
  BENCH(Print(Bench1(1 e7, Str)));
  BENCH(Print(Bench2(1 e7, Str)));
  BENCH(Print(Bench3(1 e7, Str)));
}

Resultado(liberación).

1234559999.924436
Time[Print(Bench1(1 e7,Str))] = 1656182
1234559999.924436
Time[Print(Bench2(1 e7,Str))] = 1639179
1234559999.924436
Time[Print(Bench3(1 e7,Str))] = 147382

En realidad, estas pruebas no son del todo objetivas debido a la capacidad del compilador para optimizar dicho código. Tienes una misma cadena que se analiza varias veces, mientras que necesitas analizar una cadena diferente en cada iteración

 
Alexey Navoykov:

En realidad, estas pruebas no son del todo objetivas debido a la capacidad del compilador para optimizar dicho código. Tienes una misma cadena siendo analizada varias veces, mientras que necesitas analizar diferentes cadenas en cada iteración

He considerado esta circunstancia pero no he puesto un código más pesado. Tiene el mismo resultado.

 

Lo duplicaré aquí, se perdió

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

FAQ de principiantes MQL5 MT5 MetaTrader 5

Vitaly Muzichenko, 2018.04.18 14:54

Me puede decir, después de la prueba en modo multidivisa en el probador vemos el resultado sólo ..., sin embargo, no vemos nada más que el resultado global.

En algún lugar me encontré ya sea en un artículo o en kodobase un código que muestra los resultados para cada símbolo por separado. ¿Quién sabe qué pasa?

 
Vitaly Muzichenko:

Lo duplicaré aquí, debe haberse perdido allí

https://www.mql5.com/ru/articles/4562

Работаем с результатами оптимизации через графический интерфейс
Работаем с результатами оптимизации через графический интерфейс
  • 2018.04.05
  • Anatoli Kazharski
  • www.mql5.com
Продолжаем развивать тему обработки и анализа результатов оптимизации. В предыдущей статье было показано, как визуализировать результаты оптимизации через графический интерфейс MQL5-приложения. На этот раз усложним задачу: выберем  100 лучших результатов оптимизации и отобразим их в таблице графического интерфейса.  Кроме этого, продолжим...
 

Encontré esto, pero es un poco diferente.

Gracias.

 

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

Lanzamiento de la versión beta de MetaTrader 5 build 1795 en MetaQuotes-Demo

fxsaber, 2018.04.24 09:37

Probador
TESTER_EURUSD : real ticks begin from 2018.04.02 00:00:00
TESTER_EURUSD : 2018.04.03 00:00 - 2018.04.24 00:00  last prices absent for 15 whole days, bars built by bid prices
final balance 10000000.00 USD
OnTester result 203343
TESTER_EURUSD,M1: 1407448 ticks, 21591 bars generated. Environment synchronized in 0:00:00.172. Test passed in 0:00:00.905 (including ticks preprocessing 0:00:00.203).


¿Qué tiene que ver el último precio con el símbolo con esta configuración?

Es necesario poner a cero SYMBOL_TICKS_BOOKDEPTH, de lo contrario (en la captura de pantalla = 9) el probador esperará el último precio (incluso si no hay ninguno) como en el post anterior.

Por lo tanto, después de "Copiar de:" vigile este parámetro.
 
Lo vi en el SB, no sabía que era una posibilidad
template <typename T>
struct TMP
{
  T Tmp;
};

TMP<int>Var; // Между типом и названием переменной нет пробела