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

 
Vasiliy Sokolov:

Peter, tu es ivre ? Dans la sous-chaîne de ..._25_... quatre caractères : _, 2, 5, _.

Oui, vous avez raison. J'ai raté ça.

Mais nous pouvons le réparer.

 
Vasiliy Sokolov:

Dans la sous-chaîne ..._25_... quatre caractères : _, 2, 5, _.

Ils ne peuvent pas tous être comptabilisés. Merci d'avoir signalé l'erreur spécifique.
 
Реter Konow:

Oui, vous avez raison. J'ai raté ce point.

Mais ça peut être réparé.

Apparemment, le patient est incurable.

 

Je vais corriger le code et le poster.

Veuillez patienter.

Au fait. Les émotions peuvent être tempérées. Il n'y a rien de mal à cela.

 
Реter Konow:

Je vais corriger le code et le poster.

Veuillez patienter.

Hé. Les émotions peuvent être tempérées. Il ne se passe rien de mal.


C'est en train de se produire. Ce qui est mort ne veut pas mourir.

 

C'est fait :

//+------------------------------------------------------------------+
//|                                                        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;
 //---------------------------------
}
//+------------------------------------------------------------------+
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 stringlen = StringLen((string)deal_number); //добавлено
 //--------------------------------------------
 //Получаем начало строки магика.
 //--------------------------------------------
 int Magic_position_start =  StringFind(All_magics,"_" + (string)deal_number + "_",0) + stringlen + 2;
 //--------------------------------------------
 //Получаем конец строки магика.
 //--------------------------------------------
 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(1000);
   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));
   
  }
//+------------------------------------------------------------------+
 

Peter, votre exemple est intrinsèquement délirant et irréalisable. Dans le monde réel, le numéro de transaction est toujours aléatoire. Tu ne sais pas écrire :

//--------------------------------------------
 //Получаем конец строки магика.
 //--------------------------------------------
 int Magic_position_end   =  StringFind(All_magics,"_" + (string)(deal_number + 1) + "_",0); //тут по идее снова начинается поиск и он уже идет с самого начала снова не знаю зачем искать еще раз, надо хотябы поиск начинать с тагоже места где нашли начало маджика чтоли... и искать просто подчеркивание... 

Nous ne connaissons pas le numéro de la prochaine transaction.

 
Vasiliy Sokolov:

Dans le monde réel, le numéro de transaction est toujours aléatoire. Tu ne sais pas écrire :

Nous ne connaissons pas le numéro de la prochaine transaction.

Pas vraiment.

Disons que nous sommes en train de négocier et que nous avons déjà effectué 300 transactions.

Si nous devons obtenir un Medjic avant le 300ème échange, nous avons toujours le numéro de l'échange suivant.

Si nous devons obtenir le numéro de la 300ème transaction, alors... on peut toujours garder le numéro de la dernière transaction dans une variable.

 

Le code n'est certainement pas parfait pour pouvoir être appliqué immédiatement au commerce. Il démontre simplement une approche de la solution. Elle peut être affinée.

 
Реter Konow:

Pas vraiment.

Disons que nous sommes en train de négocier et que nous avons déjà effectué 300 transactions.

Si nous devons obtenir un medjic avant le 300ème échange, nous avons toujours le numéro de l'échange suivant.

Si nous devons obtenir le numéro de la 300e transaction, alors... nous pouvons toujours conserver le numéro de la dernière transaction dans une variable.


Qu'est-ce qui ne va pas avec un tableau normal d'ints ? Quel est l'intérêt des thongs.... Encore une fois, imaginez qu'au lieu d'une chaîne de caractères, vous utilisez une classe qui stocke un tableau dynamique de graphiques - et vous pensez que c'est rapide ?