Algoritmi, metodi di soluzione, confronto delle loro prestazioni - pagina 5

 
Vasiliy Sokolov:

Peter, sei ubriaco? Nella sottostringa di ..._25_... quattro caratteri: _, 2, 5, _.

Sì, hai ragione. Mi è sfuggito.

Ma possiamo rimediare.

 
Vasiliy Sokolov:

Nella sottostringa ..._25_... quattro caratteri: _, 2, 5, _.

Non tutti possono essere contabilizzati. Grazie per aver sottolineato l'errore specifico.
 
Реter Konow:

Sì, hai ragione. Ho perso questo punto.

Ma si può aggiustare.

A quanto pare, il paziente è incurabile.

 

Correggo il codice e lo pubblico.

Si prega di attendere.

A proposito. Le emozioni possono essere attenuate. Non c'è niente di male.

 
Реter Konow:

Correggo il codice e lo pubblico.

Si prega di attendere.

Ehi... Le emozioni possono essere attenuate. Non sta succedendo niente di male.


Sta succedendo. Ciò che è morto non vuole morire.

 

Fatto:

//+------------------------------------------------------------------+
//|                                                        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, il tuo esempio è intrinsecamente delirante e impraticabile. Nel mondo reale, il numero della transazione è sempre casuale. Non puoi scrivere:

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

Non conosciamo il prossimo numero di transazione.

 
Vasiliy Sokolov:

Nel mondo reale, il numero della transazione è sempre casuale. Non puoi scrivere:

Non conosciamo il prossimo numero di transazione.

Non proprio.

Diciamo che stiamo facendo trading e abbiamo già fatto 300 scambi.

Se abbiamo bisogno di ottenere qualsiasi medjic prima del 300° scambio, abbiamo sempre il prossimo numero di scambio.

Se dobbiamo ottenere il numero del 300° scambio, allora... possiamo sempre tenere il numero dell'ultimo scambio in una variabile.

 

Il codice non è certo perfetto per poter essere applicato immediatamente al trading. Dimostra semplicemente un approccio alla soluzione. Può essere messo a punto.

 
Реter Konow:

Non proprio.

Diciamo che stiamo facendo trading e abbiamo già fatto 300 scambi.

Se abbiamo bisogno di ottenere qualche medjic prima del 300° scambio, abbiamo sempre il numero del prossimo scambio.

Se dobbiamo ottenere il numero del 300° accordo, allora... possiamo sempre tenere il numero dell'ultimo scambio in qualche variabile.


Cosa c'è di sbagliato in un normale array di ints? che senso ha il thongs.... Di nuovo, immaginate che invece di una stringa, usiate una classe che memorizza un array dinamico di grafici - e pensate che sia veloce?

Motivazione: