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

 
fxsaber:

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.

Contrôlez vos émotions, s'il vous plaît. Si vous n'acceptez pas le point de vue d'une autre personne, vous pouvez choisir de ne pas participer à la discussion. Personne ne vous y oblige.

 
Vladimir Karputov:

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

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

Je ne trouve pas cette limitation pour MQL5...

Une chaîne de caractères est fondamentalement un tableau d'uchar, avec ses propres caractéristiques, telles que le re-partitionnement automatique. C'est pourquoi la longueur de la chaîne n'est pas limitée, du moins de manière explicite, pas plus que la taille du tableau. Mais une chaîne très longue peut potentiellement manquer de mémoire, comme en témoigne un code d'erreur spécifique tel que ERR_STRING_RESIZE_ERROR (Mémoire insuffisante pour réallouer la chaîne).


 
Vasiliy Sokolov:

Une chaîne de caractères est essentiellement un tableau uchar, avec ses propres avantages, tels que la répartition automatique. La longueur des chaînes de caractères n'est donc pas limitée, du moins explicitement, pas plus que la taille des tableaux. Mais une chaîne très longue peut potentiellement manquer de mémoire, comme en témoigne un code d'erreur spécifique tel que ERR_STRING_RESIZE_ERROR (Pas assez de mémoire pour réallouer la chaîne).


Des informations précieuses pour moi aussi. Merci.
 
fxsaber:

Restriction de mémoire uniquement

évidemment une restriction de type de longueur, c'est-à-dire à côté de INT_MAX
 
Ре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 de jugement de l'algorithme est la simplicité, la rapidité et la commodité, je gagne.

Nous pouvons clore le sujet à ce stade.


Vous pouvez encore accélérer et simplifier "votre algorithme" (et on vous le dit constamment), si vous remplacez la chaîne de caractères par deux int[] de même taille et que vous stockez le nombre de transactions dans l'un, et dans l'autre magicien et que vous cherchez l'indice de magicien nécessaire sur la recherche correspondante du tableau de transactions. Ce sera plus rapide. Bien sûr, c'est un cas particulier qui découle de votre exemple.

Peter a appris les tableaux et a compris qu'il s'agit d'outils universels et puissants, puis il a commencé à apprendre les chaînes de caractères... Pouvez-vous imaginer ce qui se passera lorsqu'il apprendra les structures).

Piotr substitue ces fonctions dans son exemple :

struct SDealMagic {int deal,magic;} array[];
//
void Trading()
{
   Random_orders_of_strategy=MathRand();
   ArrayResize(array,Random_orders_of_strategy);
   for(int i=0; i<Random_orders_of_strategy; i++)
   {
      array[i].deal=i;
      array[i].magic=MathRand()
   }
}
//
int Get_magic(int deal_number)
{
   for(int i=0; i<Random_orders_of_strategy; i++)
      if(array[i].deal==deal_number) return(array[i].magic);
   return(-1);
}

Et la vitesse prendra le modèle :)

 
Ре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 "Simplicité, rapidité et commodité ", je gagne.

A ce stade, nous pouvons clore le sujet.


Juste un exemple montre le plus commun - c'est-à-dire, beaucoup d'informations supplémentaires, au moins le gestionnaire de débogage et de définir sur l'impression est absent - ou bien il aurait ajouté un autre 300 lignes.

Au moins le code entier est complètement....

la partie du code que vous devez ajouter et appeler via la bibliothèque sera beaucoup plus pratique, moins codée et plus lisible

 
Alexandr Andreev:

Quand un ticker vient avec un magik - il devrait être sauvegardé et ensuite il peut être envoyé au ticker ou au magik dans une forme commode.

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

Il s'agit d'une solution frontale qui n'est donc pas la plus rapide. Il est préférable de le faire via HashMap. Cependant, nous n'aurions pas besoin d'une structure dans l'implémentation actuelle, mais plutôt d'une classe héritée d'une certaine interface pour décrire les champs de ses ordres.

 
Yury Kulikov:

Vous pouvez accélérer et simplifier "votre algorithme" (et ils ne cessent de vous le répéter), si vous remplacez la chaîne par deux int[] de même taille et que vous stockez le numéro de transaction dans l'un et le magik dans l'autre et que vous recherchez l'index nécessaire du magik par l'énumération correspondante du tableau de transactions. Ce sera plus rapide. Bien sûr, c'est un cas particulier qui découle de votre exemple.


Il s'agit d'une proposition intéressante et utile. Tenir des registres parallèles. Je l'ai fait dans mes autres solutions.

La seule chose est que nous ne connaissons pas le nombre d'ordres que l'EA placera initialement. Quelle taille devons-nous définir pour le tableau d'int ?

C'est pourquoi j'ai décidé d'utiliser une corde.

 
fxsaber:

Il s'agit d'une solution frontale qui n'est donc pas la plus rapide. Il est préférable de le faire par le biais de HashMap. Mais l'implémentation actuelle ne nécessiterait pas une structure, mais une classe héritée d'une certaine interface pour décrire les champs de ses ordres.


Je n'ai pas trouvé le fichierGeneric, il semble que ce soit une ancienne version. Alors, comment le principe de navigation sera-t-il assuré - quel est le code source ?

 
Реter Konow:

C'est une suggestion intéressante et intelligente. Tenir des registres parallèles. Je l'ai fait dans mes autres solutions.

La seule chose que nous ne savons pas est le nombre d'ordres qui seront placés par le conseiller expert. Quelle taille devons-nous définir pour le tableau d'int ?

J'ai donc décidé de prendre une corde.

Peter, il existe une excellente fonction appelée ArrayResize(). Il permet d'augmenter la taille d'un tableau au moment de l'exécution du programme.

Raison: