Was ist konkreter? Fällt Ihnen nicht ein Gegenbeispiel zu Ihrer Umsetzung ein? Erklären Sie, was Arrays und Strukturen sind?
Ich wage nicht einmal zu erraten, was passiert, wenn Sie nicht nur die Nummer der Bestellung, sondern beispielsweise auch den Preis benötigen.
Alles in allem eine Art von Ignoranz. Und es ist nicht das eines Anfängers und daher unentschuldbar. Es wäre eine Schande für die Ressource, wenn jemand von außerhalb diesen Thread als Beispiel für "Seht euch das Niveau der Programmierer in MQL an!
Und wie definieren Sie das Niveau? Auch ich bin in vielen Fragen ein Anfänger, aber Peter scheint ein militanter Ignorant zu sein. Und das nicht nur in Tester oder OOP. Er hat kein Problem mit MetaEditor. Vielleicht benutzt er sie nur selten? Und wo ist auch nur ein einziger Code in der Bibliothek? Oder in Produkten? (
/+------------------------------------------------------------------+
//| 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; // Тут как бы не рационально особенно для скорости - в данном случае будет происходить поочередное сложение т.е. сперва стрин увеличиться на один знак и ему выделеиться дополнительно 1 чарт, потом увоичиться на количество символов в (string)order_number.... и каждый раз будет происходить выделение памяти... //---------------------------------
}
//+------------------------------------------------------------------+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 Magic_position_start = StringFind(All_magics,"_" + (string)deal_number + "_",0) + 3; // поиск происходит слушающим образом... наш string разбирается на масив чартов и мы начинаем искать среди них номер чарта равный номеру символа "_" путем перебора, если произошло совпадение то будем сравнивать второй символ... даже банально исключив последний + "_" скорость возрастет//--------------------------------------------//Получаем конец строки магика.//--------------------------------------------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 |//+------------------------------------------------------------------+voidOnStart()
{
Trading();
//--------------------------ulong t1 = GetMicrosecondCount();
Get_magic(1); // Мы же на скорость проверяем так что давайте исполняемые функции брать в цикл с повтором в 10 000 раз... хотябы лучше с изменяющими входными параметрами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));
}
//+------------------------------------------------------------------+
Ich habe noch nicht einmal im Thread "Fragen von Neulingen" eine solche Trübsal gesehen. Leute, das ist einfach nur gruselig! Was gibt es dazu zu sagen?
s. Nun, warum schreiben Sie Get_magic(1), schreiben Sie Get_magic(23999).
Und wie bestimmen Sie das Niveau? Ich bin auch ein Neuling in vielen Fragen, aber Peter scheint ein militanter Ignorant zu sein.
Und ich bin in vielen Bereichen neu. Und wenn meine militante Ignoranz in einen Bottich voll Scheiße getaucht wird, tue ich nicht so, als wäre das nicht passiert. Ich bin dankbar für diese ernüchternde Lektion.
Es ist nie eine Schande, ein Anfänger zu sein oder etwas nicht zu wissen. In diesem Fall jedoch ist der Stolz auf die Unwissenheit vorhanden, und er ist auch nicht zu überbieten.
Der einzige Vorteil - es stellt sich heraus, einer der besten Motivatoren, um eine Blacklist auf der Ressource zu erstellen.
Ich habe diese Art von Pessimismus noch nicht einmal im Thread "Fragen von Neulingen" gesehen. Leute, das ist einfach verrückt! Was gibt es dazu zu sagen?
S.s. Nein, also, warum schreiben Sie Get_magic(1), schreiben Sie Get_magic(23999).
Reg Konow, Ihr Wissen über "Datenstrukturen" ist gleich 0.
1. Ihr Code funktioniert nicht. Falsches Muster "_index_magic". Eine mögliche Lösung ist "|index_magic".
2. Ihr Algorithmus hat die Geschwindigkeit O(n) mit bis zu drei Durchläufen des String-WertesAll_magics
3. Ihre Leistungsmessung ist völlig falsch:
- es gibt kein Durchschnittsergebnis in der Reihe - keine Serien mit Suche nach den letzten Indexwerten
Anstatt Unsinn zu schreiben - studieren Sie bitte etwas zu diesem Thema, z.B.https://habrahabr.ru/post/310794/. Und dann lernen Sie, wie Sie CArrayList aus <Generic\ArrayList.mqh> anwenden können. Viel Glück!
Was ist konkreter? Fällt Ihnen nicht ein Gegenbeispiel zu Ihrer Umsetzung ein? Erklären Sie, was Arrays und Strukturen sind?
Ich wage nicht einmal zu erraten, was passiert, wenn Sie nicht nur die Nummer der Bestellung, sondern beispielsweise auch den Preis benötigen.
Alles in allem eine Art von Ignoranz. Und es ist nicht das eines Anfängers und daher unentschuldbar. Es wäre eine Schande für die Ressource, wenn jemand von außerhalb diesen Thread als Beispiel für "Seht euch das Niveau der Programmierer in MQL an!
Und wie definieren Sie das Niveau?
Auch ich bin in vielen Fragen ein Anfänger, aber Peter scheint ein militanter Ignorant zu sein.
Und das nicht nur in Tester oder OOP.
Er hat kein Problem mit MetaEditor.
Vielleicht benutzt er sie nur selten?
Und wo ist auch nur ein einziger Code in der Bibliothek? Oder in Produkten?
(
Sie liefern Ihre Lösung. Sonst sind es nur leere Worte. Dasselbe wie zuvor.
Sind Sie bereit?
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Algorithmen, Lösungsmethoden, Vergleich ihrer Leistung
fxsaber, 2017.12.10 16:12
Fast jeder hier ist dazu bereit, wenn Sie danach für einen Monat in den schreibgeschützten Modus wechseln.
Sind Sie bereit?
Hier ist der praktische Beweis:
Ich habe noch nicht einmal im Thread "Fragen von Neulingen" eine solche Trübsal gesehen. Leute, das ist einfach nur gruselig! Was gibt es dazu zu sagen?
s. Nun, warum schreiben Sie Get_magic(1), schreiben Sie Get_magic(23999).
Und wie bestimmen Sie das Niveau?
Ich bin auch ein Neuling in vielen Fragen, aber Peter scheint ein militanter Ignorant zu sein.
Und ich bin in vielen Bereichen neu. Und wenn meine militante Ignoranz in einen Bottich voll Scheiße getaucht wird, tue ich nicht so, als wäre das nicht passiert. Ich bin dankbar für diese ernüchternde Lektion.
Es ist nie eine Schande, ein Anfänger zu sein oder etwas nicht zu wissen. In diesem Fall jedoch ist der Stolz auf die Unwissenheit vorhanden, und er ist auch nicht zu überbieten.
Der einzige Vorteil - es stellt sich heraus, einer der besten Motivatoren, um eine Blacklist auf der Ressource zu erstellen.
Ich habe diese Art von Pessimismus noch nicht einmal im Thread "Fragen von Neulingen" gesehen. Leute, das ist einfach verrückt! Was gibt es dazu zu sagen?
S.s. Nein, also, warum schreiben Sie Get_magic(1), schreiben Sie Get_magic(23999).
Funktioniert die Lösung?
Funktioniert die Lösung?
Nein, denn StringFind kann anstelle der Transaktionsnummer auch die Medjik-Nummer finden.
Nein, das funktioniert nicht, weil StringFind den Medianwert anstelle der Transaktionsnummer finden kann.
StringFind findet zunächst die Geschäftsnummer ("_" + Geschäftsnummer + "_").
Dann addieren wir 3 und erhalten den Beginn des Megic.
Dann sucht StringFind nach dem Beginn des nächsten Handels.
Dann wird der Beginn des nächsten Geschäfts vom Beginn des Megic abgezogen.
Dann erhält StringSubstr die Zeichenkette des Megic.
Dann wandeln wir es in int um und geben es zurück.
Was funktioniert hier nicht?
Was funktioniert hier nicht?
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Algorithmen, Entscheidungsmethoden, Vergleich ihrer Leistung
Sergey Dzyublik, 2017.12.10 16:10
Reg Konow, Ihr Wissen über "Datenstrukturen" ist gleich 0.
1. Ihr Code funktioniert nicht.
Falsches Muster "_index_magic". Eine mögliche Lösung ist "|index_magic".
2. Ihr Algorithmus hat die Geschwindigkeit O(n) mit bis zu drei Durchläufen des String-WertesAll_magics
3. Ihre Leistungsmessung ist völlig falsch:
- es gibt kein Durchschnittsergebnis in der Reihe
- keine Serien mit Suche nach den letzten Indexwerten
Anstatt Unsinn zu schreiben - studieren Sie bitte etwas zu diesem Thema, z.B.https://habrahabr.ru/post/310794/.
Und dann lernen Sie, wie Sie CArrayList aus <Generic\ArrayList.mqh> anwenden können.
Viel Glück!