算法、解决方法、其性能的比较 - 页 5

 
Vasiliy Sokolov:

彼得,你喝醉了吗?在子串的..._25_...四个字:_25_

是的,你是对的。我错过了这个机会。

但我们可以解决这个问题。

 
Vasiliy Sokolov:

在子串..._25_...四个字:_25_

并非所有的人都能说明问题。谢谢你指出这个具体的错误。
 
Реter Konow:

是的,你是对的。错过了这一点。

但它可以被修复。

显然,这个病人是不治之症。

 

我将修复代码并张贴。

请等待。

顺便说一下。情绪可能会有所缓和。这没有什么不对。

 
Реter Konow:

我将修复代码并张贴。

请等待。

嘿。情绪可能会有所缓和。没有什么可担心的。


它正在发生。死了的东西不愿意死。

 

完成了。

//+------------------------------------------------------------------+
//|                                                        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));
   
  }
//+------------------------------------------------------------------+
 

彼得,你的例子本身就是妄想,是不可行的。在现实世界中,交易号码总是随机的。你不能写。

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

我们不知道下一个交易号码。

 
Vasiliy Sokolov:

在现实世界中,交易号码总是随机的。你不能写。

我们不知道下一个交易号码。

并非如此。

假设我们正在交易,已经做了300笔交易。

如果我们需要在第300次交易之前得到任何梅季奇,我们总是有下一个交易号码。

如果我们需要得到第300笔交易的数字,那么......我们可以始终在一个变量中保留最后一笔交易的号码。

 

该代码当然不是完美的,所以它可以立即应用于交易。它只是展示了一种解决问题的方法。它可以被微调。

 
Реter Konow:

并非如此。

假设我们正在交易,已经做了300笔交易。

如果我们需要在第300次交易之前得到任何medjic,我们总是有下一次交易的号码。

如果我们需要得到第300笔交易的号码,那么......我们总是可以在一些变量中保留最后一笔交易的号码。


一个普通的ints数组有什么问题?thongs....,有什么意义呢?再一次,想象一下,你用一个存储动态图表数组 的类来代替字符串--你认为这很快速吗?