Bibliotheken: MultiTester - Seite 25

 
fxsaber:

Nutzen Sie den KB-Fehler: Die Zip-Datei enthält die erste Version.

Leider sind darin Dateien vom 25.12.20 enthalten.
Ich habe noch die Dateien vom November 2019, aber da ist schon...
Haben Sie welche?
 
Edgar Akhmadeev:
Haben Sie eine?

Ich habe nur eine für Dezember 2019 gefunden. MTTester scheint alte Funktionen nicht gelöscht zu haben.

 
fxsaber:

Nur für Dezember 2019 gefunden. Ich glaube nicht, dass ich alte Funktionen in MTTester gelöscht habe.

Vielleicht, zumindest in Form einer Idee - wie man Parameter der Expert Advisor Optimierung aus dem Code heraus einstellen kann?
Wahrscheinlich bin ich durch die lange Zeit verwirrt und es gibt keine solche Möglichkeit.
 
Edgar Akhmadeev:
Vielleicht, zumindest in Form einer Idee - wie man Parameter der Expert Advisor Optimierung aus dem Code heraus einstellen kann?
Wahrscheinlich bin ich verwirrt durch die lange Zeit her und es gibt keine solche Möglichkeit.

Nur solche Möglichkeiten.



Aber es spricht nichts dagegen, über die gemeinsame Zwischenablage parallel zu arbeiten. Machen Sie einfach eine zusätzliche Prüfung.

 
fxsaber:

Es spricht aber nichts dagegen, über eine gemeinsame Zwischenablage parallel zu arbeiten. Machen Sie einfach eine zusätzliche Prüfung.

Das ist das erste, was ich versucht habe. Ich habe mehrere Tage damit verbracht, das Dateisemaphor in COMMON zu debuggen, aber ich habe keine stabile Arbeit hinbekommen. Vielleicht laufen die eingebauten Dateifunktionen ein wenig anders ab, als ich es mir vorstelle.
Vielleicht sollte ich es mit Dateien über WinAPI, Shared Memory oder sogar Semaphor-API versuchen (es gibt sicher eine, vielleicht kann mir das jemand sagen; MutEx kam mir sofort in den Sinn, ich werde darüber nachdenken).
Wenn Sie meine Lock- und Release-Funktionen analysieren wollen (sie sind kurz), kann ich sie übermorgen posten. Nein?
 
Edgar Akhmadeev:
Das ist das erste, was ich versucht habe. Ich habe ein paar Tage damit verbracht, den Dateisemaphor in COMMON zu debuggen, aber ich habe es nicht geschafft, ihn konsistent zum Laufen zu bringen. Vielleicht haben die eingebauten Dateifunktionen ein etwas anderes Timing als ich denke.
Vielleicht sollte ich es mit Dateien über WinAPI, Shared Memory oder sogar Semaphor-API versuchen (sicher gibt es eine, vielleicht kann jemand sie vorschlagen; MutEx kam mir sofort in den Sinn, ich werde darüber nachdenken).
Wenn Sie meine Lock- und Release-Funktionen analysieren wollen (sie sind kurz), kann ich sie übermorgen posten. Nein?

Nun, dann haben Sie die Dinge durcheinander gebracht! Geben Sie einen String-Eingang ein, in den Sie den Pfad zum Terminal durch den Puffer schieben. Nachdem du die Einstellungen hineingeschoben hast, lies sie ein und überprüfe, ob sie korrekt sind. Insbesondere durch diese String-Eingabe. Drücken Sie den Start-Button, sobald die Prüfung erfolgreich abgeschlossen ist.


Etwas Ähnliches wird auch gemacht.

  static bool SetSettings2( string Str, const int Attempts = 5 )
  {
    bool Res = false;

    for (int j = 0; (j < Attempts) && !Res; j++)
    {
      string Str1;
      string Str2;
      string Str3;

      Res = MTTESTER::SetSettings(Str) && MTTESTER::GetSettings(Str1) &&
            MTTESTER::SetSettings(Str) && MTTESTER::GetSettings(Str2) &&
            MTTESTER::SetSettings(Str) && MTTESTER::GetSettings(Str3) &&
            (Str1 == Str2) && (Str1 == Str3);
    }

    return(Res);
  }
 
fxsaber:

Sie haben eine Menge Sinn gemacht! Geben Sie einen String-Eingang ein, in den Sie den Pfad zum Terminal durch den Puffer schieben. Nachdem du die Einstellungen hineingeschoben hast, lies sie ein und prüfe, ob sie korrekt sind. Insbesondere durch diese String-Eingabe. Drücken Sie den Start-Button, sobald die Prüfung erfolgreich abgeschlossen ist.

Es ist nicht so, dass ich clever bin, ich bin nur zu direkt. Multi-Zugriff bedeutet Semaphoren.
Nun, ich habe um eine Idee gebeten und sie bekommen. Ich danke Ihnen!
 

GA beschleunigen.

Der Expert Advisor im Frame-Modus empfängt OnTester von Agents. Wenn bei 100-1000 Durchläufen nichts Gutes gefunden wird, drücken wir Stop.

Die Optimierung kann um eine Größenordnung beschleunigt werden.
 
fxsaber:
Sie können die Optimierung um eine ganze Größenordnung beschleunigen.

Ich habe 470 Optimierungen (jede für ein anderes Symbol) in 4,5 Stunden mit echten Ticks (ein Monat) durchgeführt.

 

1. Ich würde in Sleep2 von GetTickCount() auf GetTickCount64() umstellen . Andernfalls droht ein Überlauf mit nicht ganz korrekter Logik. Und er passiert in der 64er-Variante deutlich seltener. Bei anderen Arbeiten sollte man vielleicht auch darauf umsteigen.


2. das zweite ArrayResize wirft hier Fragen auf

      ::ArrayResize(Buffer, (int)Size / sizeof(T));

      kernel32::ReadFile(handle, Buffer, (uint)Size, Read, 0);
      Res = ::ArrayResize(Buffer, Read);

Wahrscheinlich sollte es so sein

Res = ::ArrayResize(Buffer, Read / sizeof(T));


3. und schließlich noch einige andere Typen

static void Sleep2( const uint Pause )


  static bool IsReady( const int Pause = 100 )
  {
    if (MTTESTER::IsReady2())
      MTTESTER::Sleep2(Pause);