Caractéristiques du langage mql5, subtilités et techniques - page 85

 
Nikolai Semko:

C'est très intéressant...
Savez-vous pourquoi ça se passe comme ça ?

Quel est le mécanisme ?

C'est difficile à dire exactement. Lorsque vous savez à l'avance qu'une variable ne changera pas, vous pouvez trouver une manière plus élégante de la stocker, résoudre les boucles et autres optimisations du compilateur.

Je vous recommande donc d'utiliser const autant que possible, non seulement pour l'autocontrôle mais aussi pour le compilateur.

 
fxsaber:

C'est difficile à dire avec certitude. Lorsque vous savez à l'avance que la variable ne changera pas, vous pouvez trouver une manière plus élégante de la stocker, en découvrant des cycles et d'autres optimisations du compilateur.

Par conséquent, je recommanderais non seulement à l'autocontrôle, mais aussi au compilateur d'utiliser const autant que possible.

Avez-vous vérifié les autres fonctions StringXXX ? Peut-être qu'ils sont tous lents : -D
 
Alain Verleyen:
Avez-vous vérifié les autres fonctions StringXXX ? Peut-être qu'ils sont tous lents : -D

Je ne l'ai pas fait. J'en avais besoin pour ça.

Скрипты: 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)));
}

Résultat(Libération).

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 l'état actuel des choses, ces tests ne sont pas tout à fait objectifs en raison de la capacité du compilateur à optimiser ce type de code. Vous avez une seule et même chaîne de caractères qui est analysée plusieurs fois, alors que vous devez analyser une chaîne différente à chaque itération.

 
Alexey Navoykov:

En l'état actuel des choses, ces tests ne sont pas tout à fait objectifs en raison de la capacité du compilateur à optimiser ce type de code. Vous avez une seule et même chaîne de caractères qui est analysée plusieurs fois, alors que vous devez analyser des chaînes différentes à chaque itération.

J'ai envisagé cette circonstance mais je n'ai pas établi de code plus lourd. Le résultat est le même.

 

Je vais le dupliquer ici, il s'est perdu.

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégie

FAQ des débutants MQL5 MT5 MetaTrader 5

Vitaly Muzichenko, 2018.04.18 14:54

Pouvez-vous me dire, après le test en mode multidevise dans le testeur nous voyons le résultat seulement ..., cependant, nous ne voyons rien d'autre que le résultat global.

J'ai rencontré quelque part, soit dans un article, soit dans kodobase, un code qui montre les résultats pour chaque symbole séparément. Qui sait quoi ?

 
Vitaly Muzichenko:

Je vais le dupliquer ici, il a dû se perdre là-bas.

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

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

J'ai trouvé ça, mais c'est un peu différent.

Merci !

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Lancement de la version beta de MetaTrader 5 build 1795 sur MetaQuotes-Demo

fxsaber, 2018.04.24 09:37

Testeur
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'est-ce que le dernier prix a à voir avec un symbole ayant ces paramètres ?

Vous devez mettre à zéro SYMBOL_TICKS_BOOKDEPTH, sinon (dans la capture d'écran = 9) le testeur attendra le dernier prix (même s'il n'y en a pas) comme ci-dessus dans le post.

Donc, après "Copier de :", gardez un œil sur ce paramètre.
 
Je l'ai vu dans le SB, je ne savais pas que c'était une possibilité.
template <typename T>
struct TMP
{
  T Tmp;
};

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