Fehler, Irrtümer, Fragen - Seite 2603

 
Wenn Sie die Namen der Symbole beim Broker ändern (Suffixe hinzufügen), gehen alle Chart-Einstellungen mit den alten Symbolen (die nicht mehr existieren und auf die neuen Namen übertragen werden müssen) verloren! Unwiderruflich, zusammen mit den Expertenindikatoren. Blödsinn.
 

In 2204 wird das Profil mit EAs ohne diese geladen.

Auch das träge Laden von EAs wurde nicht behoben. Stimmt, jetzt hängt das Terminal nicht mehr, nur der EA ist für eine lange Zeit weg.

 
Ich brauche hier Hilfe. Ich brauche die Tastenkombination STRG+C und STRG+V im inaktiven Fenster des Testers auf der Registerkarte Optionen. Ich habe nur Folgendes gefunden

Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien

Können Sie mir sagen, wie ich das Skript programmatisch starten kann, wenn Terminals die TF ändern oder öffnen?

Egor, 2008.11.16 09:28

Das Skript kann ausgeführt werden, indem zusätzlich die "Tastatur-Eingabe-Zustandstabelle" im gewünschten Thread aktualisiert wird.

Ich muss es in MQL ausprobieren, vielleicht können Sie mir helfen:

    if ( h != NULL)
    {
        HWND child = :: FindWindowEx( h,NULL,"Edit", NULL);

        UINT lparam_Ctrl1 = :: MapVirtualKey( VK_CONTROL, 0) << 16 | 1 ;
        UINT lparam_A1 = :: MapVirtualKey((int)'A', 0) << 16 | 1 ;

        UINT lparam_A2 = 1 << 31 | 1 << 30 | :: MapVirtualKey((int)'A', 0) << 16 | 1 ;
        UINT lparam_Ctrl2 = 1 << 31 | 1 << 30 | :: MapVirtualKey( VK_CONTROL, 0) << 16 | 1 ;

        DWORD pid;
        DWORD tid = GetWindowThreadProcessId( child, & pid);
        HANDLE hProc = OpenProcess( PROCESS_QUERY_INFORMATION | SYNCHRONIZE, FALSE, pid);
        //Ctrl + A

        AttachThreadInput( GetCurrentThreadId(), tid, TRUE);

        LRESULT pl1_Ctrl = :: PostMessage( child, WM_KEYDOWN, VK_CONTROL, lparam_Ctrl1 );
        WaitForInputIdle( hProc, INFINITE);

        BYTE state[256];
        GetKeyboardState( state);
        state[ VK_CONTROL] = 0x80;
        SetKeyboardState( state);

        LRESULT pl1_A = :: PostMessage( child, WM_KEYDOWN, (int)'A', lparam_A1 );
        WaitForInputIdle( hProc, INFINITE);

        LRESULT pl2_A = :: PostMessage( child, WM_KEYUP, (int)'A', lparam_A2);
        WaitForInputIdle( hProc, INFINITE);

        LRESULT pl2_Ctrl = :: PostMessage( child, WM_KEYUP, VK_CONTROL, lparam_Ctrl2);        
        WaitForInputIdle( hProc, INFINITE);
/*
        GetKeyboardState(state);
        state[VK_CONTROL] = 0x0;
        SetKeyboardState(state);
*/

        AttachThreadInput( GetCurrentThreadId(), tid, FALSE);

    }

Ich habe es nicht umsetzen können. Ich brauche es wirklich für einen Multi-Tester.

 
fxsaber:
Bitte um Hilfe. Ich muss die Tastenkombinationen CTRL+C und CTRL+V im inaktiven Fenster des Testers auf der Registerkarte Einstellungen senden. Ich habe nur Folgendes gefunden

Es war nicht möglich, sie umzusetzen. Wird dringend für einen Multitester benötigt.

Sie können den Befehl "Kopieren und Einfügen" nicht an ein inaktives Fenster senden. Öffnen Sie zunächst das Fenster des Testers und aktivieren Sie die Registerkarte Einstellungen
 

Mit den Tipps stimmt etwas nicht. EA-Datei:

Alt+G sendet hier:


Editor 2200

 
Slava:
Es ist nicht möglich, einen Befehl zum Kopieren und Einfügen an ein inaktives Fenster zu senden. Zunächst müssen Sie das Fenster des Testers öffnen und die Registerkarte "Einstellungen" aktivieren

Alle Aktionen zur Automatisierung des Testers können über PostMessage durchgeführt werden, was eine große Erleichterung darstellt. Da das Prüfgerät minimiert werden kann, etc.

Das Abrufen und Importieren von Einstellungen ist jedoch eine Ausnahme von diesem Komfort. Ist es möglich, einen Mechanismus zu organisieren, um die Arbeit mit den Einstellungen von Ihrer Seite aus zu automatisieren?

 

Können Sie mir sagen, wie ich den Tester oder Optimierer vom Code abhalten kann?

Zum Beispiel sollte der Tester eine externe Datei laden. Wenn die Datei nicht gefunden wird, zeigen sie eine Meldung an, dass sie die Datei vergessen haben, und halten den Tester oder Optimierer davon ab, untätig zu laufen.

 
Igor Makanu: MT4 Build 1220 war höchstwahrscheinlich das letzte MT4-Update, der zuvor schrieb, dass ME für die Terminals 4/5 die gleichen sind, was bedeutet, dass es keine neuen 32-Bit-ME mehr geben wird

Und wenn neue Fehler gefunden werden, bleiben sie dann auch so?

 
. ... Rick D. ... .:

Und wenn neue Fehler gefunden werden, werden sie dann auch so bleiben?

Die Behebung von Fehlern und die Entwicklung sind zwei verschiedene Dinge.
 
. ... Rick D. ... .:

Irgendwelche Tipps, wie man Tester oder Optimierer vom Code abhalten kann?

Zum Beispiel muss der Expert Advisor eine externe Datei herunterladen. Wenn die Datei nicht gefunden wird, wird der Prüfer oder Optimierer darüber informiert, dass er die Datei vergessen hat, und der Leerlauf wird beendet.

Forum zum Thema Handel, automatische Handelssysteme und Strategietests

Merkmale der Sprache mql5, Feinheiten und Tricks

fxsaber, 2019.11.06 16:57

Bei der genetischen Optimierung reichen manchmal schon die ersten paar tausend Durchläufe aus, um das Ergebnis mehr oder weniger zu verstehen.

Wenn Sie automatisch viele Optimierungen durchführen, möchten Sie, dass alles schneller funktioniert. Deshalb brauchen wir einen Mechanismus zur Unterbrechung der Optimierung.

#include <fxsaber\MultiTester\MTTester.mqh>  // https://www.mql5.com/ru/code/26132

// Выключает Оптимизацию ( и одиночный проход)
bool OptimizationStop( void )
{
  return(!MTTESTER::IsReady() && MTTESTER::ClickStart(false));
}


Anwendung.

// Демонстрация прерывания Оптимизации.

sinput int inAmountPasses = 20; // Через сколько проходов закончить
input int Range = 0; // 0..10000

double OnTester()
{
  int Data[];
  
  return(FrameAdd(NULL, 0, 0, Data)); // Сгенерировали TesterPass
}

void OnTesterPass()
{
  static int Amount = 0;
  
  ulong Pass;
  string Name;
  long ID;
  double Value;
  int Data[];

  while (FrameNext(Pass, Name, ID, Value, Data))
    if (++Amount > inAmountPasses)
    {
      OptimizationStop(); // Как достигли нужного количества проходов, выключили оптимизатор.
      
      break;
    }
}