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

 
Реter Konow:

2. Die Integration in EA ist der entscheidende Punkt. Wenn die Lösung sehr verwirrend ist (ich bin sicher, dass Sie nicht einmal erklären können, wie die Lösung von Sergey Dzyublik funktioniert), welchen praktischen Nutzen hat sie dann für den Händler? Man kann keinen normalen EA aus superkonvolutierten Lösungen bauen.

Der Lösungsvorschlag wurde sofort geäußert

Aber jemand hat nicht einmal gefragt, was es war. Die Umsetzung hätte viel "klarer" sein können. Aber es würde nichts an der Grundlage der Idee ändern.

 
Реter Konow:

1. In der Praxis sind dies leere Worte, mit denen Sie die Fakten bekämpfen. Ich habe die Zeitmessung für die Suche nach dem Magier gezeigt. Ich habe gezeigt, wie einfach es ist, die Lösung in den EA zu integrieren. Alles, was Sie hier zeigen, ist eine Verleumdung meiner Lösung. Sonst nichts.

2. die Integration in EA ist der entscheidende Punkt. Wenn die Lösung super kompliziert ist (ich bin sicher, Sie können nicht einmal erklären, wie die Lösung von Sergey Dzyublik funktioniert), welchen praktischen Wert hat sie dann für den Händler? Man kann keinen normalen EA aus superkonvolutierten Lösungen bauen.

Ich urteile nicht über die Lösung von Sergey Dzyublik. Er hat es noch nicht erklärt. Wenn er es erklärt, wird klar werden, wer "diesen Schlamassel begonnen hat".


Hier wollte ich Ihnen antworten, aber der Moderator war Ihnen zuvorgekommen und hat dasselbe gesagt. Ich zeige Ihnen also noch einmal, was er gesagt hat:

Artyom Trishkin:

Nein, ich biete Ihnen nicht den Lösungsstil eines anderen an. Schreiben Sie in Ihrem eigenen Stil - niemand will Ihnen etwas aufzwingen.

Aber ich schlage vor, dass Sie mit Ihrer charakteristischen Beharrlichkeit Probleme zunächst auf die bestmögliche Weise lösen. Was machen Sie da?

1. Man wählt zunächst die suboptimalste aller möglichen Lösungen aus und beginnt, mit ihr herumzuspielen. Bei dieser Aufgabe musste man schon in der Phase, in der man sich eine Lösung ausdachte, seine Version nicht nur verwerfen, sondern sogar nicht in diese Richtung denken. Und dafür sind die Textverarbeitungsfunktionen nicht gedacht.

2. Zur Integration in den Expert Advisor und zu den Vorteilen der vorgeschlagenen Lösung - lassen Sie sich von demjenigen antworten, der sie vorgeschlagen hat.


P.S. Du musst ein sehr schlechter Schüler sein :)

 
Реter Konow:

Ich erkenne meine Fehler, sobald ich von ihnen überzeugt bin. Bislang konnte mir niemand beweisen, dass meine Entscheidung falsch war. Wir werden warten.

Sie sind ein schlechter Lerner!

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Algorithmen, Lösungsmethoden, Leistungsvergleich

Sergey Dzyublik, 2017.12.10 20:58


1. Ihr Code funktioniert nicht.
Falsches Muster "_index_magic". Mögliche Lösung "|index_magic".


Nach der Addition haben wir _1_3_2_4_3_5_4_6_
Bitte finden Sie den 3. in der Liste.
Sie erhalten ein Ergebnis von 2.

string All_magics = "_1_3_2_4_3_5_4_6_";

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()
{
  Print(All_magics);
  Print(Get_magic(3));   
}


Ergebnis

_1_3_2_4_3_5_4_6_
2
 
Artyom Trishkin:

Bisher sehe ich hier nur eine Verhöhnung eines Mannes, der den Mut hatte, seine Lösung hier zu veröffentlichen.

Offensichtlich ist es... um es milde auszudrücken, es ist überhaupt nicht gut. Aber er hat es veröffentlicht. Die anderen haben bisher nur den Mut, zu lachen und mit dem Finger zu zeigen.

Artem, es hat mich 40 Minuten meiner Zeit und ein paar Millionen Nervenzellen gekostet, dem Mann zu erklären, dass die Teilzeichenkette..._25_... vier Zeichen, nicht drei. Was glauben Sie, wie viele Menschenjahre wir alle brauchen werden, um ihm etwas konzeptionell Wertvolleres und Stärkeres zu erklären? Ich denke viele, viele Mannjahre. Deshalb versucht auch niemand, etwas zu erklären und wiederzukäuen. Es gibt einfach ein gewisses Mindestniveau, unter das der Erklärende nicht sinken kann, und Peters Niveau liegt unter dieser Schwelle.

 
fxsaber:



