Algoritmos, métodos de solução, comparação de seu desempenho - página 5

 
Vasiliy Sokolov:

Peter, você está bêbado? No substrato de ..._25_... quatro caracteres: _, 2, 5, _.

Sim, você está certo. Eu perdi isso.

Mas nós podemos consertá-lo.

 
Vasiliy Sokolov:

No substrato ..._25_... quatro caracteres: _, 2, 5, _.

Nem todos eles podem ser contabilizados. Obrigado por apontar o erro específico.
 
Реter Konow:

Sim, você está certo. Faltou esse ponto.

Mas pode ser consertado.

Aparentemente, o paciente é incurável.

 

Eu consertarei o código e o afixarei.

Por favor, aguarde.

A propósito. As emoções podem ser temperadas. Não há nada de errado com isso.

 
Реter Konow:

Eu consertarei o código e o afixarei.

Por favor, aguarde.

Olá. As emoções podem ser temperadas. Não há nada com que se preocupar.


Isso está acontecendo. O que está morto não quer morrer.

 

Feito:

//+------------------------------------------------------------------+
//|                                                        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, seu exemplo é inerentemente ilusório e impraticável. No mundo real, o número da transação é sempre aleatório. Não se pode escrever:

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

Não sabemos o número da próxima transação.

 
Vasiliy Sokolov:

No mundo real, o número da transação é sempre aleatório. Não se pode escrever:

Não sabemos o número da próxima transação.

Na verdade, não.

Digamos que estamos negociando e já fizemos 300 negócios.

Se precisarmos obter qualquer medjic antes do 300º comércio, temos sempre o próximo número de comércio.

Se precisarmos obter o número do 300º comércio, então... podemos sempre manter o número do último comércio em uma variável.

 

O código certamente não é perfeito para que possa ser aplicado imediatamente ao comércio. Ela simplesmente demonstra uma abordagem para a solução. Pode ser aperfeiçoado.

 
Реter Konow:

Na verdade, não.

Digamos que estamos negociando e já fizemos 300 negócios.

Se precisarmos obter qualquer medjic antes do 300º comércio, temos sempre o número do próximo comércio.

Se precisarmos obter o número do 300º negócio, então... podemos sempre manter o número do último comércio em alguma variável.


O que há de errado com um conjunto regular de tangas? qual é o objetivo das tangas.... Mais uma vez, imagine que em vez de um fio, você usa uma classe que armazena um conjunto dinâmico de gráficos - e você acha que isso é rápido?

Razão: