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

 
fxsaber:

Qu'est-ce qui est plus spécifique ? Ne pouvez-vous pas penser à un contre-exemple à votre mise en œuvre ? Expliquez ce que sont les tableaux et les structures.

Je n'ose même pas deviner ce qui se passera si vous devez obtenir non seulement le numéro de l'ordre, mais aussi le prix, par exemple.

En somme, une sorte d'ignorance. Et ce n'est pas celui d'un débutant, et donc inexcusable. Honte à la ressource si quelqu'un d'extérieur citait ce fil de discussion comme un exemple de "regardez le niveau des programmeurs dans MQL !

Et comment définissez-vous le niveau ?
Je suis aussi un débutant sur de nombreux sujets, mais Peter semble être un ignorant militant.
Et pas seulement dans Tester ou OOP.
Il n'a pas de problème avec MetaEditor.
Peut-être l'utilise-t-il rarement ?
Et où se trouve un seul code dans la bibliothèque ? Ou dans les produits ?
(

 
Реter Konow:
Vous fournissez votre solution. Sinon, ce ne sont que des mots vides. Comme avant.

Êtes-vous prêt ?

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

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

fxsaber, 2017.12.10 16:12

Presque tout le monde ici est prêt à le faire si vous passez en mode lecture seule pendant un mois après.


 
Sergey Dzyublik:

Êtes-vous prêt ?


CHTD.
 
/+------------------------------------------------------------------+
//|                                                        Magic.mq5 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
string All_magics;
int    order_number;
int    Random_orders_of_strategy;
//+------------------------------------------------------------------+
void Save_magic(int magic)
{
 order_number++;
 //---------------------------------
 //Записываем каждый магик вместе с порядковым номером ордера.
 //---------------------------------
 All_magics +=  "_" + (string)order_number + "_" + (string)magic;   // Тут как бы не рационально особенно для скорости - в данном случае будет происходить поочередное сложение т.е. сперва стрин увеличиться на один знак и ему выделеиться дополнительно 1 чарт, потом увоичиться на количество символов в (string)order_number.... и каждый раз будет происходить выделение памяти... 
 //---------------------------------
}
//+------------------------------------------------------------------+
void Trading()
{
 Random_orders_of_strategy = MathRand(); ///Всеже проще рандом не вызывать при тестах на скорость - т.к. хз сколь уйдет времени на эту функцию
 
 //----------------------------------------
 //Имитируем открытие неопределенного количества ордеров стратегии.
 //----------------------------------------
 for(int a1 =  0; a1 < Random_orders_of_strategy; a1++)
   {
    int this_magic = MathRand();
    //----------------------------
    Save_magic(this_magic);
    //----------------------------
   }
 //----------------------------------------
}
//+------------------------------------------------------------------+
int Get_magic(int deal_number)
{
 //--------------------------------------------
 //Получаем начало строки магика.
 //--------------------------------------------
 int Magic_position_start =  StringFind(All_magics,"_" + (string)deal_number + "_",0) + 3;  // поиск происходит слушающим образом... наш string разбирается на масив чартов и мы начинаем искать среди них номер чарта равный номеру символа  "_" путем перебора, если произошло совпадение то будем сравнивать второй символ... даже банально исключив последний  + "_" скорость возрастет
 //--------------------------------------------
 //Получаем конец строки магика.
 //--------------------------------------------
 int Magic_position_end   =  StringFind(All_magics,"_" + (string)(deal_number + 1) + "_",0); //тут по идее снова начинается поиск и он уже идет с самого начала снова не знаю зачем искать еще раз, надо хотябы поиск начинать с тагоже места где нашли начало маджика чтоли... и искать просто подчеркивание... 
 //--------------------------------------------
 //Получаем количество цифр из которых состоит магик.
 //--------------------------------------------
 int Magic_lenght         =  Magic_position_end - Magic_position_start;
 //--------------------------------------------
 //Извлекаем магик из общей строки.
 //--------------------------------------------
 string Magic             =  StringSubstr(All_magics,Magic_position_start,Magic_lenght);
 //--------------------------------------------
 //Возвращаем цифровое значение магика.
 //--------------------------------------------
 return((int)Magic);
}
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   Trading();
   //--------------------------
   ulong t1 = GetMicrosecondCount(); 
   Get_magic(1);  // Мы же на скорость проверяем так что давайте исполняемые функции брать в цикл с повтором в 10 000 раз... хотябы лучше с изменяющими входными параметрами
   ulong t2 = GetMicrosecondCount();
   //--------------------------
   Print("Время исполнения функции Get_magic() при количестве ордеров ",Random_orders_of_strategy," равно ",t2 - t1);
   //--------------------------
   Print("Random_orders_of_strategy  ",Random_orders_of_strategy);
   Print("magic 1:  ",Get_magic(1),"  magic 2: ",Get_magic(2),"  magic 3: ",Get_magic(3));
   
  }
//+------------------------------------------------------------------+
 
Реter Konow:

En voici la preuve pratique :

Je n'ai jamais vu une telle morosité, même dans le fil "questions de débutants". Les gars, c'est tout simplement effrayant ! Qu'y a-t-il à commenter ?

s. Eh bien, pourquoi écrire Get_magic(1), écrire Get_magic(23999).

 
Mikhail Dovbakh:

Et comment déterminez-vous le niveau ?
Je suis également novice sur de nombreux sujets, mais Peter semble être un ignorant militant.

Et je suis nouveau dans de nombreux domaines. Et quand mon ignorance militante est noyée dans une cuve de merde, je ne prétends pas que ça n'est pas arrivé. Je suis reconnaissant pour la leçon qui donne à réfléchir.

Il n'y a jamais de honte à être un novice ou à ne pas savoir quelque chose. Dans ce cas, cependant, la fierté de l'ignorance est présente, et elle est aussi hors normes.

Le seul avantage - il s'avère que c'est l'une des meilleures motivations pour créer une liste noire sur la ressource.

 
Vasiliy Sokolov:

Je n'ai pas vu ce genre de morosité, même dans le fil de discussion "questions de débutants". Les gars, c'est juste fou ! Qu'y a-t-il à commenter ?

S.s. Non, enfin, pourquoi écrire Get_magic(1), écrire Get_magic(23999).

La solution fonctionne-t-elle ?

 
Реter Konow:

La solution fonctionne-t-elle ?

Non, parce que StringFind peut trouver le numéro de medjik au lieu du numéro de transaction.

 
Vasiliy Sokolov:

Non, cela ne fonctionne pas, car StringFind peut trouver le nombre médian au lieu du nombre de transactions.

StringFind trouve d'abord le numéro de transaction ("_" + numéro de transaction + "_").

Puis on ajoute 3 et on obtient le début du méga.

Puis StringFind recherche le début de la transaction suivante.

Ensuite, il soustrait le début de la transaction suivante du début de la méga.

Puis StringSubstr obtient la chaîne de caractères du méga.

Puis nous le convertissons en int et le retournons.


Qu'est-ce qui ne marche pas ici ?

 
Реter Konow:

Qu'est-ce qui ne marche pas ici ?


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

Algorithmes, méthodes de décision, comparaison de leurs performances

Sergey Dzyublik, 2017.12.10 16:10

Reg Konow, votre niveau de connaissance des "structures de données" est de 0.

1. Votre code ne fonctionne pas.
Mauvais motif "_index_magic". La solution possible est "|index_magic".

2. Votre algorithme a une vitesse O(n) avec jusqu'à trois passages de la chaîne de valeurAll_magics

3. Votre mesure de performance est complètement incorrecte :

- il n'y a pas de résultat moyen dans la série
- pas de série avec recherche des dernières valeurs d'index



Au lieu d'écrire des bêtises, étudiez le sujet, par exemplehttps://habrahabr.ru/post/310794/.
Et ensuite, apprenez à appliquer CArrayList à partir de <Generic\ArrayList.mqh>.
Bonne chance.


Raison: