Algorithmen, Lösungsmethoden, Vergleich ihrer Leistung - Seite 5

 
Vasiliy Sokolov:

Peter, bist du betrunken? In der Teilzeichenkette von ..._25_... vier Zeichen: _, 2, 5, _.

Ja, Sie haben Recht. Das habe ich übersehen.

Aber wir können es reparieren.

 
Vasiliy Sokolov:

In der Teilzeichenkette ..._25_... vier Zeichen: _, 2, 5, _.

Nicht alle von ihnen können berücksichtigt werden. Vielen Dank für den Hinweis auf den spezifischen Fehler.
 
Реter Konow:

Ja, Sie haben Recht. Dieser Punkt wurde übersehen.

Aber das lässt sich beheben.

Offenbar ist der Patient unheilbar.

 

Ich werde den Code korrigieren und ihn veröffentlichen.

Bitte warten Sie.

Im Übrigen. Die Emotionen können gedämpft sein. Daran ist nichts auszusetzen.

 
Реter Konow:

Ich werde den Code korrigieren und ihn veröffentlichen.

Bitte warten Sie.

Hallo. Die Emotionen können gedämpft sein. Es gibt keinen Grund zur Beunruhigung.


Es ist soweit. Was tot ist, will nicht sterben.

 

Erledigt:

//+------------------------------------------------------------------+
//|                                                        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, Ihr Beispiel ist von Natur aus wahnhaft und nicht durchführbar. In der realen Welt ist die Transaktionsnummer immer zufällig. Sie können nicht schreiben:

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

Wir kennen die nächste Transaktionsnummer nicht.

 
Vasiliy Sokolov:

In der realen Welt ist die Transaktionsnummer immer zufällig. Sie können nicht schreiben:

Wir kennen die nächste Transaktionsnummer nicht.

Nicht wirklich.

Nehmen wir an, wir sind im Handel und haben bereits 300 Geschäfte getätigt.

Wenn wir einen Medjic vor dem 300. Handel brauchen, haben wir immer die nächste Handelsnummer.

Wenn wir die Nummer des 300. Handels brauchen, dann... können wir die Nummer des letzten Geschäfts immer in einer Variablen speichern.

 

Der Code ist sicherlich nicht perfekt, so dass er sofort auf den Handel angewendet werden kann. Es wird lediglich ein Lösungsansatz aufgezeigt. Sie kann feinabgestimmt werden.

 
Реter Konow:

Nicht wirklich.

Nehmen wir an, wir handeln und haben bereits 300 Trades getätigt.

Wenn wir vor dem 300. Handel einen Medjic brauchen, haben wir immer die Nummer des nächsten Handels.

Wenn wir die Nummer des 300. Geschäfts brauchen, dann... können wir die Nummer des letzten Geschäfts immer in einer Variablen speichern.


Was ist falsch mit einem normalen Array von ints? was ist der Sinn der thongs.... Stellen Sie sich noch einmal vor, dass Sie statt einer Zeichenkette eine Klasse verwenden, die ein dynamisches Array von Diagrammen speichert - und Sie glauben, das sei schnell?