Ergebnis

Ich habe bereits gesagt, dass die Nummer des Magiers vom Benutzer bestimmt wird. Um Kollisionen innerhalb einer Zeichenkette zu vermeiden, müssen Sie den Magiern einen bestimmten Zahlenbereich zuweisen. Zum Beispiel von 100.000 bis 999.000. Dann wird es kein Problem geben.

Allerdings können wir die Lösung natürlich noch verfeinern. Dies ist nur ein "Prototyp". Eine Demo-Version.

 
Vasiliy Sokolov:

Artem, es hat mich 40 Minuten meiner Zeit und ein paar Millionen Nervenzellen gekostet, dem Mann zu erklären, dass die Teilzeichenkette von ..._25_... vier Zeichen, nicht drei. Was glauben Sie, wie viele Menschenjahre wir alle brauchen werden, um ihm etwas konzeptionell Wertvolleres und Stärkeres zu erklären? Ich denke viele, viele Mannjahre. Deshalb versucht auch niemand, etwas zu erklären und wiederzukäuen. Es gibt einfach ein bestimmtes Mindestniveau, unter das der Erklärende nicht sinken kann, und Peters Niveau liegt unter dieser Schwelle.

Wassili, ich habe alles sofort verstanden, als du es gesagt hast. Danke, dass Sie diesen Fehler gefunden haben.

 
fxsaber:

Du kannst mich mal.

Jetzt geht's los...))

Und warum die Reaktion?

 

Zur Lösung der Aufgabe wurde der Standardcontainer aus der Bibliothek - CArrayList - gewählt.
Fast der gesamte Code ist ein Wrapper, um eine "bequeme" Schnittstelle für Tests zu schaffen. Für jeden Geschmack und jede Farbe, wie sie sagen....

Um Ihre Lösung zu testen, benötigen Sie:
1. Erstellen Sie eine Klasse, die von ITestRandomAccessCollection erbt und die erforderlichen Methoden implementiert. (ähnlich wie beiTestRandomAccessCollectionCArrayList)
2. Daten eines bestimmten Typs werden für Tests verwendet. In dem Beispiel wurde ein int.
Wir müssen sicherstellen, dass es einen Generator für den ausgewählten Datentyp gibt und dass dieser zuCreateGenerator hinzugefügt wird (ähnlich wie beiIntGenerator).
3. Führen Sie einen Test mit denselben Daten für mehrere Lösungen durch und vergleichen Sie die Ergebnisse (wenn Sie möchten, können Sie auch einen Zyklus durchführen, um den Durchschnitt zu ermitteln):

{
     printf ("TestRandomAccessCollectionAfterAdding: Started.", result);
     TestRandomAccessCollectionCArrayList<int> testCollection();
     result = TestRandomAccessCollectionAfterAdding(testCollection, 10000, 1);
     printf ("TestRandomAccessCollectionAfterAdding: Fineshed. Total result: %I64i\n", result);
}


Dies ist derzeit die Funktion zum Testen, neue Funktionen können analog hinzugefügt werden:

template<typename T>
ulong TestRandomAccessCollectionAfterAdding(ITestRandomAccessCollection<T> &testCollection, const int iterationCount = 1000, int srandValue = 0)

Parameter:

testCollection - Testcontainer, derITestRandomAccessCollection<T> implementiert;
iterationCount - Anzahl der Iterationszyklen im Test;
srandValue - Einfluss auf die Stichprobe des Generators, wenn 0 eine Zufallsstichprobe ist.

 
Реter Konow:
1. Wie viele Mikrosekunden dauert es im Durchschnitt, den Zauberer in Ihrer Lösung zu finden?

2. Wie einfach ist es Ihrer Meinung nach, Ihre Lösung in den EA zu integrieren?


1. Es macht keinen Sinn. Die Algorithmen in ihrer Gesamtheit werden anhand ihrer relativen Ergebnisse verglichen.
2. Die Lösung ist bereits integriert - es handelt sich um eine Standardbibliothek<Generic\ArrayList.mqh>.

 
Реter Konow:

Wie ich bereits sagte, wird die Magiernummer vom Benutzer bestimmt. Um Kollisionen innerhalb einer Zeichenkette zu vermeiden, müssen Sie den Magiern einen bestimmten Zahlenbereich zuweisen. Zum Beispiel von 100.000 bis 999.000. Dann wird es keine Probleme geben.

Allerdings können Sie die Lösung natürlich verfeinern. Dies ist nur ein "Prototyp". Es handelt sich um eine Demoversion.


Meine Liebe, was du willst, ist eine kindische Aufgabe. Das ist die Art von Problemen, die Schulkinder lösen.

Es gibt Dutzende von ihnen im Internet. Und vergessen Sie die String-Daten.