Algorithmes, méthodes de résolution, comparaison de leurs performances - page 14

 
Sergey Dzyublik:

1. cela n'a aucun sens. Les algorithmes sont comparés en général sur des résultats relatifs.
2. La solution est déjà intégrée - c'est une bibliothèque standard<Generic\ArrayList.mqh>.

1. c'est-à-dire que la vitesse de l'algorithme n'est pas importante. La solution est "conceptuellement puissante" et c'est suffisant. Ok.

2. Donc, il suffit de se brancher via le plug-in et c'est tout ? Ok.

//--------------------------------------------------------------------

Si le principal critère d'évaluation de l'algorithme est"Conceptuellement puissant", alors j'ai perdu.

Si le critère principal de l'algorithme est "Simplicité, rapidité et commodité ", je gagne.

A ce stade, nous pouvons clore le sujet.

 
fxsaber:

  1. Pour quelle raison le style est-il tel que les interfaces sont écrites en premier, et seulement ensuite les classes (en tant que descendants de leurs interfaces respectives) ?
  2. Pourquoi faire cela ? (StringToUpper(generatorName) ;)
  3. Apparemment, ils ont juste oublié.




Je suis un peu surpris qu'ils l'aient fait via CArrayList au lieu d'utiliser le HashMap dont on vient de parler. Il ne fallait pas se laisser guider par l'original tordu de l'auteur, où les transactions sont des index, pas des tickets.

HashMap aurait été plus clair, plus pratique et plus rapide, très probablement.


Je me suis étonné qu'un tel code se lise facilement. Cependant, je n'ai pas encore atteint le niveau d'abstraction montré dans la programmation moi-même. Mon style jusqu'à présent est procédural + OOP. Ce code est purement OOP. Apparemment, c'est une école de programmation bien apprise. Seulle travail deStanislav Korotky sur ce site présente un niveau d'abstraction similaire.


1) Le style est tel qu'il permet l'intégration.
Si vous avez besoin de tester votre classe, vous pouvez hériter et implémenter l'interface pour le test.
Si vous avez besoin de votre propre générateur, vous pouvez en hériter.


2) Oui, c'est redondant, exagéré, merci :

StringToUpper(generatorName);



3) Non, je ne l'ai pas fait :

      //TODO add shared_ptr / move out generator (Dependency Injection)
      IGenerator<T>* generator = CreateGenerator<T>();

Il a été écrit à l'origine sousshared_ptr, dont je n'ai pas d'implémentation.
Mais c'est une bonne idée de mettre la dépendance d'IGenerator<T> dans les paramètres de la fonction pour les tests.

 
Sergey Dzyublik:

3) Non, je n'ai pas oublié :

Il a été écrit à l'origine sousshared_ptr, dont je n'ai pas d'implémentation.

Je vois, je n'avais pas remarqué.

 
Longueur de la chaîne, savez-vous combien de caractères au maximum ?
 
Renat Akhtyamov:
Longueur de la chaîne, je ne sais pas - combien de caractères maximum ?

J'attends une réponse :

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

Algorithmes, méthodes de résolution, comparaison de leurs performances

Vladimir Karputov, 2017.12.11 08:37

Corrigez-moi, mais la longueur de la chaîne n'est-elle pas finie ?

https://msdn.microsoft.com/ru-ru/library/sx08afx2.aspx

Je n'arrive pas à trouver cette limitation pour MQL5...


 

Il y a un schéma clair d'irrespect répété pour la communauté et un schéma clair de provocation.

Ne pas le lire (les messages d'une personne dans divers fils constructifs) n'est pas toujours possible, après quoi le développer et l'oublier - encore moins.

La pêche à la traîne et le crachat dans les mains de l'aide, dont le nombre distingue grandement cette ressource du côté positif.


Je pourrais me tromper.

 
Vladimir Karputov:

Corrigez-moi, mais la longueur des chaînes n'est-elle pas finie ?

Limite de mémoire uniquement

void OnStart()
{
  string Str;
  
  Print(StringInit(Str, 1 e8)); // true - 100 Mb
}
 
Реter Konow:

1. c'est-à-dire que la vitesse de l'algorithme n'est pas importante. La solution est "conceptuellement puissante" et c'est suffisant. Ok.

2. Donc, il suffit de se brancher via le plug-in et c'est tout ? Ok.

//--------------------------------------------------------------------

Si le principal critère d'évaluation de l'algorithme est"Conceptuellement puissant", alors j'ai perdu.

Si le principal critère d'évaluation de l'algorithme est"la simplicité, la rapidité et la commodité", alors je gagne.

Vous pouvez clore le thème sur ce point.


Désolé, vous ne pouvez pas, je me repens.
Mais quelle personne stupide vous êtes.
Le problème n'est pas que quelqu'un ne sache pas quelque chose, mais le manque total de désir d'apprendre quelque chose.

Quelle différence cela fait-il de 10ms l'un ou 8ms l'autre ?
Si vous avez juste besoin de comparer relativement qui est plus rapide et de combien, sans oublier de vérifier la fidélité.

 
fxsaber:

Restriction de mémoire uniquement

OOO ! !!!!

Merci beaucoup !

parce que ma corde est coupée trop court et je ne savais pas comment augmenter la longueur

Ne gâchez pas le fil, ne vous battez pas ici.

 

solution à travers la feuille - tant de code.... Vous ne pourriez pas être plus précis ?

J'essaie simplement de le faire comprendre aux autres).

En général, je n'arrive pas non plus à prendre l'habitude d'utiliser les bibliothèques standard - et je pense que beaucoup de personnes ici ont leur propre version de la même feuille.

même problème

c'est-à-dire que nous sauvegardons toutes les valeurs, ticker avec un magik - prix, prix d'ouverture, heure, prix de fermeture. c'est-à-dire que ce sera pour la comptabilité des ordres virtuels

En fait, la solution la plus rapide serait de stocker toutes les informations dans la structure. Et ici, les accès se feront par le biais de l'index de référence ordonné sammiva.


A propos, la question de savoir comment définir une impression. peut avoir des solutions toutes faites. En bref, il devrait imprimer moins souvent - mais avant l'échec, il devrait vider les informations nécessaires, ou s'adapter confortablement à cette façon - et de préférence sans les variables globales.

Raison: